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
Trang 2Định nghĩa Associations
w Mục đích
§ Tinh chỉnh các association còn lại
w 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)
Trang 3Whole Part
Nhắc lại: Composition là gì ?
w Là một dạng của aggregation với tính sở hữu cao và trùng khớp về chu kỳ sống
§ “Bộ phận” không thể tồn tại lâu hơn “toàn thể”
Trang 4w Shared Aggregation
w Non-shared Aggregation
1
Bản số > 1
Bản số = 1
Bản số = 1
Composition
Aggregation: Shared hay không shared
Trang 5composition
Class1
Class1
Class2
Class2
Aggregation hay Composition?
w Xem xét
§ Chu kỳ sống của Class1 và Class2
Trang 6Ví duï: Composition
Trang 7Cân nhắc giữa Attributes và Composition
w Dùng composition khi
§ Các thuộc tính cần được nhận dạng độc lập
§ Nhiều class có chung các thuộc tính
§ Các thuộc tính có cấu trúc phức tạp và bản thân chúng cũng có thuộc tính riêng
§ Các thuộc tính có hành vi riêng (phức tạp)
§ Các thuộc tính có quan hệ riêng
w Các trường hợp còn lại dùng attributes
Trang 8Ví duï: Attributes/Composition
Composition of separate class
Attributes
0 *
11
Student
- name
- address
<<classifier scope>> - nextAvailID : int
- StudentID : int
- dateofBirth : Date
+ addSchedule() + getSchedule() + delete schedule() + hasPrerequisites()
# passed()
<<entity>>
Schedule
+ submit() + // save()
# any conflicts?() + // create with offerings() + new()
+ passed()
<<entity>>
- Semester
Trang 9Schedule CourseOffering
0 4 0 *
primaryCourses
Chiều của quan hệ
w Khảo sát các interaction diagram
w Ngay cả khi cả 2 chiều đều có vẻ cần thiết,
vẫn có thể chỉ 1 chiều hoạt động
§ Một chiều quan hệ ít xảy ra
§ Số thể hiện của một class ít
Trang 10Ví dụ: Tinh chỉnh chiều quan hệ
w Tổng số Schedule nhỏ, hay
w Không bao giờ cần một list
Schedule có CourseOffering
xuất hiện trên đó
w Tổng số CourseOffering nhỏ,
hay
w Không bao giờ cần một list
CourseOffering có Schedule
xuất hiện trên đó
w Tổng số CourseOffering và
Schedule đều không nhỏ
w Phải quan tâm đến cả 2 chiều
Schedule CourseOffering
0 4 0 *
primaryCourses
Schedule CourseOffering
0 4 0 *
primaryCourses
Schedule CourseOffering
0 4 0 *
primaryCourses
Trang 11Ví duï: Thieát keá Association Class
Schedule CourseOffering
0 4 0 *
primaryCourses
PrimaryScheduleOfferingInfo
- grade: char = I
alternateCourses
0 2 0 *
alternateCourses
Design Decisions
Trang 12w Bản số = 1, hay = 0 1
§ Có thể cài đặt đơn giản như một giá trị hay pointer
§ Không cần thiết kế gì thêm
w 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 CourseOffering
0 *
0 1
instructor
Thiết kế bản số
Trang 13Multiplicity Design Options
w Mô hình hóa tường minh một container class
w Ghi chú
instructor
Professor CourseOffering
0 *
0 1
CourseOffering <<entity>>
Professor
<<entity>> CourseOfferingList
+ new() + add()
1 0 *
0 1 0 1
+instructor
List
Trang 14Item List
Parameterized
Class
Formal arguments
Parameterized Class (template) là gì?
w Là một class dùng để định nghĩa các class khác
w Thường dùng cho các container class
§ Một số container class thông dụng:
• Set, list, dictionary, stack, queue, …
Trang 15Thể hiện của Parameterized Class
Instantiated Class <actual arguments>
<<bind>> <actual arguments>
Parameterized
Class
Formal arguments
Instantiated Class
HAY
Kết buộc ẩn Kết buộc tường
minh
Trang 16Ví dụ: Thể hiện của Parameterized Class
CourseOffering <<entity>>
CourseOfferingList
Trước
Sau
<<bind>> <CourseOffering>
List
Item
List <CourseOffering> CourseOffering
HAY
Trang 17CourseOffering Professor
Multiplicity Design: Optionality
w 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
Trang 18(còn tiếp)
Bài tập: Đ/n Dependency và Association
w Hãy cho biết:
§ Use-case realization của 1 use case và chi tiết thiết kế của 1 subsystem
§ Thiết kế của tất cả các design element
Trang 19Bài tập: Đ/n Dependenc và Association (tt.)
w Hãy xác định:
§ Chiều của mỗi quan hệ
§ Mọi class cần bổ sung để hỗ trợ cho việc thiết kế quan hệ
§ Mọi association được tinh chỉnh thành dependency
§ Mọi association được tinh chỉnh thành aggregation hoặc composition
§ Mọi tinh chỉnh liên quan đến bản số
Trang 20Bài tập: Đ/n Dependency và Association (tt.)
w Xây dựng lược đồ
§ Một bản cập nhật của VOPC, bao gồm cả các tinh chỉnh quan hệ