Professional Documents
Culture Documents
05 Thietkeclass
05 Thietkeclass
Thiết kế Class
Thiết kế Class
Dương Anh Đức 1
Mục tiêu
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
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
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
Tinh chỉnh các quan hệ, operation, và thuộc tính
Thiết kế Class
Dương Anh Đức 2
Vị trí của Thiết kế Class
Architectural
Analysis
Subsystem Design
Use-Case
Analysis
Review the
Use-Case Design
Design
Designer Design Reviewer
Class
Design
Thiết kế Class
Dương Anh Đức 3
Tổng quan về Class
Design Classes
Class
Design Design Classes
Use-Case Realization
Design Model
Thiết kế Class
Supplementary
Dương Anh Đức
Specifications 4
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 5
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 6
Các khảo sát khi thiết kế Class
Class stereotype
Boundary
Entity
Control
Các design pattern khả dụng
Các cơ chế kiến trúc
Persistence
Distribution
…
Thiết kế Class
Dương Anh Đức 7
Cần bao nhiêu Class ?
MainWindow SubWindow
MainForm
Button DropDownList
Thiết kế Class
Dương Anh Đức 9
Thiết kế các Entity Class
Analysis Design
<< entity >> FatClass
FatClass
- transientBookeeping
- transientBookeeping
+ commonlyUsedAtt1 + getCommonlyUsedAtt1()
+ commonlyUsedAtt2 + getCommonlyUsedAtt2()
+ rarelyUsedAtt3 + getRarelyUsedAtt3()
+ rarelyUsedAtt4 + getRarelyUsedAtt4()
1 1
FatClassDataHelper FatClassLazyDataHelper
+ commonlyUsedAtt1 + rarelyUsedAtt3
+ commonlyUsedAtt2 + rarelyUsedAtt4
Thiết kế Class
Dương Anh Đức 10
Thiết kế Control Class
Thiết kế Class
Dương Anh Đức 11
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 12
Xác định Persistent Class
Mọi thể hiện của class đều đòi hỏi phải lưu giữ trạng thái của
nó
Các Persistent class được gán với cơ chế persistence
New Data
Student
Persistency OODBMS ObjectStore
Thiết kế Class
Dương Anh Đức 13
Database Design Preview
Class Class
Design
Designer
Database
Design
Database Designer
Data Model
Thiết kế Class
Dương Anh Đức 14
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 15
Định nghĩa các Operation
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
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
Thiết kế Class
Dương Anh Đức 16
Nhắc lại: Operation là gì ?
CourseOffering
Class
addStudent
deleteStudent
getStartTime
Operation getEndTime
Thiết kế Class
Dương Anh Đức 17
Operation: Tìm chúng ở đâu?
Thiết kế Class
Dương Anh Đức 18
Đặt tên và mô tả các Operation
Thiết kế Class
Dương Anh Đức 19
Guidelines: Thiết kế Operation Signatures
Thiết kế Class
Dương Anh Đức 20
Phát hiện Additional Classes và Relationships
ClassA Class2
op1(var1:Class2): Class3
Class3
Thiết kế Class
Dương Anh Đức 21
Operation Visibility
Tính khả kiến được dùng để cung cấp tính đóng gói
Giá trị có thể là public, protected, hay private
Private operations
Protected
operations
Public
operations
Thiết kế Class
Dương Anh Đức 22
Ký hiệu tính khả kiến?
Class
- privateAttribute
# protectedAttribute
+publicOp()
# protectedOp()
- privateOp()
Thiết kế Class
Dương Anh Đức 23
Tầm vực
Class
- classifierScopeAttribute
- instanceScopeAttribute
classifierScopeOperation()
instanceScopeOperation()
Thiết kế Class
Dương Anh Đức 24
Ví dụ: Scope
<<entity>>
Student
- name
- address
- studentID
- nextAvailID : int
Thiết kế Class
Dương Anh Đức 25
Utility Classes
<<utility>>
MathFunctions
Thiết kế Class
Dương Anh Đức 26
Ví dụ: Utility Classes
<<utility>>
MathPack
-randomSeed : long = 0
-pi : double = 3.14159265358979
Thiết kế Class
Dương Anh Đức 27
Ví dụ: Định nghĩa các Operation
<<Interface>>
<<control>> ICourseCatalogSystem
RegistrationController 1 (from External System Interfaces)
(from Registration) 0..*
+ getCourseOfferings()
+ submitSchedule() + initialize()
+ saveSchedule()
+ getCourseOfferings() : CourseOfferingList
+ getCurrentSchedule(forStudent : Student, forSemester : Semester) : Schedule
+ deleteCurrentSchedule()
<<class>> + new(forStudent : string) +currentSchedule
+ getStudent(withID : string) : Student 0..1 <<entity>>
0..1 Schedule
(from University Artifacts)
0..1
0..*
0..*
+registrant 0..*
0..1
<<entity>> +alternateCourses
Student. 1
(from University Artifacts) +primaryCourses
+ getTuition() : double 0..2 0..4
+ addSchedule(theSchedule : Schedule)
+ getSchedule(forSemester : Semester) : Schedule <<entity>>
+ deleteSchedule(forSemester : Semester) CourseOffering
+ hasPrerequisites(forCourseOffering : CourseOffering) : boolean (from University Artifacts)
# passed(theCourseOffering : CourseOffering) : boolean
<<class>> + getNextAvailID() : int
+ getStudentID() : int
+ getName() : string
+ getAddress() : string
Thiết kế Class
Dương Anh Đức 28
Bài tập: Định nghĩa các Operation
(còn tiếp)
Thiết kế Class
Dương Anh Đức 29
Bài tập: Define Operations (tt.)
(còn tiếp)
Thiết kế Class
Dương Anh Đức 30
Bài tập: Định nghĩa các Operation (tt.)
Thiết kế Class
Dương Anh Đức 31
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 32
Nhắc lại: Package Element Visibility
PackageA
Class A1
Class A2
A
Class A3
Private visibility
OO Principle: Encapsulation
Thiết kế Class
Dương Anh Đức 33
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 34
Định nghĩa các Method
Method là gì ?
Mô tả cài đặt của operation
Mục đích
Định nghĩa các khía cạnh đặc biệt của operation
implementation
Những gì cần xem xét:
Các thuật toán đặc biệt
Các object và các operation khác cần sử dụng
Cách cài đặt và sử dụng các attribute và các tham số
Cách cài đặt và sử dụng các mối quan hệ
Thiết kế Class
Dương Anh Đức 35
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 36
Định nghĩa các trạng thái
Mục đích
Thiết kế ảnh hưổng của trạng thái đối tượng lên hành vi của
nó
Phát triển statecharts để mô hình các hành vi này
Những gì cần xem xét:
Những object nào có trạng thái đáng kể?
Cách xác định các trạng thái của một object?
Cách ánh xạ statechart với phần còn lại của mô hình?
Thiết kế Class
Dương Anh Đức 37
Statechart là gì?
Là 1 đồ thị có hướng với các node là các trạng thái nối với
nhau bới các transition
Mô tả lịch sử đời sống của đối tượng
State Event
Activity
Transition
Thiết kế Class
Dương Anh Đức 38
Các trạng thái đặc biệt
Thiết kế Class
Dương Anh Đức 39
Qui trình suy dẫn ra Statecharts
Thiết kế Class
Dương Anh Đức 40
Xác định và định nghĩa các trạng thái
Open Closed
Professor
Link to Professor Link to Professor
Exists Doesn’t Exist
0..1
0..* Assigned Unassigned
CourseOffering
Thiết kế Class
Dương Anh Đức 41
Xác định các Event
<<entity>>
CourseOffering 0..* 0..1 <<entity>>
+ addProfessor() Professor
+instructor
+ removeProfessor()
Thiết kế Class
Dương Anh Đức 42
Xác định các Transition
Với mỗi trạng thái, xác định events nào gây ra transitions đến
trạng thái nào, bao gồm các điều kiện kiểm soát, nếu cần
Transitions mô tả điều gì xảy ra khi đối tượng hồi đáp lại một
event nhân được
<<entity>>
CourseOffering 0..* 0..1 <<entity>>
+ addProfessor() Professor
+instructor
+ removeProfessor()
Unassigned
addProfessor
removeProfessor
Assigned
Thiết kế Class
Dương Anh Đức 43
Thêm Activities và Actions
Activities
State A
Kết hợp với một trạng thái
Bắt dầu khi trạng thái bắt đầu action
Cần thời gian để hoàn tất event[ condition ] / action
Có thể ngắt
activity State B State C
do: activity entry: action
Actions
Kết hợp với 1 transition
Cần thời gian không đáng kể để hoàn tất
Không thể ngắt ngang
Thiết kế Class
Dương Anh Đức 44
Gửi Events
State A
event ^TargetObject.event
State B
do: ^TargetObject.event
Thiết kế Class
Dương Anh Đức 45
Ví dụ: Statechart
add student / numStudents = numStudents + 1
Unassigned
closeRegistration
cancel Cancelled
addProfessor
do: Send cancellation notices
close
removeProfessor cancel
[ numStudents = 10 ]
cancel
Full
close Cancelled
Unassigned do: Send cancellation notices
cancel
cancel
substate
Full
close[ numStudents < 3 ]
remove a professor
[ numStudents = 10 ] close
add a professor
closeRegistration [ has Professor assigned ]
Thiết kế Class
Dương Anh Đức 48
Cách Statecharts gắn với phần còn lại?
CourseOffering
add student / /- numStudents
numStudents = numStudents + 1
+ addStudent()
(Stay tuned for derived attributes)
Thiết kế Class
Dương Anh Đức 49
Bài tập: Định nghĩa States (optional)
Thiết kế Class
Dương Anh Đức 50
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 51
Định nghĩa Attributes
Mục đích
Formalize definition of attributes
Những gì cần xem xét:
Persistency
Visibility
Tên gọi, kiểu, và giá trị mặc định
Thiết kế Class
Dương Anh Đức 52
Nhắc lại: Thế nào là Attribute?
Object
Class
Thiết kế Class
Dương Anh Đức 53
Cách tìm ra các Attribute?
Thiết kế Class
Dương Anh Đức 54
Biểu diễn Attribute
Thiết kế Class
Dương Anh Đức 55
Các Derived Attribute
Thiết kế Class
Dương Anh Đức 56
Ví dụ: Define Attributes
<<Interface>>
ICourseCatalogSystem
(from External System Interfaces)
<<control>>
RegistrationController
(from Registration)
0..1 +currentSchedule
<<entity>>
0..1 Schedule
0..1 (from University Artifacts)
- semester : Semester
0..*
0..* 0..*
+registrant
+alternateCourses
+primaryCourses
0..1 0..2 0..4
<<entity>> <<entity>>
Student. 1 CourseOffering
(from University Artifacts) (from University Artifacts)
- name : string - number : String = "100"
- address : string - startTime : Time
<<class>> - nextAvailID : int - endTime : Time
- studentID : int - days : string
- dateofBirth : Date /- numStudents : int = 0
Thiết kế Class
Dương Anh Đức 57
Bài tập: Define Attributes (optional)
(còn tiếp)
Thiết kế Class
Dương Anh Đức 58
Bài tập: Define Attributes (tt.)
(còn tiếp)
Thiết kế Class
Dương Anh Đức 59
Bài tập: Define Attributes (cont.)
Thiết kế Class
Dương Anh Đức 60
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 61
Định nghĩa Dependency
Dependency là gì?
Là một loại quan hệ giữa hai object
Client Supplier
Mục đích
Xác định những nơi KHÔNG cần đến các mối quan hệ cấu
trúc
Những gì cần xem xét :
Những gì buộc supplier trở nên nhìn thấy được bởi client
Thiết kế Class
Dương Anh Đức 62
So sánh Dependency và Association
Thiết kế Class
Dương Anh Đức 63
Local Variable Visibility
ClassA
op1 ()
ClassB
Thiết kế Class
Dương Anh Đức 64
Parameter Visibility
Thể hiện của ClassB được truyền đến cho thể hiện của ClassA
ClassA
ClassB
Thiết kế Class
Dương Anh Đức 65
Global Visibility
Thể hiện của ClassUtility khả kiến với mọi dối tượng vì nó là
toàn cục (global)
ClassA
op1 ()
ClassUtility
utilityOp ()
Thiết kế Class
Dương Anh Đức 66
Xác định Dependency
Thiết kế Class
Dương Anh Đức 67
Ví dụ: Trước khi định nghĩa Dependency
<<Interface>>
ICourseCatalogSystem
(from External System Interfaces)
Thiết kế Class
Dương Anh Đức 68
Ví dụ: Sau khi định nghĩa Dependency
<<Interface>>
ICourseCatalogSystem
(from External System Interfaces)
Global visibility
<<entity>>
<<control>>
Schedule
RegistrationController
(from University Artifacts)
(from Registration)
currentSchedule - semester
+ // submit schedule()
+ // save schedule() 0..1 0..1 + submit()
+ // save()
+ // create schedule with offerings()
# any conflicts?()
+ // getCourseOfferings(forSemester) : CourseOfferingList
+ // create with offerings() Field visibility
0..1 0..*
0..* 0..*
Field visibility alternateCourses primaryCourses
registrant 1
0..2 0..4
0..1
<<entity>>
<<entity>> CourseOffering
Student (from University Artifacts)
(from University Artifacts) - number : String = "100"
- name - startTime : Time
- address - endTime : Time
- StudentID : int - days : Enum
Thiết kế Class
Dương Anh Đức
Parameter visibility
69
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 70
Định nghĩa Associations
Mục đích
Tinh chỉnh các association còn lại
Những gì cần xem xét :
Cân nhắc giữa Association và Aggregation
Cân nhắc giữa Aggregation và Composition
Cân nhắc giữa Attribute và Association
Chiều của quan hệ (Navigability)
Thiết kế Association class
Thiết kế bản số (Multiplicity design)
Thiết kế Class
Dương Anh Đức 71
Nhắc lại: Composition là gì ?
Whole Part
Whole Part
Aggregation
Thiết kế Class
Dương Anh Đức 72
Aggregation: Shared hay không shared
Shared Aggregation
Bản số > 1
Non-shared Aggregation
Bản số = 1 Bản số = 1
Composition
Theo định nghĩa, composition là non-shared aggregation
Thiết kế Class
Dương Anh Đức 73
Aggregation hay Composition?
Xem xét
Chu kỳ sống của Class1 và Class2
Class1 Class2
aggregation
Class1 Class2
composition
Thiết kế Class
Dương Anh Đức 74
Ví dụ: Composition
RegisterForCoursesForm 1 1 RegistrationController
Thiết kế Class
Dương Anh Đức 75
Cân nhắc giữa Attributes và Composition
Thiết kế Class
Dương Anh Đức 76
Ví dụ: Attributes/Composition
<<entity>> Attributes
Student
- name
<<entity>>
- address
<<classifier scope>> - nextAvailID : int Schedule
- StudentID : int - Semester
- dateofBirth : Date + submit()
+ // save()
+ addSchedule() 1 0..* # any conflicts?()
+ getSchedule()
+ // create with offerings()
+ delete schedule()
+ hasPrerequisites() + new()
# passed() + passed()
Composition of
separate class
Thiết kế Class
Dương Anh Đức 77
Chiều của quan hệ
0..* 0..4
?
Schedule primaryCourses CourseOffering Schedule primaryCourses CourseOffering
Thiết kế Class
Dương Anh Đức 78
Ví dụ: Tinh chỉnh chiều quan hệ
Tổng số CourseOffering và
Schedule đều không nhỏ Schedule primaryCourses CourseOffering
Phải quan tâm đến cả 2 chiều 0..* 0..4
Thiết kế Class
Dương Anh Đức 79
Ví dụ: Thiết kế Association Class
alternateCourses
0..* 0..2
Schedule primaryCourses CourseOffering
0..* 0..4
PrimaryScheduleOfferingInfo
- grade: char = I
Design Decisions
alternateCourses
0..* 0..2
Schedule PrimaryScheduleOfferingInfo CourseOffering
primaryCourseOfferingInfo
1 0..4 - grade: char = I 0..* 1
Thiết kế Class
Dương Anh Đức 80
Thiết kế bản số
Bản số > 1
Không thể dùng giá trị đơn hay pointer
Cần thực hiện thêm một số công việc thiết kế
Professor instructor CourseOffering Cần một
0..1 0..* container
Thiết kế Class
Dương Anh Đức 81
Multiplicity Design Options
CourseOfferingList
Professor instructor CourseOffering <<entity>> +instructor
Professor
0..1 0..* + new()
0..1 0..1
+ add()
1
0..*
<<entity>>
Ghi chú CourseOffering
List
Thiết kế Class
Dương Anh Đức 82
Parameterized Class (template) là gì?
Formal Item
arguments
Parameterized List
Class
Thiết kế Class
Dương Anh Đức 83
Thể hiện của Parameterized Class
Formal arguments
Instantiated Class <actual arguments>
Parameterized
Class
HAY
<<bind>> <actual arguments>
Instantiated Class
Thiết kế Class
Dương Anh Đức 84
Ví dụ: Thể hiện của Parameterized Class
Trước
<<entity>>
CourseOfferingList
CourseOffering
1 0..*
Sau
Item
List
List <CourseOffering> CourseOffering
HAY
<<bind>> <CourseOffering>
CourseOfferingList CourseOffering
Thiết kế Class
Dương Anh Đức 85
Multiplicity Design: Optionality
Nếu một link là tùy chọn, hãy cèn thêm một operation để kiểm
tra sự tồn tại của link
Professor CourseOffering
Thiết kế Class
Dương Anh Đức 86
Bài tập: Đ/n Dependency và Association
Thiết kế Class
Dương Anh Đức 87
Bài tập: Đ/n Dependenc và Association (tt.)
Thiết kế Class
Dương Anh Đức 88
Bài tập: Đ/n Dependency và Association (tt.)
Thiết kế Class
Dương Anh Đức 89
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 90
Định nghĩa quan hệ tổng quát hóa
Mục đích
Xác định các khả năng dùng lại
Tinh chỉnh cây kế thừa để có thể cài đặt hiệu quả
Những gì cần xem xét:
So sánh Abstract classes với concrete classes
Bài toán đa kế thừa
So sánh Generalization và Aggregation
Tổng quát hóa để hỗ trợ tái sử dụng trong cài đặt
Tổng quát hóa để hỗ trợ đa xạ (polymorphism)
Tổng quát hóa để hỗ trợ đa hình (metamorphosis)
Mô phỏng tổng quát hóa
Thiết kế Class
Dương Anh Đức 91
Nhắc lại: Generalization
Một class chi sẻ cấu trúc và hành vi của một hay nhiều class
Là quan hệ “Là một dạng của” ancestor
Trong phân tích, ít khi dùng đến Account
balance
name
number
Superclass
Withdraw()
(parent) CreateStatement()
Generalization
Relationship
Checking Savings
Subclasses
GetInterest()
descendents
Thiết kế Class
Dương Anh Đức 92
Abstract và Concrete Class
Animal
{abstract} Abstract class
Chuyên biệt hóa
talk () {abstract} Abstract operation
Communication Không có thể hiện của Animal
Lion Tiger
talk () talk ()
Tất cả các object đều hoặc là Lion hoặc là Tiger
Thiết kế Class
Dương Anh Đức 93
Nhắc lại: Đa kế thừa
FlyingThing Animal
multiple
inheritance
Dùng đa kế thức chỉ khi thật cần thiết, và phải luôn cẩn thận !
Thiết kế Class
Dương Anh Đức 94
Các vấn đề của đa kế thừa
getColor getColor
FlyingThing Animal
Bird
Bird
Lời giải của các vấn đề trên phụ thuộc cài đặt cụ thể
Thiết kế Class
Dương Anh Đức 95
Các ràng buộc của quan hệ tổng quát hóa
Thiết kế Class
Dương Anh Đức 96
Ví dụ: Generalization Constraints
Không hỗ trợ
Asset
đa kế thừa
{disjoint}
Bank Real
Estate Security
Account
{disjoint,complete}
{disjoint}
Thiết kế Class
Dương Anh Đức 97
Ví dụ: Generalization Constraints (tt.)
Hoã trôï
ña keá thöøa
Vehicle
{overlapping}
Land Water
Vehicle Vehicle
Amphibious
Vehicle
Thiết kế Class
Dương Anh Đức 98
Chọn Generalization hay Aggregation
Window Scrollbar
Có đúng không?
WindowWithScrollbar
Thiết kế Class
Dương Anh Đức 99
Chọn Generalization hay Aggregation
Window Scrollbar
WindowWithScrollbar
Window
Một WindowWithScrollbar “là một” Window
Một WindowWithScrollbar “chứa một” Scrollbar
WindowWithScrollbar Scrollbar
1 1
Thiết kế Class
Dương Anh Đức 100
Sử dụng quan hệ tổng quát hóa
Thiết kế Class
Dương Anh Đức 101
Sử dụng quan hệ tổng quát hóa
Thiết kế Class
Dương Anh Đức 102
Chia sẻ các thuộc tính và hành vi chung
Tuân thủ qui tắc lập trình “Là một dạng của”
Khả năng thay thể Class
List
insertTop (Item)
Animal
insertBottom (Item)
removeTop ()
talk () removeBottom ()
insert (Item,
position)
Lion Tiger
talk () talk ()
Stack
List
Animal
insertTop (Item)
insertBottom (Item)
talk () removeTop ()
removeBottom ()
insert (Item,
position)
Lion Tiger
talk () talk ()
Stack
Thiết kế Class
Dương Anh Đức 104
Sử dụng quan hệ tổng quát hóa
Thiết kế Class
Dương Anh Đức 105
Chia sẻ cài đặt: Factoring (phân chia)
Hỗ trợ khả năng dùng lại khi cài đặt class khác
Không thể dùng nếu class bạn muốn “dùng lại” không thể thay
đổi
List
SequentialContainer
insertTop (Item)
insertBottom (Item) insertTop (Item)
removeTop () removeTop ()
removeBottom ()
insert (Item, position)
List
Stack
insertBottom (Item)
removeBottom ()
insert (Item, position)
Stack
Thiết kế Class
Dương Anh Đức 106
Chia sẻ cài đặt: Delegation (đại diện)
Hổ trợ khả năng dùng lại khi cài đặt class khác
Không thể dùng nếu class bạn muốn “dùng lại” không thể thay
đổi
List
insertTop (Item)
insertBottom (Item) List
removeTop ()
removeBottom () Stack insertBottom
insert (Item, position) (Item)
push (Item) removeBottom ()
pop (): Item 1 1 insert (Item, position)
remove (position)
Stack
Thiết kế Class
Dương Anh Đức 107
Quan hệ kế thừa dạng <<implementation>>
<<implementation>>
Stack
push (Item)
pop ()
Thiết kế Class
Dương Anh Đức 108
Sử dụng quan hệ tổng quát hóa
Thiết kế Class
Dương Anh Đức 109
Nhắc lại: Polymorphism là gì ?
Khả năng che dấu nhiều cài đặt bên dưới một interface duy
nhất
Manufacturer B
Manufacturer A Manufacturer C
OO Principle:
Encapsulation
Thiết kế Class
Dương Anh Đức 110
Cài đặt Polymorphism
Animal
talk ()
Lion Tiger
talk () talk ()
Thiết kế Class
Dương Anh Đức 111
So sánh Interface và Generalization
Các Interface hỗ trợ biểu diễn độc lập với cài đặt của
polymorphism
Realization relationships có thể băng ngang qua cấu trúc
phân cấp của quan hệ tổng quát hóa
Các Interface chỉ thuần là đặc tả, không có hành vi
Abstract base class có thể định nghĩa attributes và
associations
Các Interface hoàn toàn độc lập với quan hệ kế thừa
Generalization thường dùng để cài đặt việc dùng lại
Interfaces thường dùng để đặc tả việc tái sử dụng các hành
vi
Generalization cung cấp một cách cài đặt polymorphism
Thiết kế Class
Dương Anh Đức 112
Dùng quan hệ tổng quát hóa để cài Polymorphism
Thiết kế Class
Dương Anh Đức 113
Sử dụng quan hệ tổng quát hóa
Thiết kế Class
Dương Anh Đức 114
Metamorphosis là gì?
Metamorphosis
1. Một thay đổi trong hình dạng, cấu trúc, hay chức năng;
đặc biệt là các thay đổi vật lý mà các động vật phải trải qua,
như con nòng nọc biến thành con ếc
2. Mọi thay đổi được ghi nhận, như trong các ký tự, thể
hiện, hoặc điều kiện
Thiết kế Class
Dương Anh Đức 115
Ví dụ: Metamorphosis
ParttimeStudent FulltimeStudent
name name
address address
studentID studentID
maxNumCourses gradDate
Thiết kế Class
Dương Anh Đức 116
Một hướng tiếp cận Modeling Metamorphosis
Student
name Chuyện gì xảy ra nếu
address
studentID một part-time student
trở thành full-time
student?
ParttimeStudent FulltimeStudent
maxNumCourses gradDate
Thiết kế Class
Dương Anh Đức 117
Một hướng tiếp cận khác
Student
Student 1 1
name Classification
name address
address studentID
studentID
Thiết kế Class
Dương Anh Đức 118
Một hướng tiếp cận khác (tt)
Metamorphosis được hoàn tất bởi object “nói chuyện với” phần
“thay đổi”
create
Thiết kế Class
Dương Anh Đức 119
Metamorphosis và tính mềm dẻo
ResidentInformation Student
dorm name 1 1 Classification
room
roomKeyID 0..1 1 address
studentID
FulltimeClassification ParttimeClassification
gradDate maxNumCourses
Thiết kế Class
Dương Anh Đức 120
Bài tập: Định nghĩa Generalizations
Thiết kế Class
Dương Anh Đức 121
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 122
Giải quyết đụng độ giữa các Use-Case
Nhiều use case có thể truy cập riêng rẽ đến các design object
Options
Dùng cơ chế truyền message đồng bộ => đến trước được
xử lý trước
Xác định các operation (hay code) cần protect
Áp dụng cơ chế access control
• Lập hàng đợi Message
• Semaphores (hoặc 'tokens')
• Các cơ chế khóa khác
Lời giải phụ thuộc nhiều vào môi trường cài đặt
Thiết kế Class
Dương Anh Đức 123
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 124
Xử lý các yêu cầu phi chức năng nói chung
Analysis Class Analysis Mechanism(s)
Legacy
Data Some Design Class
Persistency JDBC
RDBMS
New
Persistency Data ObjectStore Design
OODBMS Guidelines
Thiết kế Class
Dương Anh Đức 125
Các bước thiết kế Class
Thiết kế Class
Dương Anh Đức 126
Checkpoints: Các Class
Tên của mỗi class có phản ánh rõ vai trò của nó không?
Class có biểu diễn một single well-defined abstraction?
Tất cả các attribute và trách nhiệm có gắn kết với nhau?
Có bất kỳ class attribute, operation hay relationship nào cần
tổng quát hóa, nghĩa là, chuyển lên tổ tiên không?
Mọi yêu cầu trên class đã xử lý?
Mọi đòi hỏi trên class phù hơp với với statecharts mô hình hóa
hành vi của class và các thể hiện của nó?
Đã mô tả trọn vẹn chu kỳ sống của các thể hiện của class ?
Class thực hiện mọi hành vi cần thiết?
Thiết kế Class
Dương Anh Đức 127
Checkpoints: Operations
Thiết kế Class
Dương Anh Đức 128
Checkpoints: Attributes
Thiết kế Class
Dương Anh Đức 129
Checkpoints: Relationships
Thiết kế Class
Dương Anh Đức 130
Nhắc lại: Class Design
Thiết kế Class
Dương Anh Đức 131