Translate

Chủ Nhật, 4 tháng 5, 2014

How to draw relationship in Class Diagram - UML 2.0?

Về cơ bản đa số developer hay nghĩ hoặc ghi vào CV là mình nắm chắc UML hoặc cái đó quá dễ, cần thì tra cứu 1 lúc là xong nhưng thực tế mình thấy member trong các project vẽ sai rất nhiều, thậm chí là với các member 6,7 năm kinh nghiệm. Lý do rất đơn giản: deadline yêu cầu ngay ko có thời gian, lâu ko dùng nên quên, bản thân ko chịu tra cứu update hoặc tra cứu nhưng ko hiểu bản chất.

Mức độ ảnh hưởng: Khách hàng (dân IT) đọc chả hiểu cái class diagram này nói gì => đánh giá chất lượng thấp và trả ít tiền hoặc bye luôn.

Để tiện tra cứu nhanh mình note lại một số ký hiệu về relationship trong class diagram, dựa theo ký pháp UML 2.0 của IBM. Idea là chỉ note những cái cơ bản hay dùng và ko đi quá sâu hay phân loại vào quan hệ phức tạp để tránh rối rắm khó hiểu.
Các quan hệ 1,2,3,4 có mức độ sử dụng cao nhất vẽ cái gì cũng gặp còn quan hệ 5,6 tần suất sử dụng ít hơn.



1. Inheritance relationship
Quan hệ kế thừa.
Đường nét liền với đầu tam giác trắng ở class cha.
Dùng trong TH thể hiện kế thừa class cha con.

2. Realizations relationship
Quan hệ thực hiện (1 interface class)
Đường nét đứt với đầu tam giác trắng hướng về interface class.
Dùng trong TH thể hiện interface class. Class source sẽ implement các function được defined trong 1 interface class khác.

3. Aggregation relationship
Quan hệ tập hợp
Đường nét liền với đầu kim cương ở class cha.
Thể hiện quan hệ "là 1 phần" giữa 2 class.

Kim cương trắng (basic aggregation): xóa object cha thì object con vẫn tồn tại.
Kim cương đen (composition aggregation): xóa cha thì con cũng bị xóa.

Dùng trong TH khai báo class con như biến thành viên (member variable) của class cha (có thể được khởi tạo khi class cha khởi tạo hoặc khởi tao ở bên ngoài và sau đó gán vào biến thành viên (biến thành viên là dạng con trỏ))

4. Dependency relationship
Quan hệ phụ thuộc giữa client và supplier
Đường nét đứt với đầu mũi tên hướng về supplier class.
Thể hiện client class sử dụng hay phụ thuộc vào supplier class.

Dùng trong TH thể hiện 1 sự kết nối ở mức trừu tượng cao hơn so với quan hệ association, aggregation và client class sẽ thực hiện (perform) 1 trong các chức năng sau:
- Tạm thời sử dụng supplier class có scope global.
- Tạm thời sử dụng supplier class như là 1 parameter trong các method của client class.
- Tạm thời sử dụng supplier class như là local variable trong các method của client class.
- Gửi 1 message từ client class đến supplier class.

5. Association relationship
Quan hệ kết hợp
Đường nét liền ko có đầu, nối 2 class với nhau.
Ở giữa đường nét liền xuất hiện 1 đường nét đứt ko đầu nối với 1 class trung gian (association class).

Dùng trong TH khi 2 class chính thực hiện sự kết hợp với nhau thì phải sử dụng 1 class trung gian.

6. Nest relationship
Quan hệ lồng nhau.
Đường nét liền với hình tròn có chữ thập bên trong nằm ở phía class cha (class chứa).


Dùng trong TH thể hiện inner class.

Ref:
https://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/

1 nhận xét: