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
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:
- bai_giang_lap_trinh_huong_doi_tuong_bai_12_bieu_do_lop.pdf