Giải thích các ký hiệu trong Class Diagram

Chia sẻ

Trong UML (Unified Modeling Language), class diagram (biểu đồ lớp) đóng vai trò thiết yếu trong việc mô hình hóa cấu trúc của các hệ thống phần mềm.

Trong UML (Unified Modeling Language)class diagram (biểu đồ lớp) đóng vai trò thiết yếu trong việc mô hình hóa cấu trúc của các hệ thống phần mềm. Do đó, việc nắm bắt và sử dụng chính xác các ký hiệu trong biểu đồ lớp là bước quan trọng để phản ánh đúng kiến trúc và các mối quan hệ giữa các lớp trong hệ thống.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu các ký hiệu được sử dụng trong class diagram và cách sử dụng chúng thông qua các ví dụ minh họa cụ thể.

Class Diagram Relationships

1. Class

Class đại diện cho một nhóm các đối tượng có thuộc tính và hành vi tương tự nhau, dùng để mô hình hóa và thiết kế các thành phần của hệ thống trong lập trình hướng đối tượng, giúp các lập trình viên hiểu rõ cấu trúc và mối quan hệ giữa các đối tượng.

Một class bao gồm ba thành phần chính:

  1. Tên của class: Đây là tên đại diện cho nhóm đối tượng.
  2. Thuộc tính (Attribute): Các biến mô tả trạng thái của các đối tượng trong class.
  3. Phương thức (Method): Các hàm hoặc thủ tục thể hiện hành vi của các đối tượng trong class.

Class được ký hiệu bằng một hình chữ nhật được chia thành ba phần, với tên class ở phần đầu, sau đó là các thuộc tính, và cuối cùng là các phương thức.

ky-hieu-class

Đối với abstract class, tên class sẽ được viết in nghiêng.

Đối với interface, tên interface sẽ được thêm <<interface>>.

Ký hiệu của interface

Ví dụ: trong hệ thống cho mượn sách, người dùng là Member sẽ có thuộc tính và phương thức như sau:

Thuộc tính:

  • id: số nguyên, định danh duy nhất cho mỗi người dùng.
  • name: chuỗi ký tự, tên của người dùng.
  • email: chuỗi ký tự, địa chỉ email của người dùng.
  • password: chuỗi ký tự, mật khẩu để người dùng đăng nhập.

Phương thức:

  • borrowBook: cho phép thành viên mượn sách.
  • returnBook: cho phép thành viên trả sách.

class Member

2. Association

  • Ký hiệu: Đường thẳng nối giữa hai class, có thể có mũi tên ở một hoặc cả hai đầu tùy thuộc vào chiều hướng của quan hệ.
  • Mô tả: Association biểu diễn mối quan hệ giữa hai class trong đó các đối tượng của một class liên kết với các đối tượng của class khác.
  • Ví dụ: Trong hệ thống mượn sách, hoá đơn (bill) và thanh toán (payment) có mối quan hệ association.

association

Nếu tôi thêm chiều mũi tên, có hướng mũi tên trỏ tới Payment thì trong Bill sẽ có một thuộc tính thể hiện hình thức thanh toán.

3. Inheritance (Quan hệ kế thừa)

  • Ký hiệu: Đường thẳng nối giữa hai class và kết thúc bằng một tam giác trắng.
  • Mô tả: biểu diễn mối quan hệ kế thừa giữa hai class với nhau hoặc giữa class và abstract class.
  • Ví dụ: Trong hệ thống cho mượn sách, sách có 3 loại là sách nói, sách điện tử và sách giấy. Như vậy, các class AudioBookEbook và Paperback kế thừa các thuộc tính và phương thức của class Book.

inheritance

4. Implementation (Quan hệ triển khai)

  • Ký hiệu: Đường nét đứt nối giữa hai class và kết thúc bằng một tam giác trắng.
  • Mô tả: Biểu diễn mối quan hệ giữa một class và một interface, trong đó class cam kết thực hiện (implement) các phương thức được định nghĩa trong interface.
  • Ví dụ: Trong hệ thống cho mượn sách, có một interface Notifier định nghĩa các phương thức thông báo của hệ thống như gửi thông báo khi sách mới về notifyRestockTimings() hay khi sách được hoàn trả notifyReturnTimings(). Class EmailNotifier và SMSNotifier triển khai các phương thức đã được khai báo trong Notifier.

implementation

>>Xem thêm: CORS là gì ?

5. Dependency (Quan hệ phụ thuộc)

  • Ký hiệu: Đường nét đứt nối giữa hai class và thường kết thúc bằng một mũi tên thể hiện hướng phụ thuộc.
  • Mô tả: Một class phụ thuộc vào class khác, thường chỉ trong một phạm vi nhất định hoặc cho một chức năng cụ thể.
  • Ví dụ: Trong hệ thống cho mượn sách, số yêu cầu mượn sách (Request) sẽ phụ thuộc vào yêu cầu của thành viên (Member) nên đầu mũi tên hướng về phía Member. Còn công việc của thủ thư (Librarian) lại phụ thuộc vào số lượng Request được tạo nên đầu mũi tên hướng về phía Request.

dependency

6. Aggregation

  • Ký hiệu: Đường thẳng nối giữa hai class với một hình kim cương trắng ở đầu phía bên của class cần tổng hợp dữ liệu từ class còn lại.
  • Mô tả: một class cần thông tin từ class khác, tuy nhiên, hai class này có thể tồn tại độc lập với nhau.
  • Ví dụ: Khi member tạo yêu cầu mượn sách, hệ thống tạo ra Request chứa các RequestItemRequestItem cần thông tin từ Book. Cộng thêm, RequestItem và Book đều có thể tồn tại độc lập nên mối quan hệ sẽ là aggregation với chiều mũi tên hướng về phía RequestItem.

aggregation

7. Composition

  • Ký hiệu: Đường thẳng nối giữa hai class với một hình kim cương đen ở đầu phía bên của class cần tổng hợp dữ liệu từ class còn lại.
  • Mô tả: một class cần thông tin từ class khác, tuy nhiên, class chứa thông tin không thể tồn tại mà không có class kia.
  • Ví dụRequestItem có thể tồn tại độc lập với Book nhưng lại không tồn tại độc lập với Request.

composition

8. Tổng kết

  • Class diagram là một UML quan trọng trong phát triển phần mềm. Nó được biểu diễn bằng mối quan hệ các class với nhau hoặc giữa class và interface hoặc class và abstract class.
  • Có 6 loại mối quan hệ trong class diagram: association, inheritance, implementation, dependency, aggregation và composition.
  • Associaton biểu diễn mối quan hệ giữa hai class trong đó các đối tượng của một class liên kết với các đối tượng của class khác
  • Inheritance biểu diễn mối quan hệ kế thừa giữa hai class với nhau hoặc giữa class và abstract class.
  • Implementation biểu diễn mối quan hệ giữa một class và một interface, trong đó class cam kết thực hiện (implement) các phương thức được định nghĩa trong interface.
  • Dependency mô tả một class phụ thuộc vào class khác, thường chỉ trong một phạm vi nhất định hoặc cho một chức năng cụ thể.
  • Aggregation mô tả một class cần thông tin từ class khác, tuy nhiên, hai class này có thể tồn tại độc lập với nhau.
  • Composition gần giống aggregation, tuy nhiên, class chứa thông tin không thể tồn tại mà không có class cần thông tin.

Nguồn: sưu tầm