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

12/27/17  
Mục đích  
n Mô tả khung nhìn tĩnh của hệ thống và cách  
Bộ môn Công nghệ Phần mềm  
Viện CNTT & TT  
đưa nó vào trong một mô hình.  
Trường Đại học Bách Khoa Hà Nội  
n Minh họa cách đọc và hiểu một biểu đồ lớp.  
n 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  
n Mô hình tổng quát hóa (generalization) trên  
một biểu đồ lớp.  
2
Nội dung  
Nội dung  
1. Biểu đồ lớp (Class diagram)  
2. Liên kết (Association)  
1. Biểu đồ lớp (Class diagram)  
2. Liên kết (Association)  
3. Kết tập (Aggregation)  
3. Kết tập (Aggregation)  
4. Tổng quát hóa (Generalization)  
4. Tổng quát hóa (Generalization)  
3
4
1
12/27/17  
1.1. Lớp (Class)  
Biểu diễn thuộc tính  
n Sử dụng hình chữ nhật gồm 3 thành phần  
n Chỉ ra tên, kiểu và giá trị mặc định nếu có  
n
attributeName : Type = Default  
n
n
n
Tên lớp  
Các thuộc tính  
Các phương thức  
n Tuân theo quy ước đặt tên của ngôn ngữ cài  
Class_Name  
attribute1  
attribute2  
attribute3  
đặt và của dự án.  
n Kiểu (type) nên là kiểu dữ liệu cơ bản trong  
ngôn ngữ thực thi  
method1()  
method2()  
method3()  
n
Kiểu dữ liệu có sẵn, kiểu dữ liệu người dùng định  
nghĩa, hoặc lớp tự định nghĩa.  
5
6
Mô tả phương thức  
Phạm vi truy cập (Visibility)  
n Tên phương thức:  
n Phạm vi truy cập được sử dụng để thực hiện  
khả năng đóng gói  
n
Mô tả kết quả  
n
Sử dụng góc nhìn của đối tượng khách (client – đ  
ối tượng gọi)  
private  
n
Nhất quán giữa các lớp  
n Chữ ký của phương thức:  
operationName([direction] parameter:class,...):returnType  
public  
protected  
n
Direction: in (mặc định), out hoặc inout  
7
8
2
12/27/17  
Phạm vi truy cập được biểu diễn như thế  
nào?  
Phạm vi (Scope)  
n Các ký hiệu sau được sử dụng:  
n Xác định số lượng thể hiện của thuộc  
n
n
n
+ Public access  
tính/thao tác:  
# Protected access  
n
Instance: Một thể hiện cho mỗi thể hiện của mỗi lớp  
-
Private access  
n
Classifier: Một thể hiện cho tất cả các thể hiện của lớp  
Class1  
n Phạm vi Classifier được ký hiệu bằng cách  
- privateAttribute  
+ publicAttribute  
# protectedAttribute  
gạch dưới tên thuộc tính/thao tác.  
- privateOperation ()  
+ publicOPeration ()  
# protecteOperation ()  
Class1  
- classifierScopeAttr  
- instanceScopeAttr  
+ classifierScopeOp ()  
+ instanceScopeOp ()  
9
10  
Ví dụ: Scope  
1.2. Biểu đồ lớp là gì?  
n Biểu đồ lớp chỉ ra sự tồn tại của các lớp và m  
ối quan hệ giữa chúng trong bản thiết kế  
logic của một hệ thống  
Student  
n
Chỉ ra cấu trúc tĩnh của mô hình như lớp, cấu trúc bên  
- name  
- address  
trong của chúng và mối quan hệ với các lớp khác.  
- studentID  
- nextAvailID : int  
n
n
Chỉ ra tất cả hoặc một phần cấu trúc lớp của một hệ thố  
ng.  
Không đưa ra các thông tin tạm thời.  
+ addSchedule ([in] theSchedule : Schedule, [in] forSemester : Semester)  
+ getSchedule ([in] forSemester : Semester) : Schedule  
+ hasPrerequisites ([in] forCourseOffering : CourseOffering) : boolean  
# passed ([in] theCourseOffering : CourseOffering) : boolean  
+ getNextAvailID () : int  
n
Khung nhìn tĩnh của một hệ thống chủ yếu h  
ỗ trợ các yêu cầu chức năng của hệ thống  
.
11  
12  
3
12/27/17  
Biểu đồ lớp (Class Diagram – CD)  
Khi nào sử dụng biểu đồ lớp?  
n Từ vựng của hệ thống (Vocabulary)  
n Khung nhìn tĩnh của hệ thống  
n
Khi trừu tượng hóa một phần hoặc bên ngoài hoặc biên c  
ủa hệ thống.  
CloseRegistrationForm  
Schedule  
CloseRegistrationController  
- semester  
n
Chỉ ra kết quả trừu tượng hóa và trách nhiệm của chúng  
+ open()  
+ is registration open?()  
+ close registration()  
+ close registration()  
+ commit()  
n Cộng tác (Collaboration)  
+ select alternate()  
+ remove offering()  
+ level()  
n
Nhóm các lớp và các thành phần khác làm việc cùng  
nhau để thực hiện một công việc nào đó.  
Professor  
- name  
- employeeID : UniqueId  
- hireDate  
- status  
- discipline  
+ cancel()  
+ get cost()  
+ delete()  
Student  
n Lược đồ CSDL logic (Logical database  
+ submit()  
+ save()  
+ any conflicts?()  
+ create with offerings()  
+ update with new selections()  
+ get tuition()  
schema)  
+ add schedule()  
+ get schedule()  
+ delete schedule()  
+ has pre-requisites()  
- maxLoad  
n
Tương tự như bản thiết kế khái niệm cho CSDL  
+ submitFinalGrade()  
+ acceptCourseOffering()  
+ setMaxLoad()  
+ takeSabbatical()  
+ teachClass()  
n
Chứa các đối tượng cần lưu trữ lâu dài tức là cần lưu  
trong CSDL  
13  
14  
Ví dụ Biểu đồ lớp  
Gói (package)  
n Một cơ chế chung để tổ chức các phần tử th  
ành nhóm.  
n Có cách nào tốt hơn để tổ chức biểu đồ lớp?  
LoginForm  
RegistrationController  
n Một phần tử trong mô hình có thể chứa các  
phần tử khác.  
RegisterForCoursesForm  
CloseRegistrationForm  
Student  
Schedule  
CloseRegistrationController  
University  
Artifacts  
Professor  
Course  
CourseOffering  
CourseCatalogSystem  
BillingSystem  
15  
16  
4
12/27/17  
Ví dụ: Registration Package  
Nội dung  
1. Biểu đồ lớp (Class diagram)  
2. Liên kết (Association)  
3. Kết tập (Aggregation)  
Registration  
CloseRegistrationController  
CloseRegistrationForm  
4. Tổng quát hóa (Generalization)  
RegisterForCoursesForm  
RegistrationController  
17  
18  
Liên kết (association) là gì?  
Bội số quan hệ (Multiplicity)  
n Mối liên hệ ngữ nghĩa giữa hai hay nhiều lớp  
n Bội số quan hệ là số lượng thể hiện của một l  
chỉ ra sự liên kết giữa các thể hiện của chúng  
ớp liên quan tới MỘT thể hiện của lớp khác.  
n Mối quan hệ về mặt cấu trúc chỉ ra các đối tư  
ợng của lớp này có kết nối với các đối tượng  
của lớp khác.  
n Với mỗi liên kết, có hai bội số quan hệ cho  
hai đầu của liên kết.  
n
Với mỗi đối tượng của Professor, có nhiều Course  
Offerings có thể được dạy.  
n
Với mỗi đối tượng của Course Offering, có thể có  
1 hoặc 0 Professor giảng dạy.  
Student  
Schedule  
Course  
instructor  
Professor  
CourseOffering  
0..1  
0..*  
19  
20  
5
12/27/17  
Biểu diễn bội số quan hệ  
Ví dụ về bội số quan hệ  
Unspecified  
1
Exactly One  
1
RegisterForCoursesForm  
RegistrationController  
1
Zero or More  
0..*  
0..1  
Zero or More  
*
1..*  
One or More  
0..1  
0..*  
0..1  
Zero or One (optional value)  
1
Student  
Schedule  
CourseOffering  
2..4  
Specified Range  
0..*  
0..4  
Multiple, Disjoint Ranges  
2, 4..6  
21  
22  
Nội dung  
Kết tập (aggregation) là gì?  
n 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)  
giữa đối tượng toàn thể và các bộ phận của  
nó.  
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)  
n
Kết tập là mối quan hệ “là một phần” (“is a part-  
of”).  
n Bội số quan hệ được biểu diễn giống như các  
liên kết khác  
1
Whole  
Part  
0..1  
23  
24  
6
12/27/17  
Ví dụ về kết tập  
Cấu thành (Composition) là gì?  
n Một dạng của kết tập với quyền sở hữu mạnh  
và các vòng đời trùng khớp giữa hai lớp  
1
n
Whole sở hữu Part, tạo và hủy Part.  
RegisterForCoursesForm  
RegistrationController  
0..1  
1
n
Part bị bỏ đi khi Whole bị bỏ, Part không thể tồn tại nếu  
Whole không tồn tại.  
Part  
Part  
Whole  
Whole  
0..1  
1
0..*  
Student  
Schedule  
CourseOffering  
0..*  
0..4  
25  
Composition  
26  
Ví dụ – Association  
Association, Aggregation and Composition  
public class StudentRegistrar {  
n Mối quan hệ giữa các lớp  
public StudentRegistrar (){  
(relationship)  
(new RecordManager()).initialize();  
n
Liên kết (Association)  
}
}
n
Sử dụng (use-a)  
n
Kết tập (Aggregation)  
n
Strong association  
has-a/is-a-part  
n
n
Một lớp sử dụng lớp khác  
Lời gọi phương thức của đối tượng thuộc lớp này trong lớp  
kia  
n
n
Hợp thành (Composition)  
n
Strong aggregation  
Share life-time  
n
n
Thường được cài đặt bằng tham chiếu (nhưng không bắt bu  
ộc).  
27  
28  
7
12/27/17  
Nội dung  
Ví dụ – Aggregration vs. Composition  
n
n
University chứa (own) nhiều Department  
Mỗi Department có 1 số các Professor  
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  
n
n
Nếu hủy University:  
n
Các phòng ban cũng không còn tồn tại  
(Generalization)  
n
Nhưng các Professor trong các Department vẫn còn tồn tại  
Dấu hiệu khác:  
n
1 professor có thể làm trong nhiều Department  
n
1 Department chỉ thuộc về 1 University  
29  
30  
Lớp trừu tượng và lớp cụ thể  
(Abstract and Concrete Class)  
Tổng quát hóa (Generalization)  
n
Lớp trừu tượng không thể có đối tượng  
n Mối quan hệ giữa các lớp trong đó một lớp  
n
Chứa phương thức trừu tượng  
chia sẻ cấu trúc và/hoặc hành vi với một hoặ  
c nhiều lớp khác  
n
Chữ nghiêng  
n
Lớp cụ thể có thể có đối tượng  
n Xác định sự phân cấp về mức độ trừu tượng  
hóa trong đó lớp con kế thừa từ một hoặc  
nhiều lớp cha  
Discriminator  
Abstract class  
Animal  
Abstract operation  
+ communicate ()  
Communication  
There are no direct instances of Animal  
n
Đơn kế thừa (Single inheritance)  
Đa kế thừa (Multiple inheritance)  
n
Lion  
Tiger  
+ communicate ()  
n Là mối liên hệ “là một loại” (“is a kind of”)  
+ communicate ()  
All objects are either lions or tigers  
31  
32  
8
12/27/17  
Ví dụ về Đơn kế thừa  
Ví dụ về Đa kế thừa  
n Một lớp kế thừa từ MỘT lớp khác  
n Một lớp có thể kế thừa từ nhiều lớp khác  
Ancestor  
Account  
FlyingThing  
Animal  
- balance  
- name  
Multiple Inheritance  
Superclass  
(parent)  
- number  
+ withdraw()  
+ createStatement()  
Generalization  
Relationship  
Airplane  
Helicopter  
Bird  
Wolf  
Horse  
Sử dụng đa kế thừa chỉ khi cần thiết và luôn luôn phải c  
ẩn thận!  
Subclasses  
(children)  
Savings  
Checking  
33  
34  
Descendents  
Đa hình (Polymorphism) là gì?  
Tổng quát hóa: Thực thi đa hình  
Animal  
n Khả năng che giấu các thực thi khác nhau dư  
+ communicate ()  
ới một giao diện duy nhất.  
Lion  
Tiger  
+ communicate ()  
+ communicate ()  
Manufacturer B  
Manufacturer C  
Manufacturer A  
Without Polymorphism  
With Polymorphism  
Animal communicate  
if animal = “Lion” then  
Lion communicate  
else if animal = “Tiger” then  
Tiger communicate  
end  
OO Principle:  
Encapsulation  
Remote Control  
35  
36  
9
12/27/17  
Bài tập  
n A class diagram containing the following classes: Personal  
Planner Profile, Personal Planner Controller, Customer  
Profile, and Buyer Record.  
n Given:  
A set of classes and their relationships  
n Draw:  
A class diagram  
n
n Associations drawn using the following information:  
n
n
n
n
n
Each Personal Planner Profile object can be associated with up  
to one Personal Planner Controller object.  
n
Each Personal Planner Controller object must be related to one  
Personal Planner Profile.  
A Personal Planner Controller object can be associated with up  
to one Buyer Record and Customer Profile object.  
An instance of the Buyer Record class can be related to zero or  
one Personal Planner Controller.  
Zero or one Personal Planner Controller objects are associated  
with each Customer Profile instance.  
37  
38  
10  
pdf 10 trang yennguyen 26180 Free
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