Mẫu múc nối yếu (Low Coupling)

Một phần của tài liệu Giáo trình Phân tích, thiết kế hướng đối tượng với UML: Phần 2 - Trường ĐH Công nghiệp Quảng Ninh (Trang 34 - 35)

Độ múc nối là một độ đo về sự kết nối của một lớp để biết về, hoặc phụ thuộc vào cỏc lớp

khỏc như thế nào. Một lớp cú độ múc nối yếu thỡ khụng phụ thuộc nhiều vào nhiều lớp khỏc. Ngược lại, một lớp cú độ múc nối mạnh thỡ phụ thuộc vào nhiều lớp khỏc.

Do đú, khi gỏn trỏch nhiệm cho một lớp, hóy cố gắng sao cho độ múc nối giữa cỏc lớp ở mức yếu.

Vớ dụ: hóy xột mối quan hệ giữa cỏc lớp ThanhToan, HBH và PhienBanHang

trong hệ thống bỏn hàng. Giả sử cần phải tạo ra đối tượng :ThanhToan tương ứng với :PhienBanHang và :HBH nhận được yờu cầu thanh toỏn makePayment(). Bởi vỡ HBH phải “ ghi nhận” :ThanhToan nờn theo mẫu tạo lập mới ở trờn thỡ lớp HBH là đại biểu để tạo lập. Điều này dẫn đến thiết kế biểu đồ cộng tỏc như hỡnh 6-15.

Hỡnh 6-15 HBH tạo ra :ThanhToan

Hỡnh 6-16 ThanhToan tạo ra :ThanhToan

Với cỏch gỏn trỏch nhiệm như hỡnh 6-15 thỡ HBH phải biết về lớp ThanhToan. Nhưng thực tế điều này khụng đũi hỏi, vỡ chỉ cần PhienBanHang cần biết về

ThanhToan là đủ. Từ đú chỳng ta cú thiết kế tốt hơn, thể hiện được mức độ múc nối

: HBH makePayment() makePayment()  2: addPayment(p) : PhienBanHang 1: create() p: ThanhToan :PhienBanHang : HBH makePayment()  : ThanhToan 1.1: create() 1: makePayment()  1: create(N) makeLineItem(N)  : PhienBanHang sLi: DongBanHang PhienBanHang ngayBan gioBan total() makeLineItem()

lỏng hơn như hỡnh 6-16. Sau đú lại ỏp dụng cỏc qui tắc khỏc để gỏn trỏch nhiệm cho cỏc đối tượng.

Trong cỏc ngụn ngữ lập trỡnh hướng đối tượng như C++, Java, ClassA với ClassB được múc nối với nhau khi:

ClassA cú những thuộc tớnh mà đối tượng của ClassB cần tham khảo

ClassA cú những hàm mà đối tượng của ClassB cần sử dụng, hay tham chiếu

ClassA là lớp con của ClassB. 4. Cố kết cao (Hight Cohension)

Cố kết là độ đo về mức độ liờn kết trong lớp, tập trung vào cỏc trỏch nhiệm được

gỏn cho mỗi lớp. Một lớp cú tớnh cố kết cao nếu cỏc nhiệm vụ cú liờn quan chức năng với nhau. Lớp cố kết là lớp cú tối thiểu số cỏc hàm đơn giản và chỳng phải cú liờn hệ

chức năng với nhau.

Vấn đề quan trọng trong thiết kế hướng đối tượng là phải gỏn được trỏch nhiệm cho cỏc lớp sao cho một mặt phự hợp với thực tế của bài toỏn, mặt khỏc đảm bảo cú mối liờn hệ chặt chẽ về chức năng nhưng khụng để cú những lớp phải làm việc quỏ tải.

Vớ dụ: khi xột mối quan hệ giữa cỏc lớp ThanhToan, HBH và PhienBanHang trong hệ thống bỏn hàng ta cú thể đưa ra một thiết kế biểu đồ cộng tỏc như hỡnh 5-15. Vỡ HBH là lớp chớnh, nờn việc để cho lớp HBH đảm nhận vai trũ tạo lập create()

:ThanhToan và thực hiện thờm nhiều cụng việc khỏc cú thể dẫn đến quỏ tải. Mặt khỏc, nhiệm vụ create() khụng thực sự liờn hệ với cỏc nhiệm vụ cũn lại, nờn cú thể gỏn trỏch nhiệm này cho lớp PhienBanHang như hỡnh 6-16 thỡ hợp lý hơn.

Những lớp khụng cố kết sẽ khú hiểu, khú sử dụng lại và rất khú duy trỡ hoạt động của hệ thống cho cú hiệu quả.

Một phần của tài liệu Giáo trình Phân tích, thiết kế hướng đối tượng với UML: Phần 2 - Trường ĐH Công nghiệp Quảng Ninh (Trang 34 - 35)

Tải bản đầy đủ (PDF)

(110 trang)