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”)
6 trang |
Chia sẻ: hachi492 | Ngày: 07/01/2022 | Lượt xem: 366 | Lượt tải: 0
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:
- giao_trinh_lap_trinh_huong_doi_tuong_bai_12_bieu_do_lop.pdf