Giáo trình Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp

Nội dung 1. Biểu đồ lớp (Class diagram) 2. Liên kết (Association) 3. Kết tập (Aggregation) 4. Tổng quát hóa (Generalization) Tổng quát hóa (Generalization)  Là mối liên hệ “là một loại” (“is a kind of”)

pdf6 trang | Chia sẻ: hachi492 | Ngày: 07/01/2022 | Lượt xem: 366 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Giáo trình Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
8/24/2011 1 Bộ môn Công nghệ Phần mềm Viện CNTT & TT Trường Đại học Bách Khoa Hà Nội LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 12. Biểu đồ lớp Mục đích  Mô tả khung nhìn tĩnh của hệ thống và cách đưa nó vào trong một mô hình.  Minh họa cách đọc và hiểu một biểu đồ lớp.  Mô hình hóa mối liên kết (association) và kết tập (aggregation) và chỉ ra cách mô hình chúng vào biểu đồ lớp.  Mô hình tổng quát hóa (generalization) trên một biểu đồ lớp. 2 Nội dung 1. Biểu đồ lớp (Class diagram) 2. Liên kết (Association) 3. Kết tập (Aggregation) 4. Tổng quát hóa (Generalization) 3 Nội dung 1. Biểu đồ lớp (Class diagram) 2. Liên kết (Association) 3. Kết tập (Aggregation) 4. Tổng quát hóa (Generalization) 4 1.1. Lớp (Class) Class_Name attribute1 attribute2 attribute3 method1() method2() method3() 5 Biểu diễn thuộc tính  attributeName : Type = Default 6 8/24/2011 2 Mô tả phương thức operationName([direction] parameter:class,...):returnType 7 public protected private Phạm vi truy cập (Visibility) 8 Phạm vi truy cập được biểu diễn như thế nào? 9 Class1 - privateAttribute + publicAttribute # protectedAttribute - privateOperation () + publicOPeration () # protecteOperation () Phạm vi (Scope) Class1 - classifierScopeAttr - instanceScopeAttr + classifierScopeOp () + instanceScopeOp () 10 Ví dụ: Scope Student - name - address - nextAvailID : int + addSchedule ([in] theSchedule : Schedule, [in] forSemester : Semester) + getSchedule ([in] forSemester : Semester) : Schedule + hasPrerequisites ([in] forCourseOffering : CourseOffering) : boolean # passed ([in] theCourseOffering : CourseOffering) : boolean + getNextAvailID () : int - studentID 11 1.2. Biểu đồ lớp là gì?  Biểu đồ lớp chỉ ra sự tồn tại của các lớp 12 8/24/2011 3 Biểu đồ lớp (Class Diagram – CD)  Khung nhìn tĩnh của hệ thống 13 CloseRegistrationForm + open() + close registration() Student + get tuition() + add schedule() + get schedule() + delete schedule() + has pre-requisites() Schedule - semester + commit() + select alternate() + remove offering() + level() + cancel() + get cost() + delete() + submit() + save() + any conflicts?() + create with offerings() + update with new selections() Professor - name - employeeID : UniqueId - hireDate - status - discipline - maxLoad + submitFinalGrade() + acceptCourseOffering() + setMaxLoad() + takeSabbatical() + teachClass() CloseRegistrationController + is registration open?() + close registration() Ví dụ Biểu đồ lớp  Có cách nào tốt hơn để tổ chức biểu đồ lớp? 14 CloseRegistrationForm LoginForm Professor BillingSystem CloseRegistrationController RegisterForCoursesForm Course CourseCatalogSystem Student RegistrationController CourseOffering Schedule Gói (package) University Artifacts 15 Ví dụ: Registration Package 16 Registration CloseRegistrationForm CloseRegistrationController RegisterForCoursesForm RegistrationController Nội dung 1. Biểu đồ lớp (Class diagram) 2. Liên kết (Association) 3. Kết tập (Aggregation) 4. Tổng quát hóa (Generalization) 17 Liên kết (association) là gì?  Mối liên hệ ngữ nghĩa giữa hai hay nhiều lớp 18 CourseStudent Schedule 8/24/2011 4 Bội số quan hệ (Multiplicity) 19 Professor CourseOffering 0..1 0..* instructor Biểu diễn bội số quan hệ 20 2..4 0..1 1..* 0..* 1 * 2, 4..6 Unspecified Exactly One Zero or More Zero or More Zero or One (optional value) One or More Specified Range Multiple, Disjoint Ranges Ví dụ về bội số quan hệ 21 RegisterForCoursesForm CourseOfferingSchedule 0..4 0..*Student 0..* 1 RegistrationController1 1 0..1 0..1 Nội dung 1. Biểu đồ lớp (Class diagram) 2. Liên kết (Association) 3. Kết tập (Aggregation) 4. Tổng quát hóa (Generalization) 22 Kết tập (aggregation) là gì?  Là một dạng đặc biệt của liên kết mô hình hóa mối quan hệ toàn thể-bộ phận (whole- part) 23 PartWhole 0..1 1 Ví dụ về kết tập 24 RegisterForCoursesForm CourseOfferingSchedule 0..4 0..*Student 0..* 1 RegistrationController1 1 0..1 0..1 8/24/2011 5 Cấu thành (Composition) là gì? Whole Composition Part PartWhole 25 Association, Aggregation and Composition  Mối quan hệ giữa các lớp (relationship) 26 Ví dụ – Association public class StudentRegistrar { public StudentRegistrar (){ (new RecordManager()).initialize(); } } 27 Ví dụ – Aggregration vs. Composition 28 Nội dung 1. Biểu đồ lớp (Class diagram) 2. Liên kết (Association) 3. Kết tập (Aggregation) 4. Tổng quát hóa (Generalization) 29 Tổng quát hóa (Generalization)  Là mối liên hệ “là một loại” (“is a kind of”) 30 8/24/2011 6 There are no direct instances of Animal Lion Tiger Animal + communicate () + communicate ()+ communicate () Lớp trừu tượng và lớp cụ thể (Abstract and Concrete Class) 31All objects are either lions or tigers Abstract class Abstract operation Communication Discriminator Ví dụ về Đơn kế thừa 32 CheckingSavings Superclass (parent) Subclasses (children) Generalization Relationship Descendents Ancestor Account - balance - name - number + withdraw() + createStatement() Ví dụ về Đa kế thừa 33 FlyingThing Animal HorseWolfBirdHelicopterAirplane Multiple Inheritance Manufacturer A Manufacturer B Manufacturer C OO Principle: Encapsulation Đa hình (Polymorphism) là gì? 34Remote Control Tổng quát hóa: Thực thi đa hình 35 Without Polymorphism if animal = “Lion” then Lion communicate else if animal = “Tiger” then Tiger communicate end With Polymorphism Animal communicate Lion Tiger Animal + communicate () + communicate ()+ communicate ()

Các file đính kèm theo tài liệu này:

  • pdfgiao_trinh_lap_trinh_huong_doi_tuong_bai_12_bieu_do_lop.pdf