Trang chủ Kiến Thức Công Nghệ Giải thích các ký hiệu trong class diagram
Công Nghệ

Giải thích các ký hiệu trong class diagram

Chia sẻ
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. 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ể.

Các ký hiệu trong class diagram

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.

Ký hiệu của class

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

Ký hiệu của abstract class

Đố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.
Ví dụ về 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.
Ví dụ về 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.

Ví dụ về association có hướng mũi tê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 AudioBook, EbookPaperback kế thừa các thuộc tính và phương thức của class Book.
Ví dụ về 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 EmailNotifierSMSNotifier triển khai các phương thức đã được khai báo trong Notifier.
Ví dụ về implementation

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.
Ví dụ về 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 RequestItem. RequestItem cần thông tin từ Book. Cộng thêm, RequestItemBook đề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.
Ví dụ về 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.
Ví dụ về 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.
  • 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.

Nếu bạn quan tâm các chủ đề lập trình khác, có thể tìm đọc tại 200Lab:

  • Giới thiệu về Transformer – Công nghệ đằng sau ChatGPT và Bard
  • Giải thích các ký hiện trong Use Case Diagram
Bài viết cùng chuyên mục
Tối ưu ứng dụng với cấu trúc dữ liệu cơ bản và bitwise
Công Nghệ

Tối ưu ứng dụng với cấu trúc dữ liệu cơ bản và bitwise

Trong bài viết này, 200Lab sẽ chia sẻ những trường hợp dễ...

Công Nghệ

So sánh Flutter vs React Native: Framework nào đáng học năm 2021

Điểm chung của Flutter, React Native đều là Cross-platform Mobile, build native...

HTTP/2 là gì? So sánh HTTP/2 và HTTP/1
Công Nghệ

HTTP/2 là gì? So sánh HTTP/2 và HTTP/1

Từ khi Internet ra đời, sự phát triển về các giao thức...

Upload File từ Frontend đến Backend mà rất nhiều bạn vẫn đang làm sai!!
Công Nghệ

Upload File từ Frontend đến Backend mà rất nhiều bạn vẫn đang làm sai!!

1. Client encode file (base64) rồi gởi về backend 200Lab đã từng...

Công Nghệ

React Native – Hướng dẫn làm việc với Polyline và Animated-Polyline trên Map

Vẽ đường đi trên bản đồ là một nghiệp vụ vô cùng...

Công Nghệ

Hybrid App và Native App: Những khác biệt to lớn

Bất cứ khi nào một công ty quyết định làm ứng dụng...

Web/System Architecture 101 – Kiến trúc web/hệ thống cơ bản cho người mới
Công Nghệ

Web/System Architecture 101 – Kiến trúc web/hệ thống cơ bản cho người mới

Đây là một kiến trúc cơ bản mà bất kì một người...

Công Nghệ

Tư duy kiến trúc thông qua các trò chơi mà rất nhiều bạn không biết

Tư duy kiến trúc là gì? Tư duy kiến trúc có thể...