Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp - Nguyễn Thị Thu Trang
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 Một lớp sử dụng lớp khác
n
n Lời gọi phương thức của đối tượng thuộc lớp này trong lớp
n
Hợp thành (Composition)
kia
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 University chứa (own) nhiều Department
n 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ếu hủy University:
n
Các phòng ban cũng không còn tồn tại
Nhưng các Professor trong các Department vẫn còn tồn tại
(Generalization)
n
n 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
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 - Nguyễn Thị Thu Trang", để 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_nguye.pdf

