UML Class Diagram

Nếu như muốn biểu diễn mối quan hệ giữa các class như : Aggregation, Composition, Inheritance thì mình nghĩ UML Class Diagram thể hiện tốt nhất trong trường hợp này.
Nếu bạn nào chưa từng nghe qua hay sử dụng UML để đặc tả hệ thống thì có thể tham khảo link sau:

UML [https://en.wikipedia.org/wiki/Unified_Modeling_Language]

Chắc hẳn các bạn đã nhìn thấy những biểu tượng sau trong tài liệu thiết kế.

alt text

Tuy nhiên mình nhận thấy là có rất nhiều bạn còn hiểu sai hoặc cảm thấy khó nhớ khi nào dùng biểu tượng quan hệ như thế nào. OK! Bài viết này hy vọng sẽ giúp bạn thấy việc vẽ một Class Diagram sẽ dễ dàng như thê nào. Cách dễ hiểu nhất đó là ánh xạ các mối quan hệ biểu diễn ở trên vào chính những đoạn code mà các bạn hay thường gặp trong lập trình hướng đối tượng (có thể là Java, C#,C++,..)

Chúng ta hãy bắt đầu xem xét từng ví dụ sau: (Ở đây mình ví dụ có sử dụng 2 Class A và B)

Dependency:

Khi một class có sử dụng một instance của class B như một tham số đầu vào của method trong class A.
Ex:

public class A {

    public void doSomething(B b) {}

Nhưng giả sử class A có một member với kiểu dữ liệu là class B thì lúc đó ta có mối quan hệ

Aggregation:

Ex:

public class A {

    private B _b;

    public void setB(B b) { _b = b; }

Với ví dụ trên ta có thể thấy mối quan hệ giữa A và B chỉ là Aggreation có nghĩa là nếu như A bị hủy thì chưa chắc B đã được hủy. Do vậy nếu như instance của B được khởi tạo trong A như ví dụ dưới đây ta có mối quan hệ là

Composition:

Ex:

public class A {

    private B _b = new B();

Hoặc

public class A {

    private B _b;

    public A() {
        _b = new B();
    } // default constructor

Còn mối quan hệ như Inheritance hay Realization thì sao? Đúng như tên gọi của nó, nếu class B kế thừa từ class A ta có mối quan hệ

Inheritance:

Ex:

public class A {

    ...

} // class A

public class B extends A {

    ....

} // class B

Mặt khác nếu class B implement từ A thì ta có mối quan hệ (Ví dụ ta hay thấy đó là implement một interface)

Realization:

Ex:

public interface A {

    ...

} // interface A

public class B implements A {

    ...

} // class B

Các code ví dụ trên rất dễ hiểu và gần gũi. Hy vọng các bạn sẽ dễ dàng hơn khi vẽ một class diagram.

Nguồn: http://kipalog.com

Bình luận về bài viết này