2010-04-22 33 views
9

Tôi và một số nhà phát triển khác hiện đang dọn sạch cơ sở mã cũ của chúng tôi, chủ yếu là tách lớp hình ảnh và dữ liệu. Để giúp các nhà phát triển không tham gia vào việc tái cấu trúc này hiểu mô hình, tôi muốn giới thiệu một sơ đồ lớp (không chính thức) với các nhận xét về phạm vi và cách sử dụng mong muốn cho mỗi lớp. Vì tôi lười, tôi muốn sử dụng UMLGraph cho điều đó.Làm thế nào để thể hiện một mixin/vai trò/đặc điểm với UML đúng cách?

Tuy nhiên, có một vấn đề nhỏ: chúng tôi có cơ sở mã perl và việc tái cấu trúc sử dụng vai trò Moose rộng rãi. Bây giờ tôi không biết UML đủ tốt để tìm ra một sự abstaction thích hợp cho các vai trò - phỏng đoán đầu tiên của tôi sẽ là các giao diện, nhưng chúng cũng chứa thực hiện; nhiều thừa kế không hoàn toàn cắt nó.

Làm cách nào để (hoặc bạn sẽ) đại diện cho vai trò như thế nào trong sơ đồ lớp?

Trả lời

3

tôi sẽ đại diện cho một vai trò như là một lớp UML với «role» khuôn mẫu. Lớp học sáng tác vai trò sau đó sẽ có một liên kết với vai trò với khuôn mẫu «does».

Simple Composition http://img820.imageshack.us/img820/5665/simplecomposition.png

Nếu tôi cần thiết để thích ứng hơn nữa vai trò, với bí danh hoặc loại trừ, tôi muốn tạo ra đó là một lớp liên kết với các thành viên chú thích đúng cách và với «adaptation» khuôn mẫu. Tên của lớp kết hợp sẽ không quan trọng, bởi vì nó sẽ không phải là một kiểu thực trong thiết kế; vì vậy tôi để nó không được đặt tên.

Composition with Conflict Resolution http://img828.imageshack.us/img828/244/conflictcomposition.png

(Xin lưu ý rằng tôi đã cho thấy sự thích nghi "class" kết nối với các thành phần và vai trò của nó thích nghi. Những gì tôi thực sự muốn làm là kết nối nó vào mối liên hệ giữa MyCompositionMyRole1. Nó chỉ rằng công cụ tôi đã sử dụng không hỗ trợ các lớp liên kết).

+0

Jordão, tôi thích giao diện của các biểu đồ đó. Bạn đã sử dụng công cụ nào để tạo chúng? –

+0

@WayneConrad: Tôi đã sử dụng [yUML] (http://yuml.me/), hãy khám phá! –

+0

Giống như graphviz cho UML. Rất đẹp! –

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