Gio trnh Phn tch v thit k hng

  • Slides: 131
Download presentation
Giáo trình Phân tích và thiết kế hướng đối tượng bằng UML Thiết kế

Giáo trình Phân tích và thiết kế hướng đối tượng bằng UML Thiết kế Class Dương Anh Đức 1

Mục tiêu w Tìm hiểu mục đích của bước thiết kế Class và vị

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 Thiết kế Class Dương Anh Đức 2

Vị trí của Thiết kế Class Architectural Analysis Architectural Design Architect Describe Concurrency Describe

Vị trí của Thiết kế Class Architectural Analysis Architectural Design Architect Describe Concurrency Describe Distribution Review the Architecture Reviewer Subsystem Design Use-Case Analysis Designer Review the Design Use-Case Design Class Design Thiết kế Class Dương Anh Đức 3 Design Reviewer

Tổng quan về Class Design Guidelines Architecture Document Design Classes Class Design Use-Case Realization

Tổng quan về Class Design Guidelines Architecture Document Design Classes Class Design Use-Case Realization Design Model Thiết kế Class Dương Anh Đức Supplementary Specifications 4 Design Classes

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 5

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 6

Các khảo sát khi thiết kế Class w Class stereotype § Boundary § Entity

Các khảo sát khi thiết kế Class w Class stereotype § Boundary § Entity § Control w Các design pattern khả dụng w 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 ? w Nếu nhiều class đơn giản. Nghĩa là mỗi

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 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 ! Thiết kế Class Dương Anh Đức 8

Thiết kế các Boundary Class w Các User interface (UI) boundary class § Công

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 Main. Window Sub. Window Button Drop. Down. List Main. Form Thiết kế Class Dương Anh Đức 9

Thiết kế các Entity Class w Các Entity object thường thụ động và persistent

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 Analysis Design << entity >> Fat. Class - transient. Bookeeping + commonly. Used. Att 1 + commonly. Used. Att 2 + rarely. Used. Att 3 + rarely. Used. Att 4 + get. Commonly. Used. Att 1() + get. Commonly. Used. Att 2() + get. Rarely. Used. Att 3() + get. Rarely. Used. Att 4() 1 Fat. Class. Data. Helper + commonly. Used. Att 1 + commonly. Used. Att 2 Thiết kế Class Dương Anh Đức 10 1 Fat. Class. Lazy. Data. Helper + rarely. Used. Att 3 + rarely. Used. Att 4

Thiết kế Control Class w Chuyện gì xảy ra với các Control Class? §

Thiế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 § Transaction management Thiết kế Class Dương Anh Đức 11

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 12

Xác định Persistent Class w Mọi thể hiện của class đều đòi hỏi phải

Xác định Persistent Class w 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 Analysis Design Implementation Class Mechanism (Conceptual) (Concrete) (Actual) Legacy Data Course Persistency RDBMS JDBC to Ingres New Data Student Thiết kế Class Dương Anh Đức Persistency OODBMS 13 Object. Store

Database Design Preview w Chiến lược Persistence phải nhất quán w Ở đây, nhớ

Database Design Preview w Chiến lược Persistence phải nhất quán w Ở đây, nhớ rằng các class đều persistent Class Designer Database Designer Data Model Thiết kế Class Dương Anh Đức 14

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 15

Định nghĩa các Operation w Mục đích § Ánh xạ các nhiệm vụ đã

Định nghĩa các Operation w 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 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 Thiết kế Class Dương Anh Đức 16

Nhắc lại: Operation là gì ? Course. Offering Class Operation Thiết kế Class Dương

Nhắc lại: Operation là gì ? Course. Offering Class Operation Thiết kế Class Dương Anh Đức add. Student delete. Student get. Start. Time get. End. Time 17

Operation: Tìm chúng ở đâu? w Các thông điệp trong các interaction diagram :

Operation: Tìm chúng ở đâu? w Các thông điệp trong các interaction diagram : Class. A : Class. B : Class. A // Perform responsibility perform. Responsibility(): result 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, … Thiết kế Class Dương Anh Đức : Class. B 18

Đặt tên và mô tả các Operation w Các tên thích hợp cho operation

Đặ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 § operation. Name(parameter : class, . . ) : return. Type w Cung cấp một mô tả ngắn, bao gồm ý nghĩa của tất cả các tham số Thiết kế Class Dương Anh Đức 19

Guidelines: Thiết kế Operation Signatures w Khi thiết kế operation signatures phải bảo đảm

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” Thiết kế Class Dương Anh Đức 20

