Các bước thiết kế Classw 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
Trang 1Cá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 Checkpoints
Trang 2w 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 Supplier
Định nghĩa Dependency
Trang 3w 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
Trang 4op1 ()
ClassB
Local Variable Visibility
w Operation op1() chứa một biến cục bộ có kiểu ClassB
Trang 5op1 (param1: ClassB)
ClassB
Parameter Visibility
w Thể hiện của ClassB được truyền đến cho thể hiện của ClassA
Trang 6utilityOp ()
ClassA
op1 ()
Global Visibility
w 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)
Trang 7w Bám vào các quan hệ trong thế giới thực
w Bám váo các quan hệ yếu nhất (dependency)
w Quan hệ là “thường trực”? Dùng association (field visibility)
w Quan hệ là “nhất thời”? Dùng dependency
§ Nhiều object chia sẻ chung 1 instance
• Truyền instance như tham số (parameter visibility)
• Đặt instance là global (global visibility)
§ Các object không chia sẻ cùng 1 instance (local visibility)
w Cần bao nhiêu thời gian để create/destroy?
§ Chi phí ? Dùng field, parameter, hoặc global visibility
Xác định Dependency
Trang 8Ví dụ: Trước khi định nghĩa Dependency
ICourseCatalogSystem + getCourseOfferings(forSemester : Semester) : CourseOfferingList
(from External System Interfaces)
<<Interface>>
Student
- name
- address
- StudentID : int
(from University Artifacts)
<<entity>>
RegistrationController
+ // submit schedule()
+ // save schedule()
+ // create schedule with offerings()
+ // getCourseOfferings(forSemester) : CourseOfferingList
(from Registration)
<<control>>
0 1
0 1 registrant
0 * 1 courseCatalog
Schedule
- semester + submit() + // save()
# any conflicts?() + // create with offerings()
(from University Artifacts)
<<entity>>
0 *
1
0 1 0 1 currentSchedule
CourseOffering
- number : String = "100"
- startTime : Time
- endTime : Time
- days : Enum
(from University Artifacts)
<<entity>>
0 * 0 4 primaryCourses
0 *
0 2 alternateCourses
Trang 9Ví duï: Sau khi ñònh nghóa Dependency
Global visibility
ICourseCatalogSystem + getCourseOfferings(forSemester : Semester) : CourseOfferingList
(from External System Interfaces)
<<Interface>>
Student
- name
- address
- StudentID : int
+ addSchedule(theSchedule : Schedule, forSemester : Semester)
(from University Artifacts)
<<entity>>
RegistrationController
+ // submit schedule()
+ // save schedule()
+ // create schedule with offerings()
+ // getCourseOfferings(forSemester) : CourseOfferingList
(from Registration)
<<control>>
0 1
0 1 registrant
Schedule
- semester + submit() + // save()
# any conflicts?() + // create with offerings()
(from University Artifacts)
<<entity>>
0 *
1
0 1 0 1 currentSchedule
CourseOffering
- number : String = "100"
- startTime : Time
- endTime : Time
- days : Enum + addStudent(studentSchedule : Schedule)
(from University Artifacts)
<<entity>>
0 *
0 4 primaryCourses
0 *
0 2 alternateCourses
Field visibility
Field visibility