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
Trang 2Định nghĩa quan hệ tổng quát hóa
§ 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ả
§ Bài toán đa kế thừa
§ 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
Trang 3Nhắc lại: Generalization
w Một class chi sẻ cấu trúc và hành vi của một
hay nhiều class
w Là quan hệ “Là một dạng của”
w Trong phân tích, ít khi dùng đến
Account balance
name number
Withdraw() CreateStatement()
Superclass (parent)
Generalization Relationship
ancestor
Trang 4talk () {abstract}
Không có thể hiện của Animal
Abstract class Abstract operation
Communication
Chuyên biệt hóa
Abstract và Concrete Class
w Abstract class không có bất kỳ thể hiện nào
w Concrete classes có thể có thể hiện (object)
Trang 5Airplane Helicopter Wolf Horse
Bird
multiple inheritance
Nhắc lại: Đa kế thừa
w Một class có thể kế thừa từ nhiều class
Trang 6Tên của attribute hay operation bị trùng Lặp lại việc kế thừa
FlyingThing
color
getColor
Animal color getColor
Bird
Bird
AnimateObject color
Các vấn đề của đa kế thừa
Lời giải của các vấn đề trên phụ thuộc cài đặt cụ thể
Trang 7Các ràng buộc của quan hệ tổng quát hóa
w Complete (Hoàn chỉnh)
§ Kết thúc toàn bộ cây kế thừa trong thiết kế
w Incomplete (Không hoàn chỉnh )
§ Cây kế thừa có thể mở rộng
w Disjoint (Phân tách)
§ Các Subclass loại trừ lần nhau
§ Không hỗ trợ đa kế thừa
w Overlapping (Chồng lắp)
§ Các Subclass không loại trừ lẫn nhau
Trang 8Ví dụ: Generalization Constraints
Asset
Real Estate
Kết thúc cây kế thừa
Không hỗ trợ
đa kế thừa
Trang 9Ví duï: Generalization Constraints (tt.)
Vehicle
Water Vehicle
Land Vehicle
Trang 10WindowWithScrollbar
Scrollbar
Có đúng không?
Chọn Generalization hay Aggregation
w Rất dễ nhầm lẫm giữa Generalization và
Trang 12Sử dụng quan hệ tổng quát hóa
w Chia sẻ các thuộc tính và hành vi chung
w Chia sẻ cài đặt
w Cài đặt cơ chế Polymorphism
w Cài đặt cơ chế Metamorphosis
Trang 13Sử dụng quan hệ tổng quát hóa
w Chia sẻ các thuộc tính và hành vi chung
w Chia sẻ cài đặt
Trang 14insertTop (Item) insertBottom (Item) removeTop ()
removeBottom () insert (Item, position)
Stack
Animal talk ()
Chia sẻ các thuộc tính và hành vi chung
w Tuân thủ qui tắc lập trình “Là một dạng của”
w Khả năng thay thể Class
Trang 15Animal talk ()
removeBottom () insert (Item, position)
Stack
Trang 16Sử dụng quan hệ tổng quát hóa
w Chia sẻ các thuộc tính và hành vi chung
w Chia sẻ cài đặt
Trang 17SequentialContainer insertTop (Item)
insert (Item, position)
Chia sẻ cài đặt: Factoring (phân chia)
w Hỗ trợ khả năng dùng lại khi cài đặt class khác
w Không thể dùng nếu class bạn muốn “dùng
lại” không thể thay đổi
Trang 18List insertBottom (Item)
removeBottom () insert (Item, position) remove (position)
Stack push (Item)
List insertTop (Item)
insertBottom (Item)
removeTop ()
removeBottom ()
insert (Item, position)
Chia sẻ cài đặt: Delegation (đại diện)
w Hổ trợ khả năng dùng lại khi cài đặt class khác
w Không thể dùng nếu class bạn muốn “dùng
lại” không thể thay đổi
Trang 19List insertBottom (Item) removeBottom () insert (Item, position) remove (position) insertTop (Item)
push() and pop() có thể truy cập đến các method của List nhưng các thể hiện của Stack thì không
Quan hệ kế thừa dạng <<implementation>>
w Các public operation, attribute và relationship của tổ tiên không nhìn thấy được bởi các client của các thể hiện của các class con cháu
w Các class con cháu phải định nghĩa các truy
cập đến operations, attributes, và relationships của tổ tiên
Trang 20Sử dụng quan hệ tổng quát hóa
w Chia sẻ các thuộc tính và hành vi chung
w Chia sẻ cài đặt
w Cài đặt cơ chế Polymorphism
Trang 21Manufacturer A Manufacturer B Manufacturer C
Nhắc lại: Polymorphism là gì ?
w Khả năng che dấu nhiều cài đặt bên dưới một interface duy nhất
Trang 22Cài đặt Polymorphism
Animal talk ()
if animal = “Lion” then
do the Lion talk else if animal = “Tiger” then
do the Tiger talk end
do the Animal talk
Trang 23So sánh Interface và Generalization
w 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
w 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
w 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
Trang 24Dùng QH tổng quát hóa để cài Polymorphism
w Chỉ cung cấp interface cho các class con cháu?
§ Thiết kế tổ tiên như một abstract class
§ Mọi method cài đặt ở các class con cháu
w Cung cấp interface và behavior mặc định cho các
class con cháu?
§ Thiết kế tổ tiên như một concrete class với các
method mặc định
§ Cho phép dùng các polymorphic operation
w Cung cấp interface và behavior bắt buộc cho các
class con cháu?
§ Thiết kế tổ tiên là concrete class
Trang 25Sử dụng quan hệ tổng quát hóa
w Chia sẻ các thuộc tính và hành vi chung
w Chia sẻ cài đặt
w Cài đặt cơ chế Metamorphosis
Trang 26Metamorphosis tồn tại trong thể giới thực
Metamorphosis là gì?
w 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
§ Xem thêm Webster’s New World Dictionary,
Simon & Schuster, Inc., 1979
Trang 27FulltimeStudent ParttimeStudent
Trang 28Chuyện gì xảy ra nếu một part-time student trở thành full-time
student?
FulltimeStudent
Student name address
studentID
gradDate
ParttimeStudent
maxNumCourses
Một hướng tiếp cận Modeling Metamorphosis
w Có thể tạo một quan hệ tổng quát hóa
Trang 291 1 Classification
ParttimeClassification
Student name address
studentID
FulltimeClassification FulltimeStudent
Student name address
studentID
ParttimeStudent
Một hướng tiếp cận khác
w Quan hệ kế thừa có thể dùng để mô hình hóa cấu trúc, hành vi và quan hệ chung và tạo quan hệ với phần “thay đổi”
Trang 30Một hướng tiếp cận khác (tt)
w Metamorphosis được hoàn tất bởi object “nói chuyện với” phần “thay đổi”
Trang 311 1
0 1 1 0 1
Classification 1
Metamorphosis và tính mềm dẻo
w Kỹ thuật này thêm tính mềm dẻo cho mô hình
ParttimeClassification maxNumCourses
FulltimeClassification gradDate
Trang 32Bài tập: Định nghĩa Generalizations
w Hãy cho biết:
§ Tất cả các design class
w Hãy xác định:
§ Tât cả các tinh chỉnh liên quan đên generalizations có sẵn
§ Mọi ứng dụng generalization mới
• Kiểm tra là đã xem xétmọi metamorphosis
w Xây dựng các lược đồ:
§ Class diagram chứa mọi quan hệ tổng quát hóa
mới (hay đã tính chỉnh) giữa các class Tinh chỉnh use-case realizations (optional)