2012-02-02 39 views
8

Lớp tĩnh hoặc gọi tới hàm tĩnh được trình bày trong sơ đồ tuần tự như thế nào? Theo sự hiểu biết của tôi, vòng đời thuộc về một thể hiện/đối tượng của một lớp. This article nói metaclass khuôn mẫu có thể được sử dụng.Làm thế nào để trình bày lớp tĩnh hoặc gọi hàm trong biểu đồ trình tự?

+0

[UML 2 Chuỗi Sơ đồ:] (http://www.agilemodeling.com/artifacts/sequenceDiagram.htm) 'Chú ý cách các nhãn đối tượng được gạch dưới, các lớp và các tác nhân không phải là' Có vẻ như lớp tĩnh hoặc gọi hàm tĩnh được biểu diễn với cùng một khuôn mẫu được cung cấp 1- phần _name_ của mẫu _name: ClassName_ phải rỗng - Nó không nên được gạch chân – bjan

+0

Không chắc chắn, nhưng, tôi nghĩ rằng một số công cụ, ngoài ra, sử dụng các cạnh tròn cho hình chữ nhật, trong trường hợp đối tượng. – umlcat

Trả lời

5

Vì vậy, cuối cùng, đó là việc sử dụng khuôn mẫu để đề cập đến một lớp/chức năng tĩnh. Gạch dưới là không được áp dụng nhiều hơn trong UML 2.4.1 Aug 2011, trang trang 86, dưới tiêu đề NotationPresentation Option

+0

(+1) Tốt để nghe về nó.Khi mô hình hóa trên bảng trắng/bảng đen hoặc sổ ghi chép, gạch dưới không rõ ràng. Cùng đi với ký hiệu chữ thảo ... – umlcat

4

Tôi nghĩ rằng bình luận của bạn bao gồm hầu hết của nó:

UML 2 Chuỗi Sơ đồ: Chú ý cách nhãn đối tượng được nhấn mạnh, các lớp học và các diễn viên không Có vẻ như lớp tĩnh hoặc gọi đến một hàm tĩnh được đại diện với cùng một khuôn mẫu được cung cấp 1- phần tên của tên mẫu: ClassName phải rỗng - Nó không được gạch dưới.

UML không thể bao quát điều này hoàn toàn vì tĩnh không phải là định nghĩa UML, mỗi ngôn ngữ có chênh lệch nhỏ. Tuy nhiên thông số UML cho "features" [pg. 69] (attr/hoạt động):

isStatic: Boolean - Chỉ định xem tính năng này có phân biệt cá thể được phân loại bởi trình phân loại (sai) hay chính phân loại (đúng). Giá trị mặc định là sai.

Lưu ý rằng họ nói chính trình phân loại. Vì vậy, câu hỏi là tôi có thể đặt một classifier một sơ đồ trình tự, không phải là một thể hiện? Cũng lưu ý rằng không phải là trình phân loại có thể là tĩnh. Trang 27 của cùng một đặc tả UML cho thấy không có isStatic trong lớp meta "classifier" (class). Vì vậy, UML không cung cấp một tính năng mô hình chính thức cho các lớp tĩnh. Bạn có thể sử dụng khuôn mẫu hoặc từ khóa hoặc hồ sơ UML của riêng bạn và mở rộng Lớp học. Nhưng câu trả lời ngắn gọn là làm những gì bạn đã đăng.

+0

[UML 2.4.1 Aug 2011] (http://www.omg.org/spec/UML/2.4.1/Superstructure/PDF), dưới tiêu đề 'Ký hiệu' và' Tùy chọn trình bày ', có vẻ mâu thuẫn với nhận xét của tôi hoặc bài viết được giới thiệu đó không còn giá trị sau khi phát hành UML 2 – bjan

8

"Trong trường hợp nghi ngờ, sử dụng ý kiến, hoặc định kiến ​​..."

Chuỗi Diagram:

....................................................... 
....+-------------+...........+-------------------+.... 
....| <<class>> |...........|  <<class>>  |.... 
....|  Cat  |...........| FastFoodTerminal |.... 
....+------+------+...........+---------+---------+.... 
...........|............................|.............. 
...........|..........<<static>>........|.............. 
...........|...........TurnOn().........|.............. 
...........+--------------------------->+---+.......... 
...........|............................|...|.......... 
...........+<---------------------------+<--+.......... 
...........|............................|.............. 
...........|.......Answer...=...........|.............. 
...........|..DoYouHaveCheeseBurger()...|.............. 
...........+--------------------------->+---+.......... 
...........|............................|...|.......... 
...........+<---------------------------+<--+.......... 
...........|............................|.............. 
....................................................... 

Class Diagram:

........................................................... 
....+-------------------------------------------------+.... 
....|     <<class>>     |.... 
....|    FastFoodTerminal     |.... 
....+-------------------------------------------------+.... 
....| [+] void: FastFoodTerminal(); <<constructor>> |.... 
....| [#] int: ObtainMoneyDifference();    |.... 
....| [+] void: ReceiveMoney();      |.... 
....| [+] void: ReturnChange();      |.... 
....| [+] FastFoodTerminal: TurnOn(); <<static>>  |.... 
....+-------------------------------------------------+.... 
........................................................... 

Trong ví dụ này, "TurnOn() "là một phương thức tĩnh trả về, một cá thể (đối tượng) của lớp" FastFoodTerminal ".

+0

Bạn đã sử dụng cái gì để tạo biểu đồ ascii đó? –

+3

@Petur Tôi sử dụng http://asciiflow.com/ cho sơ đồ lớp, sau đó chỉnh sửa chúng bằng trình chỉnh sửa văn bản. – umlcat

Các vấn đề liên quan