Chuong5 Classdiagram

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 34

Chương 5

Sơ đồ lớp thiết kế (Design class diagram)


• Sơ đồ lớp thiết kế biểu diễn chi tiết của các lớp phần mềm và
giao diện trong một ứng dụng. Những thông tin tiêu biểu trong
sơ đồ lớp thiết kế bao gồm:
• Các lớp (classes)
• Mối quan hệ và thuộc tính (associations & attributes
• Giao diện và thao tác trên giao diện (interfaces with their operations)
• Các phương thức (methods)
• Thuộc tính (attribute)
• Các phụ thuộc (dependencies)

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 2
Domain Model - Design Model Classes
• Domain model: các lớp khái niệm đại diện cho các khái niệm
trừu tượng trong thế giới thực mà người phát triển phần mềm
đang quan tâm.
• Mô hình lớp thiết kế (Design model class): lớp thiết kế đại
diện cho các lớp phần mềm, nó được định nghĩa như là một
thành phần của phần mềm ứng dụng.

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 3
Domain Model - Design Model Classes
• Ví dụ

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 4
Xây dựng sơ đồ lớp thiết kế
• Các bước xây dựng sơ đồ lớp thiết kế
• Xác định các lớp phần mềm
• Xác định các phương thức
• Bổ sung các loại thông tin
• Tinh chỉnh các mối quan hệ

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 5
Xác định các lớp phần mềm
• Xác định những lớp mà tham gia vào các giải pháp phần mềm.
Các lớp này có thể được tìm thấy bằng cách duyệt tất cả các
sơ đồ tương tác và danh sách các lớp trong domain model.
• Tuy nhiên có những lớp trong domain model không cần xuất
hiện trong sơ đồ lớp thiết kế

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 6
Xác định các lớp phần mềm
• Ví dụ: Một hệ thống máy tính tiền được sử dụng để ghi lại
doanh thu và xử lý các khoản thanh toán, được sử dụng trong
một cửa hàng bán lẻ, hệ thống bao gồm các thành phần phần
cứng như máy tính và máy quét mã vạch
• Hệ thống có thể giao tiếp với các ứng dụng khác như máy tính
thuế, hệ thống kiểm soát hàng tồn kho, kho lưu trữ sản phẩm
theo Loại sản phẩm.
• Hệ thống tự động xuất hóa đơn thanh toán khi tất cả các sản
phẩm mà khách hàng mua được nhập vào hệ thống.

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 7
Xác định các lớp phần mềm
• Ví dụ: các lớp khái niệm trong domain model của hệ thống
máy tính tiền

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 8
Xác định các lớp phần mềm
• Ví dụ: các lớp phần mềm trong hệ thống máy tính tiền

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 9
Xác đinh phương thức
• Các phương thức của mỗi lớp có thể được xác định bằng
cách phân tích các biểu đồ tương tác.
• Nói chung, tập hợp tất cả các Messages được gửi đến một lớp
X trên tất cả các sơ đồ tương tác thường là các phương thức
của lớp X phải xác định.

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 10
Xác đinh phương thức
• Ví dụ: sơ đồ tương tác của hoạt động tính tiền trong hệ thống
máy tính tiền

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 11
Xác đinh phương thức
• Một số vấn đề với tên phương thức
• Thông điệp Create trong sơ đồ tương tác, chỉ ra một đối tượng mới
được khởi tạo, khi chuyển thiết kế sang ngôn ngữ lập trình hướng đối
tượng, nó phải được thể hiện trong ngữ cảnh của ngôn ngữ hiện thực.
• Ví dụ: C ++, Java không có phương thức create() mà là new()

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 12
Xác đinh phương thức
• Một số vấn đề với tên phương thức
• Một thông điệp dạng (multiobject) truyền tới các đối tượng chứa bên
trong lớp đó
• Ví dụ: Find() là một thông điệp đến một tập đối tượng

• Vì vậy, Find() không phải là một phần của lớp Productspecification;


nó là một phần của interface của multiobject. Do đó, không thêm Find()
vào lớp Productspecification

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 13
Bổ sung role vào mối quan hệ
• Bổ sung điều hướng vào mối quan hệ:
• Điều hướng là một thuộc tính của Role, chỉ ra rằng mối quan hệ được
thực hiện từ lớp nguồn đến lớp mục tiêu.
• Ví dụ:

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 14
Bổ sung role vào mối quan hệ
• Ví dụ:
Sơ đồ lớp của hệ
thống máy tính
tiền được bổ sung
Role vào các mối
quan hệ

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 15
Sử dụng Package tổ chức domain model
• Để dễ dàng trong phần thiết kế hướng đối tượng, domain
model được tổ chức thành các package.
• Tổ chức domain model thành các package là một thủ tục phức
tạp, dựa trên hai nguyên tắc cơ bản: sự gắn kết và độc lập.

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 16
Nhóm các lớp vào Package
• Nguyên tắc 1: nhóm các lớp vào package phải thỏa các tiêu
chí gắn kết (coherence) sau:
• Mục tiêu: các lớp phải trả về các dịch vụ đáp ứng yêu cầu người dùng
• Ổn định: sự cô lập các lớp trong một package phải thực sự ổn định
trong quá trình phát triển dự án, và sau đó.
• Thời gian sống của các đối tượng: tiêu chí này giúp phân biệt được
các lớp mà đối tượng có thời gian sống rất khác nhau.
• Nguyên tắc 2: nhóm các lớp vào package phải giảm thiểu sự
phụ thuộc (dependency) giữa các package

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 17
Nhóm các lớp vào Package
• Cách chọn các lớp vào một package cần phải:
• Có cùng chủ đề, có quan hệ chặt chẽ bởi khái niệm hoặc mục đích
• Cùng một hệ thống phân cấp
• Tham gia cùng một use case
• Có quan hệ kết hợp chặt.

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 18
Nhóm các lớp vào Package
• Ký hiệu Package trong UML: được hiển thị như một thư mục
dạng tab, Subordinate packages có thể được hiển thị bên trong
nó.
• Tên packages
• Nếu package mô tả các phần tử của nó thì tên Package đặt trong tab
• Ngược lại, thì tên Package đặt trong package.

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 19
Quyền sở hữu và tham chiếu
• Quyền sở hữu:
• Một phần tử được sở hữu bởi package chứa nó.
• Tuy nhiên, Một phần tử có thể được tham chiếu đến một phần tử trong
package khác. Trong trường hợp này, tên của phần tử được xác định
bởi tên của package theo định dạng: PackageName::ElementName
• Ví dụ:

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 20
Package phụ thuộc
• Nếu một phần tử trong mô hình phụ thuộc vào một phần tử
khác thì giữa chúng có mối quan hệ phụ thuộc
• Một package phụ thuộc chỉ ra rằng các phần tử bên trong nó
kết hợp với các phần tử trongpackage mục tiêu
• Trong UML mối quan hệ phụ thuộc được biểu diễn bằng ký
hiệu:

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 21
Package phụ thuộc
• Ví dụ: package Sales phụ thuộc vào package Core Elements

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 22
Ví dụ 1
• Mô hình package domain của hệ thống máy tính tiền

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 23
Ví dụ 1
• Package Core

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 24
Ví dụ 1
• Package Products

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 25
Ví dụ 1
• Package Sales

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 26
Bài tập
• Cho domain model của hệ thống đặt vé máy bay, hãy chia
domain model thành 2 package sau cho đảm bảo:
• Tính kết dính trong mỗi package
• Giảm tối thiểu sự phụ thuộc giữa các package
• Dịch vụ của mỗi package là gì?
• Đảm bảo tính tái sử dụng

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 27
Bài tập

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 28
Bài tập
• Gợi ý:
• Package 1: gồm các lớp liên quan đến chuyến bay
• Package 2: các lớp liên quan đến việc đặt vé
• Lưu ý:
• Lớp flight đặt trong Package nào là tốt nhất để đảm bảo thời gian
sống và tính tái sử dụng của hệ thống

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 29
Bài tập
• Giải pháp 1:

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 30
Bài tập
• Giải pháp 2:

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 31
Bài tập
• Giải pháp 2: lớp Flight trong package Bookings đảm bảo
được các tiêu chí:
• Thời gian sống của các đối tượng
• Flight có quan hệ chặt hơn với việc đặt vé (Bookings) so với các
thông tin chung về chuyến bay.

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 32
Bài tập
• Kết quả sơ đồ package

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 33
Bài tập

Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 34

You might also like