2011-11-06 26 views
8

Khả năng hiển thị lớp là một phần quan trọng trong thiết kế đối tượng. Tôi đã không thấy bất kỳ sơ đồ ví dụ nào cho thấy các lớp không công khai trong một số sách UML, cũng như tôi đã không thấy cách hiển thị khả năng hiển thị lớp trong Kiến trúc sư doanh nghiệp, trong số các công cụ khác. Kiến trúc sư doanh nghiệp và các công cụ khác cho phép bạn thiết lập khả năng hiển thị lớp trong metamodel, nhưng tôi chưa thấy một cách để hiển thị điều này trong sơ đồ.Chế độ hiển thị lớp có thể được hiển thị trên sơ đồ lớp UML không?

+0

Tôi không nghĩ rằng tiêu chuẩn UML cung cấp ký pháp cụ thể cho khả năng hiển thị, vì đó là một tính năng phụ thuộc ngôn ngữ. – Heisenbug

+0

Cảm ơn @Heisenbug. Tôi đã có thể thấy khả năng hiển thị lớp trên sơ đồ gói của Kiến trúc sư doanh nghiệp. Đó có thể là cách duy nhất để xem nó trong công cụ cụ thể này. Bước tiếp theo của tôi là xem lại phần liên quan của thông số UML. –

+2

Tôi chắc chắn rằng một sơ đồ gói thực sự là cách duy nhất để xem khả năng hiển thị phần tử (còn gọi là Phạm vi) trong Kiến trúc sư doanh nghiệp. Tôi sẽ không đăng nó như một câu trả lời vì bạn đã làm công việc thám tử, nhưng hãy xem xét tự mình làm như vậy (và đánh dấu câu hỏi được trả lời) cho những người tìm kiếm trong tương lai. – Uffe

Trả lời

0

Trong Eclipse bạn có khả năng hiển thị trong biểu tượng. Tôi có nghĩa là bạn có một biểu tượng lớp màu xanh lá cây và nếu riêng thì một p được đặt ở trên cùng. Biểu tượng này cũng hiển thị trong sơ đồ lớp nếu bạn chọn tùy chọn. Hy vọng sự trợ giúp này.

0

UML hỗ trợ khả năng hiển thị theo cách trung lập ngôn ngữ lập trình, cả trong metamodel và đại diện.

Có một liệt kê có tên là VisbilityKind được sử dụng ở nhiều nơi khác nhau (xem phần UML 2.3 superstructure spec 7.3.5.5 p142).

Trên sơ đồ lớp có nhiều cách khác nhau để minh họa khả năng hiển thị. Phổ biến nhất là sử dụng '-' để đại diện cho các đối tượng địa lý riêng tư và '+' để đại diện cho công chúng. Ví dụ:

---------------------------- 
| Class     | 
|--------------------------| 
| +publicAttribute: Type | 
| -privateAttribute: Type | 
|--------------------------| 
| +publicMethod()   | 
| -privateMethod()   | 
---------------------------- 

Xem hình 7.28/7.29 trên p52 của the spec để biết thêm ví dụ.

hth.

+1

Câu trả lời của bạn liên quan đến khả năng hiển thị thành viên lớp học, không phải cho khả năng hiển thị của chính lớp đó. –

+0

@ BjörnPollex Khả năng hiển thị có liên quan đến một số phạm vi, không có phạm vi hiển thị không có ý nghĩa. Ví dụ lớp có thể là thành viên của một cá thể lớp khác và trong trường hợp này, khả năng hiển thị của nó có thể được nhìn thấy như được hiển thị trong câu trả lời này. – SomeWittyUsername

0

Tôi chỉ nhìn nó trong cơ sở hạ tầng UML 2.4.1. Trên hình 10.3 p. 95 bạn thấy Class được định nghĩa là một Type là một NamedElement là một Element. Với gói hiển thị, một NamedElement có khả năng hiển thị như được định nghĩa trong 9.21.1 trên trang. 88, nếu nó thuộc về một không gian tên. Vì vậy, lớp học có khả năng hiển thị nếu bạn có khả năng hiển thị. Bạn có thể sử dụng các ký hiệu thông thường với + - # và ~ (tr. 89).

VisualParadigm có thể thực hiện việc này.

1

Theo UML đặc tả v2.5 beta 2 không chỉ là NamedElement mà còn là PackageableElement có Tầm nhìn thuộc tính của loại VisibilityKind

từ P48:

PackageableElement [Tóm tắt Lớp]

.. [snip] ..

Thuộc tính

  • khả năng hiển thị: Khả năng hiển thịKết nối [0..1] = công khai Một PackageableElement phải có khả năng hiển thị được chỉ định nếu thuộc tính không có Không gian tên. Chế độ hiển thị mặc định là công khai.

chế

  • namespace_needs_visibility Một PackageableElement thuộc sở hữu của một Namespace phải có một tầm nhìn. inv: tầm nhìn = null nghĩa namespace = null

tôi đã không tìm thấy bất kỳ hướng dẫn ký hiệu cho tầm nhìn này tuy nhiên

0

Nếu bạn xác định lớp học của bạn với một khuôn mẫu (nói < < lớp > >) sau đó bạn có thể gán một kịch bản hình dạng cho khuôn mẫu. Nếu bạn chỉđịnh trang trí, điều này sẽ sử dụng mặc định vẽ cho một lớp, và thêm trang trí của bạn, có thể có điều kiện dựa trên bất động sản quy mô của lớp:

decoration X 
{ 
    if(hasproperty("scope","public")) 
    print("P"); 
} 

này in một P trong từ trên góc trái của lớp công khai. Tuy nhiên, bạn có thể có một biểu tượng bằng nhau thay vào đó.

Thật không may, tôi không thể tìm cách chỉ định tập lệnh hình dạng cho lớp không được định dạng theo mặc định. Có ai biết làm như thế nào không?