LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
ViỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Bài 12. Biểu đồ lớp
Mc đch
• Mô t khung nhn tnh ca h thng v cch đưa n
vo trong mt mô hnh.
• Minh ha cch đc v hiu mt biu đ lp.
• Mô hnh ha mi liên kt (association) v kt tp
(aggregation) v ch ra cch mô hnh chng vo biu
đ lp.
• Mô hnh tng qut ha (generalization) trên mt
biu đ lp.
2
Nội dung
1. Biu đ lp (Class diagram)
2. Liên kt (Association)
3. Kt tp (Aggregation)
4. Tng qut ha (Generalization)
3
1.1. Lp (Class)
• S dng hnh ch nht gm 3 thnh phn
▫ Tên lp
▫ Cc thuộc tnh
▫ Cc phương thc
Class_Name
attribute1
attribute2
attribute3
method1()
method2()
method3()
4
Biu din thuc tnh
• Ch ra tên, kiu và giá trị mặc định nu có
▫ attributeName : Type = Default
• Tuân theo quy ưc đặt tên ca ngôn ngữ cài đặt và ca dự
án.
• Kiu (type) nên là kiu dữ liu cơ bn trong ngôn ngữ
thực thi
▫ Kiu dữ liu có sẵn, kiu dữ liu người dùng định
nghĩa, hoặc lp tự định nghĩa.
5
Mô t phương thc
• Tên phương thc:
▫ Mô t kt qu
▫ Sử dụng góc nhìn ca đi tượng khách (client – đi
tưng gi)
▫ Nhất quán giữa các lp
• Chữ ký ca phương thc:
operationName([direction] parameter:class, ):returnType
▫ Direction: in (mặc định), out hoặc inout
6
public
protected
private
Phạm vi truy cp (Visibility)
• Phạm vi truy cp được sử dụng đ thực hin kh
năng đóng gói
7
Phạm vi truy cp đưc biểu diễn như
thế nào?
• Các ký hiu sau được sử dụng:
▫ + Public access
▫ # Protected access
▫ - Private access
Class1
- privateAttribute
+ publicAttribute
# protectedAttribute
- privateOperation ()
+ publicOPeration ()
# protecteOperation ()
8
Phạm vi (Scope)
• Xác định s lượng th hin ca thuc tính/thao
tác:
▫ Instance: Mt th hin cho mỗi th hin ca mỗi lp
▫ Classifier: Mt th hin cho tất c các th hin ca lp
• Phạm vi Classifier được ký hiu bằng cách gạch
dưi tên thuc tính/thao tác.
Class1
- classifierScopeAttr
- instanceScopeAttr
+ classifierScopeOp ()
+ instanceScopeOp ()
9
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
10
1.2. Biu đ lp l g?
• Biểu đ lp ch ra s tn tại ca cc lp v mi
quan h gia chng trong bn thiết kế logic ca
một h thng
▫
Ch ra cu trc tnh ca mô hnh như lp, cu trc bên
trong ca chng v mi quan h vi cc lp khc.
▫ Ch ra tt c hoc một phn cu trc lp ca một h
thng.
▫
Không đưa ra cc thông tin tạm thi.
•
Khung nhn tnh ca một h thng ch yếu h
tr cc yêu cu chc năng ca h thng
.
11
Biu đ lp (Class Diagram – CD)
• Khung nhn tnh ca h thng
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()
12
V d Biu đ lp
• C cch no tt hơn đ t chc biu đ lp?
CloseRegistrationForm
LoginForm
Professor
BillingSystem
CloseRegistrationController
RegisterForCoursesForm
Course
CourseCatalogSystem
Student
RegistrationController
CourseOffering
Schedule
14
Gi (package)
• Một cơ chế chung để t chc cc phn t thnh
nhm.
• Một phn t trong mô hnh c thể cha cc
phn t khc.
University
Artifacts
15
V d: Registration Package
Registration
CloseRegistrationForm
CloseRegistrationController
RegisterForCoursesForm RegistrationController
16
Nội dung
1. Biu đ lp (Class diagram)
2. Liên kt (Association)
3. Kt tp (Aggregation)
4. Tng qut ha (Generalization)
17
Liên kt (association) l g?
• Mi liên h ngữ ngha giữa hai hay nhiu lp ch ra
sự liên kt giữa cc th hin ca chng
• Mi quan h v mặt cấu trc ch ra cc đi tượng ca
lp ny c kt ni vi cc đi tượng ca lp khc.
18
CourseStudent Schedule
Bi s quan h (Multiplicity)
• Bi s quan h l s lượng th hin ca mt lp liên
quan ti MT th hin ca lp khc.
• Vi mỗi liên kt, c hai bi s quan h cho hai đu
ca liên kt.
▫ Vi mỗi đi tượng ca Professor, c nhiu Course
Offerings c th được dạy.
▫ Vi mỗi đi tượng ca Course Offering, c th c 1
hoặc 0 Professor ging dạy.
19
Professor CourseOffering
0 1 0 *0 1 0 *
instructor
Biu din bi s quan h
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
20
V d v bi s quan h
RegisterForCoursesForm
CourseOfferingSchedule
0 4
0 *
Student
0 *
1
RegistrationController
1
1
1
1
0 1
0 1
0 1
21
Nội dung
1. Biu đ lp (Class diagram)
2. Liên kt (Association)
3. Kt tp (Aggregation)
4. Tng qut ha (Generalization)
22
Kt tp (aggregation) l g?
• L mt dạng đặc bit ca liên kt mô hnh ha mi
quan h ton th-b phn (whole-part) giữa đi tượng
ton th v cc b phn ca n.
▫ Kt tp l mi quan h “l mt phn” (“is a part-of”).
• Bi s quan h được biu din ging như cc liên kt
khc
23
Part
Whole
0 1
1
V d v kt tp
RegisterForCoursesForm
CourseOfferingSchedule
0 4
0 *
Student
0 *
1
RegistrationController
1
1
1
1
0 1
0 1
0 1
24
Cu thnh (Composition) là gì?
• Mt dạng ca kết tp vi quyn sở hữu mạnh và
các vòng đời trùng khp gia hai lp
▫ Whole sở hữu Part, tạo và hy Part.
▫ Part bị bỏ đi khi Whole bị bỏ, Part không th tn tại
nu Whole không tn tại.
Whole
Composition
Part
PartWhole
25
Association, Aggregation and
Composition
• Mi quan h giữa cc lp
(relationship)
▫ Liên kt (Association)
Sử dụng (use-a)
▫ Kt tp (Aggregation)
Strong association
has-a/is-a-part
▫ Hợp thnh (Composition)
Strong aggregation
Share life-time
26