Sơ đồ lớp (Class Diagram) - Giới thiệu chi tiết

1. Sơ đồ lớp là gì?

Sơ đồ lớp (Class Diagram) là một loại sơ đồ cấu trúc trong UML (Unified Modeling Language) dùng để mô tả các lớp (class), thuộc tính (attributes), phương thức (methods) và mối quan hệ (relationships) giữa các lớp trong một hệ thống phần mềm.

Nó giúp các lập trình viên, kiến trúc sư phần mềm và nhóm phát triển hiểu rõ hơn về cấu trúc và tổ chức của hệ thống.


2. Các thành phần chính trong sơ đồ lớp

Một sơ đồ lớp bao gồm các yếu tố sau:

a. Lớp (Class)
  • Biểu diễn dưới dạng một hình chữ nhật, chia thành ba phần:
    • Tên lớp: Được viết ở phần trên cùng.
    • Thuộc tính (Attributes): Các biến thành viên của lớp.
    • Phương thức (Methods): Các hàm thành viên của lớp.

  • Dấu “+”: Biểu thị mức độ truy cập public
  • Dấu “-”: Biểu thị mức độ truy cập private
  • Dấu “#”: Biểu thị mức độ truy cập protected
b. Quan hệ giữa các lớp

Trong sơ đồ lớp, các mối quan hệ giữa các lớp được thể hiện bằng các đường nối với ký hiệu khác nhau:

Loại quan hệ Mô tả
Association (Liên kết) Một lớp liên kết với một hoặc nhiều lớp khác (Ví dụ: Sinh viên và Môn học).
Aggregation (Tập hợp) Một lớp chứa các lớp con, nhưng các lớp con có thể tồn tại độc lập (Ví dụ: Một phòng ban có nhiều nhân viên, nhưng nhân viên có thể tồn tại mà không cần phòng ban).
Composition (Thành phần) Một lớp chứa các lớp con và lớp con không thể tồn tại độc lập (Ví dụ: Một chiếc xe có động cơ, động cơ không thể tồn tại nếu không có xe).
Generalization (Kế thừa - Inheritance) Một lớp con kế thừa thuộc tính và phương thức từ một lớp cha (Ví dụ: Lớp "Dog" kế thừa từ lớp "Animal").
Dependency (Phụ thuộc) Một lớp thay đổi có thể ảnh hưởng đến lớp khác nhưng không có quan hệ chặt chẽ (Ví dụ: Một lớp "Order" phụ thuộc vào "PaymentService").
c. Giao diện (Interface)
  • Một giao diện (Interface) được thể hiện giống như một lớp nhưng có thêm từ khóa «interface».
  • Các phương thức trong giao diện không có phần triển khai, chỉ định nghĩa.
  • Một lớp có thể thực thi nhiều giao diện.

? Ví dụ về một giao diện trong sơ đồ lớp:

+---------------------+
|   «interface»       |
|   Animal            |
+---------------------+
| + makeSound(): void |
+---------------------+

Một lớp "Dog" có thể thực hiện giao diện "Animal" bằng cách triển khai phương thức makeSound().


3. Lợi ích của sơ đồ lớp

  • Giúp phân tích và thiết kế hệ thống một cách rõ ràng trước khi lập trình.
  • Hỗ trợ lập trình hướng đối tượng (OOP) với các nguyên tắc như kế thừa, đóng gói, đa hình.
  • Dễ dàng mở rộng và bảo trì hệ thống sau này.
  • Giúp nhóm phát triển hiểu nhanh kiến trúc của hệ thống.

4. Ví dụ về sơ đồ lớp

Giả sử bạn muốn xây dựng một hệ thống quản lý học sinh với các lớp sau:

  1. Lớp Person (Lớp cha)
  2. Lớp Student (Kế thừa từ Person)
  3. Lớp Teacher (Kế thừa từ Person)
  4. Lớp Course (Môn học, có danh sách sinh viên)

? Mô hình sơ đồ lớp minh họa:

           +----------------+
           |    Person      |
           +----------------+
           | - name: string |
           | - age: int     |
           +----------------+
           | + getInfo()    |
           +----------------+
                  ▲
                  │
     -------------------------
     |                        |
+----------------+   +----------------+
|    Student     |   |    Teacher     |
+----------------+   +----------------+
| - studentID    |   | - teacherID    |
| - grade        |   | - subject      |
+----------------+   +----------------+
| + enroll()     |   | + teach()      |
+----------------+   +----------------+

           +-------------------+
           |     Course        |
           +-------------------+
           | - courseID        |
           | - courseName      |
           +-------------------+
           | + addStudent()    |
           | + removeStudent() |
           +-------------------+
  • Person là lớp cha của StudentTeacher.
  • Course có quan hệ liên kết với Student, tức là mỗi khóa học có nhiều sinh viên.

5. Tổng kết

  • Sơ đồ lớp (Class Diagram) là công cụ mạnh mẽ giúp thiết kế phần mềm theo mô hình hướng đối tượng.
  • Nó thể hiện các lớp, thuộc tính, phương thức và các mối quan hệ giữa các lớp.
  • Việc sử dụng sơ đồ lớp giúp hệ thống dễ dàng bảo trì, mở rộng và hiểu rõ hơn về kiến trúc của ứng dụng.