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

8/24/2011  
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.  
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  
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.  
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG  
Bài 12. Biểu đồ lớp  
Mô hình tổng quát hóa (generalization) trên  
một biểu đồ lớp.  
2
4
6
Nội dung  
Nội dung  
1. Biểu đồ lớp (Class diagram)  
2. Liên kết (Association)  
3. Kết tập (Aggregation)  
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. Tổng quát hóa (Generalization)  
3
1.1. Lớp (Class)  
Biểu diễn thuộc tính  
attributeName : Type = Default  
Class_Name  
attribute1  
attribute2  
attribute3  
method1()  
method2()  
method3()  
5
1
8/24/2011  
Mô tả phương thức  
Phạm vi truy cập (Visibility)  
operationName([direction] parameter:class,...):returnType  
private  
public  
protected  
7
8
Phạm vi truy cập được biểu diễn như thế  
nào?  
Phạm vi (Scope)  
Class1  
- privateAttribute  
+ publicAttribute  
# protectedAttribute  
- privateOperation ()  
+ publicOPeration ()  
# protecteOperation ()  
Class1  
- classifierScopeAttr  
- instanceScopeAttr  
+ classifierScopeOp ()  
+ instanceScopeOp ()  
9
10  
Ví dụ: Scope  
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  
Student  
- name  
- address  
- studentID  
- 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  
11  
12  
2
8/24/2011  
Ví dụ Biểu đồ lớp  
Biểu đồ lớp (Class Diagram – CD)  
Khung nhìn tĩnh của hệ thống  
Có cách nào tốt hơn để tổ chức biểu đồ lớp?  
CloseRegistrationForm  
Schedule  
CloseRegistrationController  
- semester  
LoginForm  
RegistrationController  
+ open()  
+ is registration open?()  
+ close registration()  
+ close registration()  
+ commit()  
RegisterForCoursesForm  
+ select alternate()  
+ remove offering()  
+ level()  
Professor  
Schedule  
+ cancel()  
- name  
CloseRegistrationForm  
+ get cost()  
+ delete()  
- employeeID : UniqueId  
- hireDate  
CloseRegistrationController  
Student  
+ submit()  
+ save()  
+ any conflicts?()  
+ create with offerings()  
+ update with new selections()  
- status  
- discipline  
- maxLoad  
+ get tuition()  
+ add schedule()  
+ get schedule()  
+ delete schedule()  
+ has pre-requisites()  
Professor  
Student  
Course  
CourseOffering  
+ submitFinalGrade()  
+ acceptCourseOffering()  
+ setMaxLoad()  
CourseCatalogSystem  
+ takeSabbatical()  
+ teachClass()  
BillingSystem  
13  
15  
17  
14  
Gói (package)  
Ví dụ: Registration Package  
Registration  
CloseRegistrationController  
CloseRegistrationForm  
University  
Artifacts  
RegisterForCoursesForm  
RegistrationController  
16  
Nội dung  
Liên kết (association) là gì?  
Mối liên hệ ngữ nghĩa giữa hai hay nhiều lớp  
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)  
Student  
Schedule  
Course  
18  
3
8/24/2011  
Bội số quan hệ (Multiplicity)  
Biểu diễn bội số quan hệ  
instructor  
Professor  
CourseOffering  
0..1  
0..*  
19  
21  
23  
20  
Ví dụ về bội số quan hệ  
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)  
1
RegisterForCoursesForm  
RegistrationController  
1
0..1  
0..1  
0..*  
1
Student  
Schedule  
CourseOffering  
0..*  
0..4  
22  
Kết tập (aggregation) là gì?  
Ví dụ về kết tập  
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)  
1
RegisterForCoursesForm  
RegistrationController  
0..1  
1
0..1  
0..*  
1
Student  
Schedule  
CourseOffering  
1
0..*  
0..4  
Whole  
Part  
0..1  
24  
4
8/24/2011  
Cấu thành (Composition) là gì?  
Association, Aggregation and Composition  
Mối quan hệ giữa các lớp  
(relationship)  
Whole  
Whole  
Part  
Part  
Composition  
25  
27  
29  
26  
Ví dụ – Association  
Ví dụ – Aggregration vs. Composition  
public class StudentRegistrar {  
public StudentRegistrar (){  
(new RecordManager()).initialize();  
}
}
28  
Nội dung  
Tổng quát hóa (Generalization)  
Là mối liên hệ “là một loại” (“is a kind of”)  
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)  
30  
5
8/24/2011  
Lớp trừu tượng và lớp cụ thể  
(Abstract and Concrete Class)  
Ví dụ về Đơn kế thừa  
Ancestor  
Account  
- balance  
- name  
- number  
Superclass  
(parent)  
Discriminator  
Abstract class  
Abstract operation  
Animal  
+ withdraw()  
+ createStatement()  
+ communicate ()  
Generalization  
Relationship  
Communication  
There are no direct instances of Animal  
Lion  
Tiger  
Subclasses  
(children)  
Savings  
Checking  
+ communicate ()  
+ communicate ()  
All objects are either lions or tigers  
31  
33  
35  
32  
Descendents  
Ví dụ về Đa kế thừa  
Đa hình (Polymorphism) là gì?  
FlyingThing  
Animal  
Multiple Inheritance  
Manufacturer B  
Airplane  
Helicopter  
Wolf  
Horse  
Manufacturer C  
Manufacturer A  
OO Principle:  
Encapsulation  
Remote Control  
34  
Tổng quát hóa: Thực thi đa hình  
Animal  
+ communicate ()  
Lion  
Tiger  
+ communicate ()  
+ communicate ()  
6
pdf 6 trang baolam 28/04/2022 8660
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_bai_12_bieu_do_lop.pdf