Trong lĩnh vực kỹ thuật phần mềm và thiết kế hướng đối tượng (OOD), Sơ đồ lớp UML đóng vai trò là xương sống của mô hình hóa hệ thống. Đây là một sơ đồ cấu trúc tĩnh mô tả kiến trúc của một hệ thống bằng cách hiển thị các lớp, thuộc tính, thao tác (phương thức) của chúng và các mối quan hệ phức tạp giữa các đối tượng. Dù bạn đang xây dựng mô hình miền hay chi tiết hóa các yêu cầu phần mềm, việc hiểu rõ sơ đồ lớp là điều cần thiết để chuyển đổi các bản thiết kế khái niệmthành mã chức năng.

Hiểu cấu tạo của một lớp
Ở trung tâm của sơ đồ là Lớp, đóng vai trò là bản vẽ mẫu cho các đối tượng. Trong khi đối tượng là các thể hiện có thể sử dụng chứa dữ liệu và hành vi, thì lớp xác định các quy tắc cho những đối tượng đó. Trong ký hiệu UML, một lớp được biểu diễn bằng một hình chữ nhật chia thành ba phần riêng biệt:
- Tên lớp: Nằm ở phần đầu tiên (phần trên). Đây là bắt buộc. Các lớp trừu tượng thường được viết nghiêng.
- Thuộc tính: Nằm ở phần thứ hai. Chúng đại diện cho trạng thái hoặc các đặc điểm cấu trúc của lớp (biến thành viên).
- Thao tác (Phương thức): Nằm ở phần thứ ba. Chúng xác định các đặc điểm hành vi hoặc dịch vụ mà lớp cung cấp.
Tính khả kiến và kiểm soát truy cập
Để định nghĩa tính đóng gói, UML sử dụng các ký hiệu cụ thể đặt trước tên thuộc tính và thao tác để biểu thị tính khả kiến. Điều này xác định các lớp khác nào có thể truy cập các thành viên này.
| Ký hiệu | Loại khả kiến | Mô tả |
|---|---|---|
| + | Công khai | Có thể truy cập bởi bất kỳ lớp nào khác. |
| – | Riêng tư | Chỉ có thể truy cập bên trong chính lớp đó. |
| # | Bảo vệ | Có thể truy cập bởi lớp và các lớp con của nó (lớp được tạo ra). |
| ~ | Gói | Có thể truy cập bởi bất kỳ lớp nào trong cùng một gói. |
Giải mã các mối quan hệ giữa các lớp
Sức mạnh của sơ đồ lớp UML nằm ở cách nó mô tảtương tác giữa các lớp. Cũng như việc triển khai mã nguồn dựa trên logic, UML dựa vào các kết nối cụ thể để truyền đạt ý định. Dưới đây là các loại mối quan hệ chính:
1. Kế thừa (Tổng quát hóa)
Kế thừa biểu diễn một“LÀ-MỘT”mối quan hệ. Đó là một mối quan hệ phân loại, trong đó một bộ phân loại cụ thể (con) kế thừa các đặc điểm từ một bộ phân loại tổng quát (cha). Ví dụ, mộtHình trònlà mộtHình dạng.
- Ký hiệu: Một đường liền với đầu mũi tên rỗng hướng từ lớp con sang lớp cha.
- Cách sử dụng:Được sử dụng để đơn giản hóa các mô hình phân tích bằng cách đưa ra sự giống nhau trong lớp siêu.
2. Liên kết
Đây là một liên kết cấu trúc giữa các lớp cùng cấp, thường được mô tả bằng một động từ (ví dụ: “Giáo viên dạy học sinh”). Nó cho thấy hai lớp có liên quan với nhau nhưng tạo ra sự liên kết lỏng lẻo.
- Ký hiệu: Một đường liền nối hai lớp.
- Đa dạng:Chỉ ra có bao nhiêu đối tượng tham gia (ví dụ:
1,0..1,1..*).
3. Tích hợp
Tích hợp là một dạng đặc biệt của mối quan hệ thể hiện mối quan hệ “THÀNH PHẦN CỦA” mối quan hệ. Tuy nhiên, nó ngụ ý quyền sở hữu yếu. Thành phần có thể tồn tại độc lập với toàn thể. Ví dụ, một Xe hơi có Lốp xe, nhưng nếu xe hơi bị phá hủy, lốp xe vẫn có thể tồn tại.
- Ký hiệu: Một đường liền với một hình thoi rỗng (hollow) ở đầu nối với lớp tích hợp (lớp cha).
4. Kết hợp
Kết hợp là một dạng nghiêm ngặt hơn của tích hợp. Nó thể hiện quyền sở hữu mạnh mẽ nơi thành phần không thể tồn tại mà không có toàn thể. Nếu đối tượng cha bị phá hủy, các đối tượng con cũng bị phá hủy. Một ví dụ là một Ngôi nhà và các Phòng.
- Ký hiệu: Một đường liền với một hình thoi đầy (solid) ở đầu nối với lớp kết hợp (lớp cha).
5. Phụ thuộc
Điều này biểu diễn mối quan hệ “sử dụng”. Mối quan hệ tồn tại khi một lớp tương tác với một lớp khác cụ thể là tham số trong một phương thức hoặc biến cục bộ, chứ không phải là một trường. Những thay đổi trong định nghĩa của lớp cung cấp có thể ảnh hưởng đến lớp khách hàng.
- Ký hiệu: Một đường nét đứt với mũi tên mở hướng về phía mối phụ thuộc.