Phát hiện Additional Classes và Relationships Class. A Class 2 op 1(var 1: Class

Phát hiện Additional Classes và Relationships Class. A Class 2 op 1(var 1: Class 2): Class 3 Additional classes và relationships có thể được thêm vào để hỗ trợ signature Thiết kế Class Dương Anh Đức 21

Operation Visibility w Tính khả kiến được dùng để cung cấp tính đóng gói

Operation Visibility w Tính khả kiến được dùng để cung cấp tính đóng gói w 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? w Các ký hiệu sau được dùng: § +

Ký hiệu tính khả kiến? w Các ký hiệu sau được dùng: § + Public access § # Protected access § - Private access Class - private. Attribute # protected. Attribute +public. Op() # protected. Op() - private. Op() Thiết kế Class Dương Anh Đức 23

Tầm vực w Xác định số lượng thể hiện của attribute / operation §

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 Class - classifier. Scope. Attribute - instance. Scope. Attribute classifier. Scope. Operation() instance. Scope. Operation() Thiết kế Class Dương Anh Đức 24

Ví dụ: Scope <<entity>> Student - name - address - student. ID - next.

Ví dụ: Scope <<entity>> Student - name - address - student. ID - next. Avail. ID : int + add. Schedule(the. Schedule : Schedule, for. Semester : Semester) + get. Schedule(for. Semester : Semester) : Schedule + has. Prerequisites(for. Course. Offering : Course. Offering) : boolean # passed(the. Course. Offering : Course. Offering) : boolean + get. Next. Avail. ID() : int Thiết kế Class Dương Anh Đức 25

Utility Classes w Thế nào là một Utility Class? § Utility là một class

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 <<utility>> Math. Functions Thiết kế Class Dương Anh Đức 26

Ví dụ: Utility Classes <<utility>> Math. Pack -random. Seed : long = 0 -pi

Ví dụ: Utility Classes <<utility>> Math. Pack -random. Seed : long = 0 -pi : double = 3. 14159265358979 +sin (angle : double) : double +cos (angle : double) : double +random() : double Thiết kế Class Dương Anh Đức 27

Ví dụ: Định nghĩa các Operation <<control>> Registration. Controller 0. . * (from Registration)

Ví dụ: Định nghĩa các Operation <<control>> Registration. Controller 0. . * (from Registration) + submit. Schedule() + save. Schedule() + get. Course. Offerings() : Course. Offering. List + get. Current. Schedule(for. Student : Student, for. Semester : Semester) : Schedule + delete. Current. Schedule() <<class>> + new(for. Student : string) + get. Student(with. ID : string) : Student <<Interface>> ICourse. Catalog. System 1 (from External System Interfaces) + get. Course. Offerings() + initialize() +current. Schedule 0. . 1 <<entity>> Schedule (from University Artifacts) 0. . * +registrant 0. . 1 <<entity>> Student. 1 +alternate. Courses +primary. Courses (from University Artifacts) + get. Tuition() : double + add. Schedule(the. Schedule : Schedule) + get. Schedule(for. Semester : Semester) : Schedule + delete. Schedule(for. Semester : Semester) + has. Prerequisites(for. Course. Offering : Course. Offering) : boolean # passed(the. Course. Offering : Course. Offering) : boolean <<class>> + get. Next. Avail. ID() : int + get. Student. ID() : int + get. Name() : string + get. Address() : string Thiết kế Class Dương Anh Đức 0. . 2 0. . 4 <<entity>> Course. Offering (from University Artifacts) 28

Bài tập: Định nghĩa các Operation w Hãy cho biết: § Các architectural layers,

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ể (còn tiếp) Thiết kế Class Dương Anh Đức 29

Bài tập: Define Operations (tt. ) w Với các design class, hãy xác định:

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 (còn tiếp) Thiết kế Class Dương Anh Đức 30

Bài tập: Định nghĩa các Operation (tt. ) w Xây dựng lược đồ sau:

Bà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ệ Thiết kế Class Dương Anh Đức 31

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 32

Nhắc lại: Package Element Visibility Package. A Class A 1 Class A 2 A

Nhắc lại: Package Element Visibility Package. A Class A 1 Class A 2 A B Class A 3 Chỉ có thể tham chiếu tới các public class từ bên ngoài package chứa nó Package. B +Class B 1 -Class B 2 Public visibility Private visibility OO Principle: Encapsulation Thiết kế Class Dương Anh Đức 33

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 34

Định nghĩa các Method w Method là gì ? § Mô tả cài đặt

Định nghĩa các Method w Method là gì ? § Mô tả cài đặt của operation w Mục đích § Định nghĩa các khía cạnh đặc biệt của operation implementation 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ệ Thiết kế Class Dương Anh Đức 35

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 36

Định nghĩa các trạng thái w Mục đích § Thiết kế ảnh hưổng của

Đị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? Thiết kế Class Dương Anh Đức 37

Statechart là gì? w Là 1 đồ thị có hướng với các node là

Statechart là gì? w 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 w Mô tả lịch sử đời sống của đối tượng State Event State Name event(args) [guard condition] / operation(args) ^target. send. Event(args) state. Var : type = value entry/ entry action do/ activity exit/ exit action Activity Thiết kế Class Dương Anh Đức Transition 38

Các trạng thái đặc biệt w Trang thái bắt đầu (Initial state) § Là

Các trạng thái đặc biệt w 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 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 § Optional § Có thể có nhiều Thiết kế Class Dương Anh Đức 39 Final state

Qui trình suy dẫn ra Statecharts w w Xác định và định nghĩa các

Qui trình suy dẫn ra Statecharts w w Xác định và định nghĩa các trạng thái Xác định các event Xác định các transition (hồi đáp lại các event) Thêm các activity và các action Thiết kế Class Dương Anh Đức 40

Xác định và định nghĩa các trạng thái w Significant, dynamic attributes Số sinh

Xác định và định nghĩa các trạng thái w Significant, dynamic attributes Số sinh viên tối đa trong 1 lớp là 100 num. Students < 100 num. Students > = 100 Open Closed w Sự tồn tại và không tồn tại của các link Professor 0. . 1 0. . * Link to Professor Exists Assigned Course. Offering Thiết kế Class Dương Anh Đức 41 Link to Professor Doesn’t Exist Unassigned

Xác định các Event w Xem xét các class interface operation <<entity>> Course. Offering

Xác định các Event w Xem xét các class interface operation <<entity>> Course. Offering + add. Professor() + remove. Professor() 0. . * 0. . 1 +instructor <<entity>> Professor Events: add. Professor, remove. Professor Thiết kế Class Dương Anh Đức 42

Xác định các Transition w Với mỗi trạng thái, xác định events nào gây

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 <<entity>> Course. Offering + add. Professor() + remove. Professor() 0. . * 0. . 1 +instructor <<entity>> Professor Unassigned add. Professor remove. Professor Assigned Thiết kế Class Dương Anh Đức 43

Thêm Activities và Actions w Activities § Kết hợp với một trạng thái §

Thêm Activities và Actions w Activities § 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 activity State A action event[ condition ] / action State B do: activity 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 Thiết kế Class Dương Anh Đức 44 State C entry: action

Gửi Events w Một event có thể gây ra việc gửi một event khác

Gửi Events w Một event có thể gây ra việc gửi một event khác w Một activity cùng có thể gửi event đến object khác State A event ^Target. Object. event State B do: ^Target. Object. event Thiết kế Class Dương Anh Đức 45

Ví dụ: Statechart add student / num. Students = num. Students + 1 /

Ví dụ: Statechart add student / num. Students = num. Students + 1 / num. Students = 0 remove student / num. Students = num. Students - 1 Unassigned close. Registration add. Professor cancel Cancelled do: Send cancellation notices close remove. Professor [ num. Students = 10 ] cancel Full close[ num. Students < 3 ] add student / num. Students = num. Students + 1 [ num. Students = 10 ] Assigned close. Registration [ has Professor assigned ] close. Registration[ num. Students >= 3 ] Committed do: Generate class roster remove student / num. Students = num. Students - 1 Thiết kế Class Dương Anh Đức close[ num. Students >= 3 ] 46

Ví dụ: Statechart với các trạng thái lồng nhau superstate / num. Students =

Ví dụ: Statechart với các trạng thái lồng nhau superstate / num. Students = 0 Open Unassigned Closed close. Registration Cancelled do: Send cancellation notices close cancel substate close[ num. Students < 3 ] Full remove a professor add a professor [ num. Students = 10 ] close. Registration [ has Professor assigned ] Assigned close. Registration[ num. Students >= 3 ] add student / num. Students = num. Students + 1 H close[ num. Students >= 3 ] remove student / num. Students = num. Students - 1 Thiết kế Class Dương Anh Đức 47 Committed do: Generate class roster

Những Object có Significant State? w Các Object có vai trò thể hiện rõ

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 Thiết kế Class Dương Anh Đức 48

Cách Statecharts gắn với phần còn lại? w Các Event biến thành các operation

Cá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 Open [num. Students = 10] Full Course. Offering add student / num. Students = num. Students + 1 /- num. Students + add. Student() (Stay tuned for derived attributes) Thiết kế Class Dương Anh Đức 49

Bài tập: Định nghĩa States (optional) w Hãy cho biết: § Tất cả cá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 Thiết kế Class Dương Anh Đức 50

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 51

Định nghĩa Attributes w Mục đích § Formalize definition of attributes w Những gì

Đị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 Thiết kế Class Dương Anh Đức 52

Nhắc lại: Thế nào là Attribute? Object Class Attribute Value : Course. Offering number

Nhắc lại: Thế nào là Attribute? Object Class Attribute Value : Course. Offering number = 101 start. Time = 900 end. Time = 1100 Course. Offering number start. Time end. Time : Course. Offering number = 104 start. Time = 1300 end. Time = 1500 Thiết kế Class Dương Anh Đức 53

Cách tìm ra các Attribute? w Khảo sát mô tả của các method w

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ì Thiết kế Class Dương Anh Đức 54

Biểu diễn Attribute w Mô tả name, type, và giá trị mặc định §

Biểu diễn Attribute w Mô tả name, type, và giá trị mặc định § attribute. Name : 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: ‘#’ Thiết kế Class Dương Anh Đức 55

Các Derived Attribute w Thế nào là derived attribute? § Một attribute mà giá

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 Thiết kế Class Dương Anh Đức 56

Ví dụ: Define Attributes <<Interface>> ICourse. Catalog. System (from External System Interfaces) <<control>> Registration.

Ví dụ: Define Attributes <<Interface>> ICourse. Catalog. System (from External System Interfaces) <<control>> Registration. Controller (from Registration) 0. . 1 +current. Schedule 0. . 1 <<entity>> Schedule (from University Artifacts) - semester : Semester 0. . * +registrant 0. . * +alternate. Courses +primary. Courses 0. . 1 <<entity>> Student. (from University Artifacts) 0. . 2 <<entity>> Course. Offering 1 (from University Artifacts) - name : string - address : string <<class>> - next. Avail. ID : int - student. ID : int - dateof. Birth : Date Thiết kế Class Dương Anh Đức - number : String = "100" - start. Time : Time - end. Time : Time - days : string /- num. Students : int = 0 57 0. . 4

Bài tập: Define Attributes (optional) w Hãy cho biết: § Các architectural layers, các

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ể (còn tiếp) Thiết kế Class Dương Anh Đức 58

Bài tập: Define Attributes (tt. ) w Với các design class hãy xác định:

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 (còn tiếp) Thiết kế Class Dương Anh Đức 59

Bài tập: Define Attributes (cont. ) w Xây dựng lược đồ: § VOPC class

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ệ Thiết kế Class Dương Anh Đức 60

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 61

Định nghĩa Dependency w Dependency là gì? § Là một loại quan hệ giữa

Định nghĩa Dependency w Dependency là gì? § Là một loại quan hệ giữa hai object Client Supplier 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 Thiết kế Class Dương Anh Đức 62

So sánh Dependency và Association w Association là quan hệ câu trúc w Dependency

So sánh Dependency và Association w 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ố Dependency § Tham chiếu toàn cục § Tham chiếu đến trường dữ liệu (Field) Association Supplier 1 Thiết kế Class Dương Anh Đức 63 Client Supplier 2

Local Variable Visibility w Operation op 1() chứa một biến cục bộ có kiểu

Local Variable Visibility w Operation op 1() chứa một biến cục bộ có kiểu Class. B Class. A op 1 () Class. B Thiết kế Class Dương Anh Đức 64

Parameter Visibility w Thể hiện của Class. B được truyền đến cho thể hiện

Parameter Visibility w Thể hiện của Class. B được truyền đến cho thể hiện của Class. A op 1 (param 1: Class. B) Class. B Thiết kế Class Dương Anh Đức 65

Global Visibility w Thể hiện của Class. Utility khả kiến với mọi dối tượng

Global Visibility w Thể hiện của Class. Utility khả kiến với mọi dối tượng vì nó là toàn cục (global) Class. A op 1 () Class. Utility utility. Op () Thiết kế Class Dương Anh Đức 66

Xác định Dependency w w Bám vào các quan hệ trong thế giới thực

Xác định Dependency w w Bám vào các quan hệ trong thế giới thực Bám váo các quan hệ yếu nhất (dependency) Quan hệ là “thường trực”? Dùng association (field visibility) 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 Chọn lựa nào đúng? Thiết kế Class Dương Anh Đức 67 CÒN TÙY

Ví dụ: Trước khi định nghĩa Dependency <<Interface>> ICourse. Catalog. System (from External System

Ví dụ: Trước khi định nghĩa Dependency <<Interface>> ICourse. Catalog. System (from External System Interfaces) + get. Course. Offerings(for. Semester : Semester) : Course. Offering. List 1 0. . * course. Catalog <<control>> Registration. Controller (from Registration) current. Schedule + // submit schedule() + // save schedule() + // create schedule with offerings() + // get. Course. Offerings(for. Semester) : Course. Offering. List 0. . 1 1 registrant 0. . 4 <<entity>> Course. Offering (from University Artifacts) - number : String = "100" - start. Time : Time - end. Time : Time - days : Enum <<entity>> Student (from University Artifacts) + add. Schedule(the. Schedule : Schedule, for. Semester : Semester) + get. Schedule(for. Semester : Semester) : Schedule + has. Prerequisites(for. Course. Offering : Course. Offering) : boolean # passed(the. Course. Offering : Course. Offering) : boolean Thiết kế Class Dương Anh Đức 0. . 1 + submit() + // save() # any conflicts? () + // create with offerings() 0. . * alternate. Courses primary. Courses 0. . 2 0. . 1 - name - address - Student. ID : int <<entity>> Schedule (from University Artifacts) - semester + add. Student(student. Schedule : Schedule) + remove. Student(student. Schedule : Schedule) + new() + set. Data() 68

Ví dụ: Sau khi định nghĩa Dependency <<Interface>> ICourse. Catalog. System (from External System

Ví dụ: Sau khi định nghĩa Dependency <<Interface>> ICourse. Catalog. System (from External System Interfaces) + get. Course. Offerings(for. Semester : Semester) : Course. Offering. List Global visibility <<control>> Registration. Controller (from Registration) current. Schedule + // submit schedule() + // save schedule() + // create schedule with offerings() + // get. Course. Offerings(for. Semester) : Course. Offering. List 0. . 1 + submit() + // save() # any conflicts? () + // create with offerings() 0. . * alternate. Courses primary. Courses 0. . 1 Field visibility registrant 1 0. . 2 0. . 1 - name - address - Student. ID : int 0. . 4 <<entity>> Course. Offering (from University Artifacts) - number : String = "100" - start. Time : Time - end. Time : Time - days : Enum <<entity>> Student (from University Artifacts) + add. Schedule(the. Schedule : Schedule, for. Semester : Semester) + get. Schedule(for. Semester : Semester) : Schedule + has. Prerequisites(for. Course. Offering : Course. Offering) : boolean # passed(the. Course. Offering : Course. Offering) : boolean Thiết kế Class Dương Anh Đức <<entity>> Schedule (from University Artifacts) - semester + add. Student(student. Schedule : Schedule) + remove. Student(student. Schedule : Schedule) + new() + set. Data() 69 Parameter visibility Field visibility

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 70

Định nghĩa Associations w Mục đích § Tinh chỉnh các association còn lại w

Đị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) Thiết kế Class Dương Anh Đức 71

Nhắc lại: Composition là gì ? w Là một dạng của aggregation với tính

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ể” Part Whole Aggregation Thiết kế Class Dương Anh Đức 72

Aggregation: Shared hay không shared w Shared Aggregation Bản số > 1 Whole 1.

Aggregation: Shared hay không shared w Shared Aggregation Bản số > 1 Whole 1. . * 0. . * Part w Non-shared Aggregation Bản số = 1 Whole 1 0. . * Bản số = 1 Part Whole 1 0. . * Part Composition Theo định nghĩa, composition là non-shared aggregation Thiết kế Class Dương Anh Đức 73

Aggregation hay Composition? w Xem xét § Chu kỳ sống của Class 1 và

Aggregation hay Composition? w Xem xét § Chu kỳ sống của Class 1 và Class 2 Class 1 aggregation Class 1 Class 2 composition Thiết kế Class Dương Anh Đức 74 Class 2

Ví dụ: Composition Student Register. For. Courses. Form Thiết kế Class Dương Anh Đức

Ví dụ: Composition Student Register. For. Courses. Form Thiết kế Class Dương Anh Đức 1 Schedule 0. . * 1 1 75 Registration. Controller

Cân nhắc giữa Attributes và Composition w Dùng composition khi § Các thuộc tính

Câ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 Thiết kế Class Dương Anh Đức 76

Ví dụ: Attributes/Composition <<entity>> Student Attributes - name - address <<classifier scope>> - next.

Ví dụ: Attributes/Composition <<entity>> Student Attributes - name - address <<classifier scope>> - next. Avail. ID : int - Student. ID : int - dateof. Birth : Date <<entity>> Schedule + add. Schedule() + get. Schedule() + delete schedule() + has. Prerequisites() # passed() 1 0. . * - Semester + submit() + // save() # any conflicts? () + // create with offerings() + new() + passed() Composition of separate class Thiết kế Class Dương Anh Đức 77

Chiều của quan hệ w Khảo sát các interaction diagram w Ngay cả khi

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 Schedule primary. Courses Course. Offering 0. . * 0. . 4 ? Schedule 0. . * Thiết kế Class Dương Anh Đức Schedule primary. Courses Course. Offering 0. . * 0. . 4 78 0. . 4

Ví dụ: Tinh chỉnh chiều quan hệ w Tổng số Schedule nhỏ, hay w

Ví 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ó Course. Offering xuất hiện trên đó Schedule 0. . * w Tổng số Course. Offering nhỏ, hay w Không bao giờ cần một list Course. Offering có Schedule xuất hiện trên đó Schedule 0. . 4 primary. Courses Course. Offering 0. . * 79 0. . 4 primary. Courses Course. Offering 0. . * w Tổng số Course. Offering và Schedule đều không nhỏ w Phải quan tâm đến cả 2 chiều Thiết kế Class Dương Anh Đức primary. Courses Course. Offering 0. . 4

Ví dụ: Thiết kế Association Class alternate. Courses 0. . * 0. . 2

Ví dụ: Thiết kế Association Class alternate. Courses 0. . * 0. . 2 primary. Courses Course. Offering Schedule 0. . 4 0. . * Primary. Schedule. Offering. Info - grade: char = I Design Decisions alternate. Courses 0. . * 0. . 2 Schedule 1 Thiết kế Class Dương Anh Đức Primary. Schedule. Offering. Info primary. Course. Offering. Info 0. . 4 - grade: char = I 80 Course. Offering 0. . * 1

Thiết kế bản số w Bản số = 1, hay = 0. . 1

Thiết kế bản số w 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 Professor Course. Offering instructor 0. . * 0. . 1 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 Course. Offering instructor 0. . * 0. . 1 Thiết kế Class Dương Anh Đức 81 Cần một container

Multiplicity Design Options w Mô hình hóa tường minh một container class Professor instructor

Multiplicity Design Options w Mô hình hóa tường minh một container class Professor instructor 0. . 1 Course. Offering <<entity>> Professor 0. . * Course. Offering. List +instructor 0. . 1 + new() + add() 1 0. . * <<entity>> Course. Offering w Ghi chú List Professor Course. Offering instructor 0. . * 0. . 1 Thiết kế Class Dương Anh Đức 82

Parameterized Class (template) là gì? w Là một class dùng để định nghĩa các

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, … Formal arguments Item Parameterized Class Thiết kế Class Dương Anh Đức List 83

Thể hiện của Parameterized Class Kết buộc tường minh Kết buộc ẩn Formal arguments

Thể hiện của Parameterized Class Kết buộc tường minh Kết buộc ẩn Formal arguments Parameterized Class Instantiated Class <actual arguments> 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>> Course. Offering. List 1 0.

Ví dụ: Thể hiện của Parameterized Class Trước <<entity>> Course. Offering. List 1 0. . * Sau Item List <Course. Offering> HAY <<bind>> <Course. Offering> Course. Offering. List Thiết kế Class Dương Anh Đức Course. Offering 85 Course. Offering

Multiplicity Design: Optionality w Nếu một link là tùy chọn, hãy cèn thêm một

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 Course. Offering Professor is. Teaching( ) : Boolean Thiết kế Class Dương Anh Đức 0. . 1 0. . * 86 has. Instructor( ) : Boolean

Bài tập: Đ/n Dependency và Association w Hãy cho biết: § Use-case realization của

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 Thiết kế Class Dương Anh Đức 87

Bài tập: Đ/n Dependenc và Association (tt. ) w Hãy xác định: § Chiều

Bà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ố Thiết kế Class Dương Anh Đức 88

Bài tập: Đ/n Dependency và Association (tt. ) w Xây dựng lược đồ §

Bà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ệ Thiết kế Class Dương Anh Đức 89

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 90

Định nghĩa quan hệ tổng quát hóa w Mục đích § Xác định các

Định nghĩa quan hệ tổng quát hóa w 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ả w 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 w Một class chi sẻ cấu trúc và hành vi của

Nhắ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” ancestor Account w Trong phân tích, ít khi dùng đến balance name number Superclass (parent) Withdraw() Create. Statement() Generalization Relationship Checking Subclasses Get. Interest() descendents Thiết kế Class Dương Anh Đức 92 Savings

Abstract và Concrete Class w Abstract class không có bất kỳ thể hiện nào

Abstract và Concrete Class w Abstract class không có bất kỳ thể hiện nào w Concrete classes có thể hiện (object) Animal Abstract class {abstract} Chuyên biệt hóa Abstract operation talk () {abstract} Communication Không có thể hiện của Animal Lion Tiger 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 w Một class có thể kế thừa từ nhiều

Nhắc lại: Đa kế thừa w Một class có thể kế thừa từ nhiều class Flying. Thing Animal multiple inheritance Airplane Helicopter Bird Wolf Horse 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 Tên của attribute hay operation bị trùng

Các vấn đề của đa kế thừa Tên của attribute hay operation bị trùng Flying. Thing color Animal color get. Color Lặp lại việc kế thừa Animate. Object color Flying. Thing Animal 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 w Complete (Hoàn chỉnh) §

Cá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 § Hỗ trợ đa kế thừa Thiết kế Class Dương Anh Đức 96

Ví dụ: Generalization Constraints Không hỗ trợ Asset đa kế thừa {disjoint} Real Estate

Ví dụ: Generalization Constraints Không hỗ trợ Asset đa kế thừa {disjoint} Real Estate Bank Account Security {disjoint, complete} Saving {disjoint} Stock Checking Kết thúc cây kế thừa Thiết kế Class Dương Anh Đức 97 Bond

Ví dụ: Generalization Constraints (tt. ) Hoã trôï ña keá thöøa Vehicle {overlapping} Land

Ví dụ: Generalization Constraints (tt. ) Hoã trôï ña keá thöøa Vehicle {overlapping} Land Vehicle Water Vehicle Amphibious Vehicle Thiết kế Class Dương Anh Đức 98

Chọn Generalization hay Aggregation w Rất dễ nhầm lẫm giữa Generalization và aggregation §

Chọn Generalization hay Aggregation w Rất dễ nhầm lẫm giữa Generalization và aggregation § Generalization biểu diễn quan hệ “là một” hay “dạng của” § Aggregation biểu diễn quan hệ “một bộ phận của” Window Scrollbar Có đúng không? Window. With. Scrollbar Thiết kế Class Dương Anh Đức 99

Chọn Generalization hay Aggregation Window Scrollbar Window. With. Scrollbar Window Một Window. With. Scrollbar

Chọn Generalization hay Aggregation Window Scrollbar Window. With. Scrollbar Window Một Window. With. Scrollbar “là một” Window Một Window. With. Scrollbar “chứa một” Scrollbar Window. With. Scrollbar 1 Thiết kế Class Dương Anh Đức 1 100

Sử dụng quan hệ tổng quát hóa w w Chia sẻ các thuộc tính

Sử dụng quan hệ tổng quát hóa w w Chia sẻ các thuộc tính và hành vi chung Chia sẻ cài đặt Cài đặt cơ chế Polymorphism Cài đặt cơ chế Metamorphosis Thiết kế Class Dương Anh Đức 101

Sử dụng quan hệ tổng quát hóa w w Chia sẻ các thuộc tính

Sử dụng quan hệ tổng quát hóa w w Chia sẻ các thuộc tính và hành vi chung Chia sẻ cài đặt Cài đặt cơ chế Polymorphism Cài đặt cơ chế Metamorphosis Thiết kế Class Dương Anh Đức 102

Chia sẻ các thuộc tính và hành vi chung w Tuân thủ qui tắc

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 List insert. Top (Item) insert. Bottom (Item) remove. Top () remove. Bottom () insert (Item, position) Animal talk () Lion talk () Tiger talk () Stack Các class trên có tuân thủ IS-A style of programming? Thiết kế Class Dương Anh Đức 103

Chia sẻ các thuộc tính và hành vi chung (tt) List Animal insert. Top

Chia sẻ các thuộc tính và hành vi chung (tt) List Animal insert. Top (Item) insert. Bottom (Item) remove. Top () remove. Bottom () insert (Item, position) talk () Lion talk () Tiger talk () Stack Thiết kế Class Dương Anh Đức 104

Sử dụng quan hệ tổng quát hóa w w Chia sẻ các thuộc tính

Sử dụng quan hệ tổng quát hóa w w Chia sẻ các thuộc tính và hành vi chung Chia sẻ cài đặt Cài đặt cơ chế Polymorphism Cài đặt cơ chế Metamorphosis Thiết kế Class Dương Anh Đức 105

Chia sẻ cài đặt: Factoring (phân chia) w Hỗ trợ khả năng dùng lại

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 List Sequential. Container insert. Top (Item) insert. Bottom (Item) remove. Top () remove. Bottom () insert (Item, position) insert. Top (Item) remove. Top () List insert. Bottom (Item) remove. Bottom () insert (Item, position) Stack Thiết kế Class Dương Anh Đức 106 Stack

Chia sẻ cài đặt: Delegation (đại diện) w Hổ trợ khả năng dùng lại

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 List insert. Top (Item) insert. Bottom (Item) remove. Top () remove. Bottom () insert (Item, position) List Stack push (Item) pop (): Item 1 Stack Thiết kế Class Dương Anh Đức 107 1 insert. Bottom (Item) remove. Bottom () insert (Item, position) remove (position)

Quan hệ kế thừa dạng <<implementation>> w Các public operation, attribute và relationship của

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 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 List insert. Bottom (Item) remove. Bottom () insert (Item, position) remove (position) insert. Top (Item) <<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 w w Chia sẻ các thuộc tính

Sử dụng quan hệ tổng quát hóa w w Chia sẻ các thuộc tính và hành vi chung Chia sẻ cài đặt Cài đặt cơ chế Polymorphism Cài đặt cơ chế Metamorphosis Thiết kế Class Dương Anh Đức 109

Nhắc lại: Polymorphism là gì ? w Khả năng che dấu nhiều cài đặt

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 Manufacturer A Manufacturer B OO Principle: Encapsulation Thiết kế Class Dương Anh Đức 110 Manufacturer C

Cài đặt Polymorphism Animal talk () Lion Tiger talk () Không có Polymorphism Có

Cài đặt Polymorphism Animal talk () Lion Tiger talk () Không có Polymorphism Có Polymorphism if animal = “Lion” then do the Lion talk else if animal = “Tiger” then do the Tiger talk end Thiết kế Class Dương Anh Đức do the Animal talk 111

So sánh Interface và Generalization w Các Interface hỗ trợ biểu diễn độc lập

So 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 § Interfaces thường dùng để đặc tả việc tái sử dụng các hành vi w 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 w Chỉ cung cấp interface

Dùng quan hệ 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 § Không cho phép các polymorphic operation Thiết kế Class Dương Anh Đức 113

Sử dụng quan hệ tổng quát hóa w w Chia sẻ các thuộc tính

Sử dụng quan hệ tổng quát hóa w w Chia sẻ các thuộc tính và hành vi chung Chia sẻ cài đặt Cài đặt cơ chế Polymorphism Cài đặt cơ chế Metamorphosis Thiết kế Class Dương Anh Đức 114

Metamorphosis là gì? w Metamorphosis § 1. Một thay đổi trong hình dạng, cấu

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 Metamorphosis tồn tại trong thể giới thực Làm sao mô hình hóa chúng? Thiết kế Class Dương Anh Đức 115

Ví dụ: Metamorphosis w Trong trường đại học, có full time students và part

Ví dụ: Metamorphosis w Trong trường đại học, có full time students và part time students § Full time students có ngày tốt nghiệp dự kiến còn part time students lại không § Part time students có thể đăng ký học tối đa 3 môn trong khi full time students không bị giới hạn Fulltime. Student Parttime. Student name address student. ID grad. Date name address student. ID max. Num. Courses Thiết kế Class Dương Anh Đức 116

Một hướng tiếp cận Modeling Metamorphosis w Có thể tạo một quan hệ tổng

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 Student Chuyện gì xảy ra nếu một part-time student trở thành full-time student? name address student. ID Thiết kế Class Dương Anh Đức Parttime. Student Fulltime. Student max. Num. Courses grad. Date 117

Một hướng tiếp cận khác w Quan hệ kế thừa có thể dùng để

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” Student name address 1 1 Classification student. ID Parttime. Student Fulltime. Classification max. Num. Courses grad. Date Thiết kế Class Dương Anh Đức 118 Parttime. Classification max. Num. Courses

Một hướng tiếp cận khác (tt) w Metamorphosis được hoàn tất bởi object “nói

Mộ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” : Student Manager : Student : Parttime Classification change to full time delete create Thiết kế Class Dương Anh Đức 119 : Fulltime Classification

Metamorphosis và tính mềm dẻo w Kỹ thuật này thêm tính mềm dẻo cho

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 Resident. Information dorm room. Key. ID 0. . 1 1 Student name address student. ID 1 1 Fulltime. Classification grad. Date Thiết kế Class Dương Anh Đức 120 Classification Parttime. Classification max. Num. Courses

Bài tập: Định nghĩa Generalizations w Hãy cho biết: § Tất cả các design

Bà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) Thiết kế Class Dương Anh Đức 121

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 122

Giải quyết đụng độ giữa các Use-Case w Nhiều use case có thể truy

Giải quyết đụng độ giữa các Use-Case w Nhiều use case có thể truy cập riêng rẽ đến các design object w 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 w 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 w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints 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 Student Persistency,

Xử lý các yêu cầu phi chức năng nói chung Analysis Class Student Persistency, Security Schedule Persistency, Security Course. Offering Persistency, Legacy Interface Course Persistency, Legacy Interface Registration. Controller Distribution Analysis Design Implementation Mechanism (Conceptual) (Concrete) (Actual) Legacy Data Persistency RDBMS New Data Some Design Class JDBC Design Guidelines Object. Store OODBMS Distribution Analysis Thiết kế Class Dương Anh Đức Remote Method Invocation (RMI) Design Analysis Mechanism(s) Java 1. 2 from Sun Implementation 125

Các bước thiết kế Class w w w w Tạo các Design Class ban

Các bước thiết kế Class w w w w Tạo các Design Class ban đầu Xác định các Persistent Class Định nghĩa các Operation Định nghĩa Class Visibility Định nghĩa các Method Định nghĩa các trạng thái Định nghĩa các thuộc tính Định nghĩa các phụ thuộc Định nghĩa các mỗi kết hợp Định nghĩa các quan hệ tổng quát hóa Giải quyết đụng độ giữa các Use-Case Xử lý các yêu cầu phi chức năng nói chung Checkpoints Thiết kế Class Dương Anh Đức 126

Checkpoints: Các Class w w w w Tên của mỗi class có phản ánh

Checkpoints: Các Class w w w w 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 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 w Các operation có dễ hiểu? w Các mô tả trạng thái

Checkpoints: Operations w Các operation có dễ hiểu? w Các mô tả trạng thái của class và hành vi của các object của nó có chính xác? w Class có thực hiện đúng hành vi yêu cầu nó? w Bạn đã các định các tham số đúng chưa ? w Bạn đã gán đầy đủ operations cho các message của mỗi object? w Các đặc tả cài đặt (nếu có) của operation có chính xác ? w Các operation signature có phù hợp với ngôn ngữ lập trình cài đặt hệ thống? w Tất cả các operation đề cần cho use-case realization? Thiết kế Class Dương Anh Đức 128

Checkpoints: Attributes w Mỗi attribute biểu diễn một khái niệm đơn? w Tên của

Checkpoints: Attributes w Mỗi attribute biểu diễn một khái niệm đơn? w Tên của các attribute có gợi nhớ? w Tất cả các attribute là cần thiết cho các use-case realization? Thiết kế Class Dương Anh Đức 129

Checkpoints: Relationships w Tên của role gợi nhớ? w Bản số của các relationship

Checkpoints: Relationships w Tên của role gợi nhớ? w Bản số của các relationship có chính xác? Thiết kế Class Dương Anh Đức 130

Nhắc lại: Class Design w w Mục đích của Class Design là gì? Các

Nhắc lại: Class Design w w Mục đích của Class Design là gì? Các class được tinh chỉnh bằng cách nào? Các statechart được tạo cho mỗi class? Các component chính của statechart là gì ? Cho mô tả ngắn gọn về mỗi thứ. w Có những dạng tinh chỉnh relationship nào? w Sự khác nhau giữa association và dependency? w Ta phải làm gì với operations và attributes? Thiết kế Class Dương Anh Đức 131