PT & TK Hướng đối tượng – Thiết kế kiến trúcMụ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
Trang 1Phân tích và Thiết kế Hướng đối tượng
dùng UML
Module 13: Thiết kế Class
Trang 2PT & TK Hướng đối tượng – Thiết kế kiến trúc
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
Trang 3Vò trí cuûa Thieát keá Class
Architect
Designer
Architectural Analysis
Architecture Reviewer
Review the Design
Review the Architecture
Use-Case Analysis
Architectural Design Concurrency Describe Distribution Describe
Class Design
Subsystem Design
Use-Case Design Reviewer Design
Trang 4PT & TK Hướng đối tượng – Thiết kế kiến trúc
Tổng quan về Class
Supplementary Specifications
Class Design
Architecture Document
Design Model
Design Guidelines
Use-Case Realization
Design Classes
Design Classes
Trang 5Các bước thiết kế Class
Trang 6PT & TK Hướng đối tượng – Thiết kế kiến trúc
Các bước thiết kế Class
w Định nghĩa các trạng thái
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
Trang 7Các khảo sát khi thiết kế Class
w Class stereotype
§ Entity
w Các design pattern khả dụng
w Các cơ chế kiến trúc
§ Persistence
§ Distribution
Trang 8PT & TK Hướng đối tượng – Thiết kế kiến trúc
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
Trang 9SubWindow
DropDownList Button
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
Trang 10PT & TK Hướng đối tượng – Thiết kế kiến trúc
FatClassDataHelper
+ commonlyUsedAtt1 + commonlyUsedAtt2
FatClassLazyDataHelper
+ rarelyUsedAtt3 + rarelyUsedAtt4
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
Trang 11Thiế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
Trang 12PT & TK Hướng đối tượng – Thiết kế kiến trúc
Các bước thiết kế Class
w Định nghĩa các trạng thái
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
Trang 13w 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)
Trang 14PT & TK Hướng đối tượng – Thiết kế kiến trúc
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
Trang 15Các bước thiết kế Class
w Định nghĩa các trạng thái
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
Trang 16PT & TK Hướng đối tượng – Thiết kế kiến trúc
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
Trang 17Nhắc lại: Operation là gì ?
CourseOffering
addStudent deleteStudent getStartTime getEndTime
Class
Operation
Trang 18PT & TK Hướng đối tượng – Thiết kế kiến trúc
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, …
Trang 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ố
Trang 20PT & TK Hướng đối tượng – Thiết kế kiến trúc
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”
Trang 21Phát hiện Additional Classes và Relationships
Additional classes và relationships có thể được
thêm vào để hỗ trợ signature
op1(var1:Class2): Class3
Class3
Trang 22PT & TK Hướng đối tượng – Thiết kế kiến trúc
Public
operations
Protected operations Private operations
Trang 23Ký hiệu tính khả kiến?
w Các ký hiệu sau được dùng:
Trang 24PT & TK Hướng đối tượng – Thiết kế kiến trúc
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
Trang 25+ hasPrerequisites(forCourseOffering : CourseOffering) : boolean
# passed(theCourseOffering : CourseOffering) : boolean + getNextAvailID() : int
<<entity>>
- studentID
Trang 26PT & TK Hướng đối tượng – Thiết kế kiến trúc
MathFunctions
<<utility>>
Utility Classes
w Thế nào là một Utility Class?
§ Utility là một class stereotype
§ Dùng để chỉ các class chứa một bộ các chương
trình con miễn phí
w Tại sao lại dùng chúng?
§ Để cung cấp các dịch vụ có thể hữu dụng trong
các ngữ cảnh khác nhau
§ Để gói các hàm thư viện hay các ứng dụng phi đối tượng
Trang 27Ví duï: Utility Classes
<<utility>>
MathPack
- randomSeed : long = 0 -pi : double = 3.14159265358979
+sin (angle : double) : double +cos (angle : double) : double +random() : double
Trang 28PT & TK Hướng đối tượng – Thiết kế kiến trúc
Ví dụ: Định nghĩa các Operation
CourseOffering(from University Artifacts)
+ hasPrerequisites(forCourseOffering : CourseOffering) : boolean
# passed(theCourseOffering : CourseOffering) : boolean
<<class>> + getNextAvailID() : int
<<class>> + new(forStudent : string)
+ getStudent(withID : string) : Student
(from Registration)
<<control>>
Schedule(from University Artifacts)
<<entity>>
0 1
0 1 +registrant
0 *
1
0 1
0 1 +currentSchedule
0 * 0 *
+primaryCourses 0 4
+alternateCourses
0 2
ICourseCatalogSystem
+ getCourseOfferings() + initialize()
(from External System Interfaces)
<<Interface>>
1 0 *
Trang 29(còn tiếp)
Bài tập: Định nghĩa các Operation
w Hãy cho biết:
§ Các architectural layers, các package và các phụ thuộc của chúng
§ Các Design class cho một use case cụ thể
Trang 30PT & TK Hướng đối tượng – Thiết kế kiến trúc
(còn tiếp)
Bài tập: Define Operations (tt.)
w Với các design class, hãy xác định:
§ Các Operation và mô tả hoàn chỉnh của chúng
§ Operation scope và visibility
§ Mọi mối quan hệ và các class bổ sung để hỗ trợ cho các operation đã định nghĩa
Trang 31Bài tập: Định nghĩa các Operation (tt.)
w Xây dựng lược đồ sau:
§ VOPC class diagram, chứa tất cả các operation, operation signature, và các quan hệ
Trang 32PT & TK Hướng đối tượng – Thiết kế kiến trúc
Các bước thiết kế Class
w Định nghĩa các trạng thái
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
Trang 33Nhắc lại: Package Element Visibility
PackageA
Class A1
Class A3
Class A2 A
OO Principle: Encapsulation
Trang 34PT & TK Hướng đối tượng – Thiết kế kiến trúc
Các bước thiết kế Class
w Định nghĩa các trạng thái
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
Trang 35Định nghĩa các Method
w 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ệ
Trang 36PT & TK Hướng đối tượng – Thiết kế kiến trúc
Các bước thiết kế Class
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
Trang 37Định nghĩa các trạng thái
w 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
w 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?
Trang 38PT & TK Hướng đối tượng – Thiết kế kiến trúc
event(args) [guard condition]
Trang 39w Trang thái bắt đầu (Initial state)
§ Là trạng thái khi mới được khởi tạo của object
§ Mang tính bắt buộc
§ Chỉ có thể có 1 initial state
w Trang thái kết thúc (Final state)
§ Chỉ vị trí kết thúc đời sống của object
§ Có thể có nhiều
Final state Initial state
Các trạng thái đặc biệt
Trang 40PT & TK Hướng đối tượng – Thiết kế kiến trúc
Qui trình suy dẫn ra Statecharts
w Xác định và định nghĩa các trạng thái
w Xác định các event
w Xác định các transition (hồi đáp lại các event)
w Thêm các activity và các action
Trang 41w Significant, dynamic attributes
w Sự tồn tại và không tồn tại của các link
numStudents < 100 Open
Số sinh viên tối đa trong 1 lớp là 100
numStudents > = 100
Closed
Link to Professor Exists Link to Professor Doesn’t Exist
Trang 42PT & TK Hướng đối tượng – Thiết kế kiến trúc
+instructor
CourseOffering
+ addProfessor() + removeProfessor()
<<entity>>
Professor
<<entity>> 0 1
0 *
Events: addProfessor, removeProfessor
Xác định các Event
w Xem xét các class interface operation
Trang 43Professor
<<entity>>
0 1 0 *
Xác định các Transition
w 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
w Transitions mô tả điều gì xảy ra khi đối tượng hồi đáp lại một event nhân được
Trang 44PT & TK Hướng đối tượng – Thiết kế kiến trúc
State A
State B do: activity
event[ condition ] / action
§ Kết hợp với một trạng thái
§ Bắt dầu khi trạng thái bắt đầu
§ Cần thời gian để hoàn tất
§ Có thể ngắt
w 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
Trang 45event ^TargetObject.event
Trang 46PT & TK Hướng đối tượng – Thiết kế kiến trúc
Committed do: Generate class roster
closeRegistration [ has Professor assigned ]
close
/ numStudents = 0
addProfessor
closeRegistration remove student / numStudents = numStudents - 1
cancel
removeProfessor
[ numStudents = 10 ] close[ numStudents < 3 ]
Trang 47Ví dụ: Statechart với các trạng thái lồng nhau
Full
Committed do: Generate class roster
closeRegistration
close
remove a professor
close[ numStudents < 3 ] [ numStudents = 10 ]
closeRegistration[ numStudents >= 3 ]
close[ numStudents >= 3 ]
closeRegistration [ has Professor assigned ]
close / numStudents = 0
Trang 48PT & TK Hướng đối tượng – Thiết kế kiến trúc
Những Object có Significant State?
w Các Object có vai trò thể hiện rõ bởi state transitions
w Các use case phức tạp là state-controlled
w Không cần mô hình hóa tất cả các object
§ Các Object dễ dàng cài đặt
§ Các Object không thuộc loại state-controlled
§ Các Object chỉ với một trạng thái
Trang 49Cách Statecharts gắn với phần còn lại?
w Các Event biến thành các operation
w Các Method phải được cập nhật với các thông tin đặc thù cho các trạng thái
w Các trạng thái được biểu diễn bởi attributes
§ Chúng là input cho bước định nghĩa Attribute
Trang 50PT & TK Hướng đối tượng – Thiết kế kiến trúc
Bài tập: Định nghĩa States (optional)
w Hãy cho biết:
§ Tất cả các design classe
w Hãy xác định:
§ Các Class vứi significant state-controlled behavior
§ Các trạng thái và transitions quan trong của class
w Hãy xây dựng lược đồ:
§ Statechart của một class
Trang 51Các bước thiết kế Class
w Định nghĩa các trạng thái
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
Trang 52PT & TK Hướng đối tượng – Thiết kế kiến trúc
Định nghĩa Attributes
w Mục đích
§ Formalize definition of attributes
w Những gì cần xem xét:
§ Persistency
§ Visibility
§ Tên gọi, kiểu, và giá trị mặc định
Trang 53Nhắc lại: Thế nào là Attribute?
:CourseOffering
number = 101 startTime = 900 endTime = 1100
:CourseOffering
number = 104 startTime = 1300 endTime = 1500
CourseOffering
number startTime endTime
Class
Attribute
Object
Attribute Value
Trang 54PT & TK Hướng đối tượng – Thiết kế kiến trúc
Cách tìm ra các Attribute?
w Khảo sát mô tả của các method
w Khảo sát các trạng thái
w Bất kỳ thông tin nào mà class cần duy trì
Trang 55Biểu diễn Attribute
w Mô tả name, type, và giá trị mặc định
§ attributeName : Type = Default
w Tuân thủ qui ước đặt tên của NNLT và dự án
w Type phải là KDL cơ sở trong NNLT cài đặt
§ Các KDL định sẵn, người dùng đ/n
w Mô tả tình khả kiến
§ Public: ‘+’
§ Private: ‘-’
§ Protected: ‘#’
Trang 56PT & TK Hướng đối tượng – Thiết kế kiến trúc
Các Derived Attribute
w Thế nào là derived attribute?
§ Một attribute mà giá trị co thể tính từ giá trị của các attribute khác
w Khi nào dùng chúng?
§ Khi không đủ thời gian để tính lại giá trị mỗi khi cần thiết
§ Dung hòa giữa thời gian thực hiện và bộ nhớ sử dụng
Trang 57Ví duï: Define Attributes
(from University Artifacts)
0 *
0 *
+primaryCourses 0 4
+alternateCourses
0 2
Trang 58PT & TK Hướng đối tượng – Thiết kế kiến trúc
(còn tiếp)
Bài tập: Define Attributes (optional)
w Hãy cho biết:
§ Các architectural layers, các package và phụ thuộc của chúng
§ Các Design class của một use case cụ thể
Trang 59(còn tiếp)
Bài tập: Define Attributes (tt.)
w Với các design class hãy xác định:
§ Các Attribute và mô tả đầy đủ của nó
§ Tầm vực và tính khả kiến của Attribute
§ Mọi mối quan hệ và class bổ sung để hỗ trợ cho việc định nghĩa các attribute và attribute
signatures
Trang 60PT & TK Hướng đối tượng – Thiết kế kiến trúc
Bài tập: Define Attributes (cont.)
w Xây dựng lược đồ:
§ VOPC class diagram, chứa tất cả các attribute và mối quan hệ
Trang 61Các bước thiết kế Class
w Định nghĩa các trạng thái
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
Trang 62PT & TK Hướng đối tượng – Thiết kế kiến trúc
w Dependency là gì?
§ Là một loại quan hệ giữa hai object
w 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
w 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
Định nghĩa Dependency
Trang 63w Association là quan hệ câu trúc
w Dependency là quan hệ phi cấu trúc
w Để “nói chuyện” được, object phải khả kiến
§ Tham chiếu đến biến cục bộ
§ Tham chiếu đến tham số
§ Tham chiếu toàn cục
§ Tham chiếu đến trường dữ liệu (Field)
Association
Client Supplier1
Supplier2
Dependency
So sánh Dependency và Association