PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
1
Phân tích và Thiết kế Hướng đối tượng
dùng UML
Module 13: Thiết kế Class
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
2
Mục tiêu
w Tìm hiểu mục đích của bước thiết kế Class và
vò trí của công đoạn này trong qui trình
w Xác đònh bổ sung các class và quan hệ của
chúng cần để hỗ trợ cho việc cài đặt các cơ
chế kiến trúc đã chọn
w Xác đònh và phân tích việc chuyển đổi trạng
thái các đối tường trong các class kiểm soát
được trạng thái
w Tinh chỉnh các quan hệ, operation, và thuộc
tính
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
3
Vò trí của Thiết kế Class
Architect
Designer
Architectural
Analysis
Architecture
Reviewer
Review the
Design
Review the
Architecture
Use-Case
Analysis
Architectural
Design
Describe
Concurrency
Describe
Distribution
Class
Design
Subsystem Design
Use-Case
Design
Design
Reviewer
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
4
Tổng quan về Class
Supplementary
Specifications
Class
Design
Architecture Document
Design Model
Design
Guidelines
Use-Case Realization
Design Classes
Design Classes
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
5
Các bước thiết kế Class
w Tạo các Design Class ban đầu
w Xác đònh các Persistent Class
w Đònh nghóa các Operation
w Đònh nghóa Class Visibility
w Đònh nghóa các Method
w Đònh nghóa các trạng thái
w Đònh nghóa các thuộc tính
w Đònh nghóa các phụ thuộc
w Đònh nghóa các mỗi kết hợp
w Đònh nghóa các quan hệ tổng quát hóa
w Giải quyết đụng độ giữa các Use-Case
w Xử lý các yêu cầu phi chức năng nói chung
w Checkpoints
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
6
Các bước thiết kế Class
w Tạo các Design Class ban đầu
w Xác đònh các Persistent Class
w Đònh nghóa các Operation
w Đònh nghóa Class Visibility
w Đònh nghóa các Method
w Đònh nghóa các trạng thái
w Đònh nghóa các thuộc tính
w Đònh nghóa các phụ thuộc
w Đònh nghóa các mỗi kết hợp
w Đònh nghóa các quan hệ tổng quát hóa
w Giải quyết đụng độ giữa các Use-Case
w Xử lý các yêu cầu phi chức năng nói chung
w Checkpoints
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
7
Các khảo sát khi thiết kế Class
w Class stereotype
§ Boundary
§ Entity
§ Control
w Các design pattern khả dụng
w Các cơ chế kiến trúc
§ Persistence
§ Distribution
§ …
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
8
Một class phải có một mục tiêu rõ ràng.
Một class phải làm một việc gì đó và phải làm tốt điều này !
Cần bao nhiêu Class ?
w Nếu nhiều class đơn giản. Nghóa là mỗi class:
§ Đóng gói một phần ít hơn trên toàn bộ hệ thống
§ Nhiều khả năng dùng lại hơn
§ Dễ cài đặt hơn
w Nếu nhiều class phức tạp. Nghóa là mỗi class:
§ Đóng gói một phần nhiều hơn trên toàn bộ hệ thống
§ Ít khả năng dùng lại hơn
§ Khó cài đặt hơn
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
9
MainForm
SubWindow
DropDownListButton
MainWindow
Thiết kế các Boundary Class
w Các User interface (UI) boundary class
§ Công cụ xây dựng giao diện người dùng nào sẽ
được sử dụng?
§ Bao nhiêu giao diện có thể được xây dựng bởi
công cụ?
w Các External system interface boundary class
§ Thường được mô hình như subsystem
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
10
Analysis
Design
FatClass
- transientBookeeping
+ getCommonlyUsedAtt1()
+ getCommonlyUsedAtt2()
+ getRarelyUsedAtt3()
+ getRarelyUsedAtt4()
FatClassDataHelper
+ commonlyUsedAtt1
+ commonlyUsedAtt2
FatClassLazyDataHelper
+ rarelyUsedAtt3
+ rarelyUsedAtt4
1
1
FatClass
- transientBookeeping
+ commonlyUsedAtt1
+ commonlyUsedAtt2
+ rarelyUsedAtt3
+ rarelyUsedAtt4
<< entity >>
Thiết kế các Entity Class
w Các Entity object thường thụ động và persistent
w Các yêu cầu về hiệu năng có thể buộc ta phải tái xây
dựng
w Xem thêm bước xác đònh Persistent Class
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
11
Thiết kế Control Class
w Chuyện gì xảy ra với các Control Class?
§ Chúng thật sự cần thiết?
§ Có phải tách chúng ra không?
w Dựa vào đâu để quyết đònh?
§ Độ phức tạp
§ Khả năng thay đổi
§ Tính phân tán và hiệu năng
§ Transaction management
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
12
Các bước thiết kế Class
w Tạo các Design Class ban đầu
w Xác đònh các Persistent Class
w Đònh nghóa các Operation
w Đònh nghóa Class Visibility
w Đònh nghóa các Method
w Đònh nghóa các trạng thái
w Đònh nghóa các thuộc tính
w Đònh nghóa các phụ thuộc
w Đònh nghóa các mỗi kết hợp
w Đònh nghóa các quan hệ tổng quát hóa
w Giải quyết đụng độ giữa các Use-Case
w Xử lý các yêu cầu phi chức năng nói chung
w Checkpoints
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
13
w Mọi thể hiện của class đều đòi hỏi phải lưu giữ trạng
thái của nó
w Các Persistent class được gán với cơ chế persistence
Client
Class
Persistency
Analysis
Mechanism
(Conceptual)
Design
Mechanism
(Concrete)
Implementation
Mechanism
(Actual)
OODBMS
RDBMS JDBC to Ingres
ObjectStore
Legacy Data
New Data
Course
Student
Persistency
Xác đònh Persistent Class
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
14
Class
Design
Database
Design
Class
Database Designer
Data Model
Designer
Database Design Preview
w Persistence strategy must be coordinated
w Ở đây, nhớ rằng các class đều persistent
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
15
Các bước thiết kế Class
w Tạo các Design Class ban đầu
w Xác đònh các Persistent Class
w Đònh nghóa các Operation
w Đònh nghóa Class Visibility
w Đònh nghóa các Method
w Đònh nghóa các trạng thái
w Đònh nghóa các thuộc tính
w Đònh nghóa các phụ thuộc
w Đònh nghóa các mỗi kết hợp
w Đònh nghóa các quan hệ tổng quát hóa
w Giải quyết đụng độ giữa các Use-Case
w Xử lý các yêu cầu phi chức năng nói chung
w Checkpoints
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
16
Đònh nghóa các Operation
w Mục đích
§ Ánh xạ các nhiệm vụ đã xác đònh ơ mức phân tích
thành các operation thực hiện chúng
w Những cái cần xem xét:
§ Tên Operation, signature, và mô tả
§ Operation visibility
§ Tầm vực Operation
• Class operation hay instance operation
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
17
Nhắc lại: Operation là gì ?
CourseOffering
addStudent
deleteStudent
getStartTime
getEndTime
Class
Operation
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
18
:ClassA
// Perform responsibility
:ClassB
:ClassA
performResponsibility():result
:ClassB
Operation: Tìm chúng ở đâu?
w Các thông điệp trong các interaction diagram
w Các chức năng phụ thuộc vào cài đặt khác
§ Các chức năng quản trò
§ Các nhu cầu sao chép class
§ Các nhu cầu kiểm tra bằng, khác nhau, …
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
19
Đặt tên và mô tả các Operation
w Các tên thích hợp cho operation
§ Chỉ rõ kết quả của operation
§ Đứng dưới góc nhìn của client
§ Nhất quán qua tất cả các class
w Đònh nghóa operation signature
§ operationName(parameter : class, ) : returnType
w Cung cấp một mô tả ngắn, bao gồm ý nghóa
của tất cả các tham số
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
20
Guidelines: Thiết kế Operation Signatures
w Khi thiết kế operation signatures phải bảo đảm
hàm chứa:
§ Các tham số truyền theo giá trò hay tham số?
§ Các tham số có bò thay đổi bởi operation?
§ Các tham số là optional?
§ Tham số có giá trò mặc đònh?
§ Miền tham số hợp lệ?
w Càng ít tham số càng tốt
w Truyền các object thay vì “data bits”
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
21
Phát hiện Additional Classes và Relationships
Additional classes và relationships có thể được
thêm vào để hỗ trợ signature
ClassA
Class2
op1(var1:Class2): Class3
Class3
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
22
Public
operations
Protected
operations
Private operations
Operation Visibility
w Tính khả kiến được dùng để cung cấp tính
đóng gói
w Giá trò có thể là public, protected, hay private
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
23
Class
- privateAttribute
# protectedAttribute
+publicOp()
# protectedOp()
- privateOp()
Ký hiệu tính khả kiến?
w Các ký hiệu sau được dùng:
§ + Public access
§ # Protected access
§ - Private access
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
24
Class
- classifierScopeAttribute
classifierScopeOperation()
- instanceScopeAttribute
instanceScopeOperation()
Tầm vực
w Xác đònh số lượng thể hiện của attribute /
operation
§ Instance: 1 instance cho mỗi class instance
§ Classifier: 1 instance cho tất cả class instance
w Tầm vực mức Classifier được ký hiệu bằng
cách gạch dưới tên attribute/operation
PT & TK Hướng đối tượng – Thiết kế kiến trúc
Dương Anh Đức
25
Ví dụ: Scope
Student
- name
- address
- nextAvailID : int
+ addSchedule(theSchedule : Schedule, forSemester : Semester)
+ getSchedule(forSemester : Semester) : Schedule
+ hasPrerequisites(forCourseOffering : CourseOffering) : boolean
# passed(theCourseOffering : CourseOffering) : boolean
+ getNextAvailID() : int
<<entity>>
- studentID