Các hướng dẫn cho sơ đồ lớp hiệu quả
Việc tạo ra một sơ đồ dễ đọc và chính xác đòi hỏi phải tuân thủ các hướng dẫn cụ thể.
- Sử dụng quy ước đặt tên chuẩn: Tên lớp nên là danh từ (ví dụ, Khách hàng, Đơn hàng), thông thường viết hoa chữ cái đầu. Tên liên kết nên là động từ (ví dụ, đặt, chứa).
- Xác định góc nhìn: Trước khi vẽ, hãy xác định xem bạn đang mô hình hóa một góc nhìn khái niệmgóc nhìn (các khái niệm miền), một góc nhìn đặc tảgóc nhìn (giao diện), hoặc một góc nhìn triển khaigóc nhìn (liên quan đến mã nguồn).
- Quản lý độ phức tạp: Đừng cố gắng mô hình hóa toàn bộ hệ thống trong một sơ đồ duy nhất. Chia hệ thống thành nhiều sơ đồ, tập trung vào các mô-đun cụ thể hoặc các lĩnh vực kinh doanh nhất định.
- Ghi chú rõ ràng bội số: Luôn làm rõ mối quan hệ là một-đối-một, một-đối-nhiều hay nhiều-đối-nhiều để đảm bảo cơ sở dữ liệu hoặc logic mã nguồn phản ánh đúng yêu cầu kinh doanh.
Ví dụ thực tế: Hệ thống xử lý đơn hàng
Xét một tình huống thương mại điện tử tiêu chuẩn bao gồm Khách hàng, Đơn hàng và Sản phẩm. Dưới đây là cách các mối quan hệ được chuyển đổi thành cấu trúc cấu trúc sơ đồ lớp:
- Khách hàng và Đơn hàng (liên kết): Một Khách hàng đặt một Đơn hàng. Tính đa dạng là
1Khách hàng đến0..*Đơn hàng. - Đơn hàng và Dòng sản phẩm (Thành phần): Một Đơn hàng được tạo thành từ các Dòng sản phẩm. Nếu Đơn hàng bị xóa, các Dòng sản phẩm sẽ mất ý nghĩa và bị hủy bỏ. Đây là một hình thoi đầy màu sắc hướng về Đơn hàng.
- Dòng sản phẩm và Sản phẩm (Liên kết/Tích hợp): Một Dòng sản phẩm tham chiếu đến một Sản phẩm. Tuy nhiên, Sản phẩm tồn tại độc lập với Dòng sản phẩm (nó vẫn nằm trong kho). Đây là một liên kết tiêu chuẩn hoặc tích hợp yếu.
- Thanh toán (Thực hiện): Một giao diện có tên là IPayment có thể được thực hiện bởi các lớp CreditCardPayment và PayPalPayment.
Mẹo và Thủ thuật để Tối ưu hóa
Áp dụng những mẹo này để nâng cấp sơ đồ của bạn từ những bản vẽ đơn giản thành các công cụ kỹ thuật chuyên nghiệp:
- Kiểm tra “Đọc to”: Đọc các mối quan hệ của bạn thành tiếng. “Một Xe hơi bao gồm Bánh xe.” Nếu nghe thấy khó chịu, hãy kiểm tra xem bạn có đang sử dụng hướng mũi tên hay loại mối quan hệ đúng hay không.
- Hướng của tham số: Trong phần thao tác, bạn có thể xác định hướng tham số bằng cách sử dụng
in,ra, hoặcvào-ratrước tên tham số để làm rõ luồng dữ liệu. - In nghiêng cho lớp trừu tượng: Nếu một lớp không thể khởi tạo trực tiếp (nó là trừu tượng), hãy đảm bảo tên của nó được in nghiêng. Đây là một tín hiệu tinh tế nhưng rất quan trọng đối với các nhà phát triển.
- Tránh các đường chéo: Trong khi các công cụ hiện đại như Visual Paradigm xử lý định tuyến tốt, hãy cố gắng sắp xếp các lớp thủ công để giảm thiểu các đường chéo, điều này cải thiện đáng kể độ dễ đọc.
Bảng kiểm tra kiểm toán sơ đồ lớp
Trước khi hoàn tất sơ đồ lớp UML của bạn, hãy thực hiện kiểm tra danh sách hành động này:
- [ ] Đầy đủ: Tất cả các lớp cần thiết cho mô-đun cụ thể có mặt không?
- [ ] Quyền truy cập: Các thuộc tính và thao tác có được đánh dấu bằng ký hiệu quyền truy cập đúng (+, -, #) không?
- [ ] Độ chính xác mối quan hệ: Bạn đã phân biệt đúng giữa Liên kết (hình kim cương rỗng) và Tích hợp (hình kim cương đầy)?
- [ ] Đa dạng: Liệu tính cardinality có được xác định ở cả hai đầu của các mối quan hệ (ví dụ: 1..*)?
- [ ] Khả năng điều hướng: Các mũi tên có rõ ràng chỉ ra lớp nào có thể truy cập lớp kia không?
- [ ] Đặt tên: Tên lớp có là danh từ và duy nhất không? Các động từ mối quan hệ có rõ ràng không?
- [ ] Tổng quát hóa: Cấu trúc kế thừa có hợp lý không (mối quan hệ Là-Một)?