• 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á[r]
Trang 1Chương 5
MÔ HÌNH THIẾT KẾ CÁCH TẠO SƠ ĐỒ LỚP THIẾT KẾ
(DESIGN MODEL: CREATING DESIGN CLASS DIAGRAMS)
Trang 2Sơ đồ 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)
Trang 3Domain 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
Trang 4Domain 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
Trang 5Xâ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ệ
Trang 6Xá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
Trang 7Xá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.
Trang 9Xá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
Trang 10Xá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
Trang 11Xá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
Trang 12Xá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
Trang 13Xá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
Trang 14Bổ 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
Trang 15Bổ 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ệ
Trang 16Sử 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
Trang 17Nhó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
Trang 18Nhó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
Trang 19Nhó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.
Trang 20Quyề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
Trang 21Package 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:
Trang 22Package 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
Trang 23Ví dụ 1
• Mô hình package domain của hệ thống máy tính tiền
Trang 24Ví 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
Trang 25Ví dụ 1
• Package Products
Trang 26Ví 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
Trang 27Bà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
Trang 28Bà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
Trang 29Bà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
Trang 30Bà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
Trang 31Bài tập
• Giải pháp 2:
Trang 32Bà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
Trang 33Bài tập
• Kết quả sơ đồ package
Trang 34Bà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