SlideShare a Scribd company logo
LOGO 
Chương 4: Phân tích 
1 
GVLT: Phạm Thi Vương
LOGO 
Tài liệu tham khảo 
Bài giảng dựa chính trên bài giảng “Xây dựng phần mềm hướng đối tượng” - ThS Trần Minh Triết – ĐH KHTN 
Bài giảng “Phân tích và thiết kế hướng đối tượng” – TS Phạm Ngọc Nam – ĐH BK HN 
Bài giảng “Phân tích và thiết kế hướng đối tượng” – ThS Phạm Nguyễn Cương – ĐH KHTN 
…. 
2
LOGO 
www.themegallery.com 
Company Name 
Nội dung 
1. Sơ đồ lớp ở mức phân tích 
2. Sơ đồ lớp và 
Khả năng tiến hóa của hệ thống 
3. Sơ đồ trạng thái
LOGO 
www.themegallery.com 
Company Name 
Sơ đồ lớp ở mức phân tích 
1. Xác định các lớp đối tượng chính 
2. Xác định các thông tin 
và hành động/trách nhiệm của 
mỗi lớp đối tượng chính 
3. Xác định các quan hệ chính 
4. Xác định các lớp đối tượng phụ, 
các danh mục
LOGO 
Nội dung 
Sơ đồ lớp ở mức phân tích 
Xác định các lớp đối tượng chính 
Xác định các thông tin và hành động/trách nhiệm của mỗi lớp đối tượng chính 
Xác định các quan hệ chính 
Xác định các lớp đối tượng phụ, các danh mục 
Sơ đồ lớp và Khả năng tiến hóa của hệ thống 
Sơ đồ trạng thái 
Khái niệm và các ký hiệu 
•Trạng thái 
•Biến cố, điều kiện 
•Trạng thái đầu, trạng thái cuối 
•Superstate 
Áp dụng 
5
LOGO 
Một số khái niệm mở đầu 
Vấn đề: Mô tả lại bằng một ngôn ngữ nào đó (thường là các sơ đồ) nhằm diễn tả trực quan về vấn đề 
Phân tích: xây dựng mô hình Thế giới thực 
Phân tích theo hướng đối tượng: xây dựng các mô hình về các đối tượng của Thế giới thực 
6
LOGO 
Một số khái niệm mở đầu 
Một số loại Sơ đồ: 
Sơ đồ lớp đối tượng: Mô tả hệ thống các lớp đối tượng (thuộc tính, hành động) cùng với các quan hệ giữa chúng 
Sơ đồ trạng thái: Mô tả chu trình sống của đối tượng 
… 
7
LOGO 
Nhắc lại về hướng đối tượng 
8
LOGO 
Nhắc lại về hướng đối tượng 
9 
Tên class 
Tên class 
(Các) phương thức 
(Các) thuộc tính 
Một số ký hiệu 
Đối tượng:class 
thuộc tính = giá trị 
Đối tượng 
thuộc tính = giá trị
LOGO 
Public/Protected/Private 
10 
+ Thuộc tính/Phương thức public 
- Thuộc tính/Phương thức private 
# Thuộc tính/Phương thức protected 
Phương thức Public 
Phương thức Protected 
Phương thực 
Private 
Class 
- privateAttribute 
# protectedAttribute 
+publicOp() 
# protectedOp() 
- privateOp()
LOGO 
Tầm vực 
Xác định số lượng thể hiện của thuộc tính / phương thức 
11 
Class 
- classifierScopeAttribute 
classifierScopeOperation() 
- instanceScopeAttribute 
instanceScopeOperation()
LOGO 
Ví dụ 
12 
Student 
- name 
- address 
- nextAvailID : int 
+ addSchedule(theSchedule : Schedule, forSemester : Semester) 
+ getSchedule(forSemester : Semester) : Schedule 
+ hasPrerequisites(forCourseOffering : CourseOffering) : boolean 
# passed(theCourseOffering : CourseOffering) : boolean 
+ getNextAvailID() : int 
- studentID
LOGO 
Nhận xét 
13 
Tên class 
(Các) phương thức 
(Các) thuộc tính 
Bình thường: Class bình thường 
In nghiêng: Class thuần ảo 
Gạch dưới: Object (không phải class) 
Bình thường: Thuộc tính bình thường 
In nghiêng: không sử dụng 
Gạch dưới: Thuộc tính static 
Bình thường: Phương thức bình thường 
In nghiêng: Phương thức virtual 
Gạch dưới: Phương thức static
LOGO 
Ví dụ 
14 
CTamGiac# CDiemP1# CDiemP2# CDiemP3+ CTamGiac() + float DienTich() + float ChuVi() + void Ve() + ... CTuGiac# CDiemP1# CDiemP2# CDiemP3# CDiem P4+ CTuGiac() + float DienTich() + float ChuVi() + void Ve() + ... CEllipse# CDiemTam# floatA# floatB+ CEllipse() + float DienTich() + float ChuVi() + void Ve() + ... CHinhVe# int MaLoaiHinhVe+ float DienTich() + float ChuVi() + void Ve() + ...
LOGO 
Quan hệ giữa các lớp đối tượng 
Quan hệ kế thừa 
ClassB kế thừa từ ClassA 
ClassB là một trường hợp đặc biệt của ClassA 
ClassA là trường hợp tổng quát của ClassB 
15 
ClassAClassB
LOGO 
Quan hệ giữa các lớp đối tượng 
Quan hệ Association 
Hoặc 
•Trong ClassA có thuộc tính có kiểu là ClassB 
Hoặc 
•Trong ClassB có thuộc tính có kiểu là ClassA 
Nhận xét: Về mặt lập trình, thuộc tính có thể được lưu trữ dạng biến đơn, biến mảng, hay biến con trỏ 
Ví dụ:? 
16 
ClassAClassB
LOGO 
Quan hệ giữa các lớp đối tượng 
Quan hệ Aggregation 
Đã xác định được ClassA và ClassB có quan hệ Association với nhau 
Xác định rõ hơn: 
•Trong object của ClassA có chứa (trong phần thuộc tính) object của ClassB 
•ObjectX của ClassA bị hủy thì ObjectY của ClassB (bên trong ObjectX) vẫn có thể còn tồn tại 
Ví dụ:? 
17 
ClassAClassB
LOGO 
Quan hệ giữa các lớp đối tượng 
Quan hệ Composition 
 Đã xác định được ClassA và ClassB có quan 
hệ Association với nhau 
 Xác định rõ hơn: 
• Trong object của ClassA có chứa (trong phần 
thuộc tính) object của ClassB 
• ObjectX của ClassA bị hủy thì ObjectY của ClassB 
(bên trong ObjectX) không thể còn tồn tại 
 Ví dụ:? 
18 
ClassA ClassB
LOGO 
Quan hệ giữa các lớp đối tượng 
Chiều của quan hệ (Association, Aggregation, Composition) 
Nếu quan hệ là 1 chiều: đa số các lời gọi hàm được gọi theo đúng chiều của quan hệ 
Nếu quan hệ là 2 chiều: không vẽ mũi tên 
19 
ClassAClassB
LOGO 
Quan hệ giữa các lớp đối tượng 
Bản số - Multiplicity (Association, Aggregation, Composition) 
Ý nghĩa 
Ví dụ: 
•1 
•2 
•1..* 
•0..* 
•* 
•1, 3, 5..9 
20 
ClassAClassB11..*
LOGO 
Quan hệ giữa các lớp đối tượng 
Quan hệ Dependency 
 ClassA và ClassB không có quan hệ 
Association 
 ClassA “phụ thuộc” vào ClassB 
21 
ClassA ClassB 
class A 
{ 
void F(B x) 
{ 
… 
} 
}; 
class A 
{ 
B F() 
{ 
… 
} 
}; 
class A 
{ 
void F() 
{ 
B x; 
} 
}; 
Trong ClassA có 
sử dụng biến toàn 
cục (kiểu B), hoặc 
sử dụng phương 
thức/thuộc tính 
static của ClassB 
Tham số truyền vào Kết quả trả ra Biến cục bộ
LOGO 
Xây dựng sơ đồ lớp ở mức phân tích 
22
LOGO 
Lập danh sách các đối tượng 
Tiêu chuẩn nhận dạng đối tượng 
Định danh: Đối tượng phải có tên (thường là danh từ/ngữ danh từ) 
Chu trình sống: có thời điểm sinh ra, có khoảng thời gian hoạt động, có thời điểm chấm dứt 
Sự độc lập tương đối với các đối tượng khác 
… 
Đề nghị: 
Con người 
Vật thể 
Tổ chức 
Vật lý 
Không gian 
Thời gian… 
23
LOGO 
Lập danh sách các đối tượng 
Lập danh sách các đối tượng liên quan đến hệ thống 
24 
Đối tượng đề nghị 
Không là đối tượng 
Là đối tượng 
Được quan tâm 
Không được quan tâm 
Đối tượng chính 
Đối tượng phụ 
Tiêu chuẩn nhận dạng đối tượng: có rất nhiều trường phái
LOGO 
Ví dụ 
Ví dụ: Xét ngữ cảnh là 1 trường PTTH với phần mềm quản lý trường cấp 3: 
Danh sách đề nghị: 
Học sinh Tổ Bộ môn Số tiết 
Giáo viên BGH TKB 
Môn học Khối Bảng điểm 
Lớp Phụ huynh Phòng 
Học kỳ ĐTB Học phí 
Năm học Diện HS … 
Đối tượng/Không phải đối tượng? 
25
LOGO 
Ví dụ 
Được quan tâm? 
Phần mềm quản lý học sinh: 
•Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ huynh, Học kỳ, Năm học… 
Phần mềm quản lý giáo viên: 
•Giáo viên, Tổ bộ môn, Môn học, Khối, Lớp, Học kỳ, Năm học… 
Phần mềm xếp thời khóa biểu: 
•Giáo viên, Môn học, Lớp, Phòng, Học kỳ,Năm học… 
26
LOGO 
Ví dụ 
Đối tượng chính?Đối tượng phụ 
Phần mềm quản lý học sinh: 
•Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ huynh, Học kỳ, Năm học… 
Phần mềm quản lý giáo viên: 
•Giáo viên, Tổ bộ môn, Môn học, Khối, Lớp, Học kỳ, Năm học… 
Phần mềm xếp thời khóa biểu: 
•Giáo viên, Môn học, Lớp, Phòng, Học kỳ,Năm học… 
27
LOGO 
Lập danh sách các quan hệ 
Tiêu chí đánh giá: 
Động từ 
Sự phụ thuộc giữa các đối tượng (chủ yếu xét các đối tượng chính) 
Đề nghị: 
Quan hệ theo thời gian 
•Ít biến động: sau 1 thời gian dài mới thay đổi (thường làm về mặt tổ chức) 
•Biến động: quan hệ xảy ra vào lúc nào, trong thông tin có thuộc tính về thời gian, thay đổi theo thời gian (thường quan tâm nhiều đến loại quan hệ này) 
28
LOGO 
Lập danh sách các quan hệ(tt) 
Tiêu chí đánh giá: 
Động từ 
Sự phụ thuộc giữa các đối tượng (chủ yếu xét các đối tượng chính) 
Đề nghị: 
Quan hệ theo thời gian 
Quan hệ về tổ chức (thường liên quan đến đối tượng phụ) 
Quan hệ về không gian (thường liên quan đến đối tượng phụ 
Quan hệ theo vai trò: Chủ động/Bị động 
Ví dụ:? 
29
LOGO 
Nhận dạng thuộc tính 
Sự phụ thuộc (không có ý nghĩa rõ ràng khi đứng độc lập) 
Phụ thuộc một đối tượng  Thuộc tính của đối tượng 
Phụ thuộc nhiều đối tượng  Thuộc tính của quan hệ 
Các loại thuộc tính 
Định danh (thường của đối tượng) 
Phân loại 
Thời gian 
Không gian 
Định lượng 
… 
Ví dụ:? 
30
LOGO 
Các bước xây dựng sơ đồ lớp ở mức phân tích 
Bước 1: Xác định các lớp đối tượng, quan hệ và thuộc tính trực tiếp từ yêu cầu của hệ thống 
Xét lần lượt từng biểu mẫu và quy định 
•Nếu trong sơ đồ lớp hiện tại chưa có thể lưu trữ được thông tin cần thiết: 
–Cần bổ sung thuộc tính vào lớp đối tượng đã có? 
–Cần bổ sung thuộc tính vào quan hệ đã có? 
–Cần bổ sung thêm quan hệ giữa các lớp đối tượng đã có? 
–Cần bổ sung thêm lớp đối tượng mới? 
31
LOGO 
Các bước xây dựng sơ đồ lớp ở mức phân tích 
Bước 2: 
Nếu một lớp đối tượng có thuộc tính có cấu trúc phức tạp hoặc có các thuộc tính có liên hệ chặt chẽ với nhau và có ngữ nghĩa cụ thể thì nên tách ra thành lớp đối tượng phụ 
32
LOGO 
Các bước xây dựng sơ đồ lớp ở mức phân tích 
Bước 3: 
3.1. Nhiều lớp đối tượng có nhiều đặc điểm chung 
 Xây dựng lớp đối tượng tổng quát chung cho các lớp đối tượng cụ thể này 
33
LOGO 
Các bước xây dựng sơ đồ lớp ở mức phân tích 
Bước 3: 
3.2. Một lớp đối tượng có thuộc tính phân loại và cách xử lý trong các phương thức của đối tượng thuộc lớp này phụ thuộc vào giá trị của thuộc tính phân loại 
 Tách lớp đối tượng này thành nhiều lớp đối tượng con tương ứng với mỗi (nhóm) giá trị của thuộc tính phân loại 
34
LOGO 
Các bước xây dựng sơ đồ lớp ở mức phân tích 
Bước 4: 
Hiệu chỉnh các quan hệ đã có để phù hợp với các lớp đối tượng vừa được điều chỉnh 
Bước 5: 
Kiểm tra lại sơ đồ lớp và hiệu chỉnh (theo kinh nghiệm) 
Bước 6: 
Bổ sung các trách nhiệm (phương thức) vào các lớp đối tượng ở mức phân tích 
35
LOGO 
Kết quả: Sơ đồ lớp ở mức phân tích 
Sơ đồ lớp 
Danh sách các lớp đối tượng và quan hệ 
36 
STT 
Tên lớp/quan hệ 
Loại 
Ý nghĩa/ghi chú 
… 
… 
… 
…
LOGO 
Kết quả: Sơ đồ lớp ở mức phân tích 
Sơ đồ lớp 
Danh sách các lớp đối tượng và quan hệ 
Mô tả chi tiết từng lớp đối tượng và quan hệ 
Với mỗi lớp đối tượng: 
•Mô tả các thuộc tính 
•Danh sách các trách nhiệm chính 
Với mỗi quan hệ: 
37 
STT 
Tên thuộc tính 
Kiểu 
Ràng buộc 
Ý nghĩa/ghi chú 
… 
… 
… 
… 
… 
STT 
Tên thuộc tính 
Kiểu 
Ràng buộc 
Ý nghĩa/ghi chú 
… 
… 
… 
… 
…
LOGO 
Áp dụng 
Áp dụng thực tế vào các bài tập 
Xác định các lớp đối tượng chính 
Xác định các thông tin và hành động/trách nhiệm của mỗi lớp đối tượng chính 
Xác định các quan hệ chính 
Xác định các lớp đối tượng phụ, các danh mục 
38
LOGO 
Sơ đồ trạng thái 
39
LOGO 
Các khái niệm 
Sơ đồ trạng thái 
Mô tả chu trình sống của các đối tượng chính từ khi sinh ra, hoạt động & mất đi 
Mỗi đối tượng có thể có nhiều sơ đồ trạng thái theo các góc nhìn khác nhau 
Trạng thái & biến cố 
Trạng thái của đối tượng diễn đạt tình trạng hiện có của đối tượng (có ý nghĩa trong một đoạn thời gian) 
Biến cố là các sự kiện xảy ra làm cho đối tượng chuyển trạng thái. 
40
LOGO 
Một số ký hiệu 
41 
Tên trạng thái 
Tên trạng thái 
stateVar : type = value 
entry/ entry action 
do/ activity 
exit/ exit action 
Tên biến cố (tham số) 
Tên hành động (tham số) 
[Điều kiện] 
Trạng thái 
Chuyển đổi trạng thái
LOGO 
Các trạng thái đặc biệt 
Trang thái bắt đầu 
Là trạng thái khi mới được khởi tạo của object 
Bắt buộc phải có 
Chỉ có thể có 1 trạng thái bắt đầu 
Trang thái kết thúc 
Chỉ vị trí kết thúc đời sống của object 
Không nhất thiết phải thể hiện 
Có thể có nhiều 
42 
Tr/thái bắt đầu 
Tr/thái kết thúc
LOGO 
Sơ đồ trạng thái 
Là đồ thị có hướng với các node là các trạng thái nối với nhau bới các cung mô tả việc chuyển đổi trạng thái 
43 
Tên trạng thái 
stateVar : type = value 
entry/ entry action 
do/ activity 
exit/ exit action 
Biến cố(tham số) 
[Biểu thức điều kiện] 
/ Hành động (tham số) 
Trạng thái 
Biến cố 
Chuyển đổi trạng thái 
Hành động 
Hành động
LOGO 
Sơ đồ trạng thái 
44 
S1 
S4 
S2 
S3 
S5 
S6 
B1 
B2 
B3 
B4 
B5 
B6 
B7 
B8 
B9 
B1, B2: biến cố sinh 
B4, B8, B9: biến cố mất 
B3, B5, B6, B7: biến cố hoạt động
LOGO 
Sơ đồ trạng thái 
Mỗi sơ đồ trạng thái sẽ ánh xạ thành một thuộc tính của đối tượng 
Các trạng thái của đối tượng trong 1 sơ đồ trạng thái không giao nhau và giá trị của thuộc tính tương ứng chỉ mang 1 trong các giá trị tương ứng 
Sơ đồ trạng thái càng chi tiết sẽ phục vụ: 
Có những xử lý thích hợp trong kiểm tra ràng buộc 
Có những xử lý thích hợp trong xử lý biến cố 
Phục vụ tra cứu, tìm kiếm 
Khi đã quan tâm đến sơ đồ trạng thái của 1 đối tượng 
Thường trong ứng dụng không còn chức năng xóa (thật sự) đối tượng này 
Các đối tượng sẽ tồn tại ở trạng thái mất thay vì bị xóa thật sự 
45
LOGO 
Sơ đồ trạng thái 
Thông thường, sơ đồ trạng thái của 1 đối tượng có dạng 
46 
Sẵn sàng 
Tạm dừng 
Hoạt động 
Chấm dứt
LOGO 
Cách xây dựng sơ đồ trạng thái 
Cách 1: 
Xác định quá trình hoạt động bình thường của đối tượng từ khi sinh ra đến khi mất đi 
Bổ sung các trạng thái và biến cố liên quan đến 
•Sinh ra 
•Hoạt động 
•Tạm từng 
•Mất đi 
47
LOGO 
Cách xây dựng sơ đồ trạng thái 
Cách 2: 
Xác định các trạng thái sinh 
Xác định các trạng thái cuối 
Xác định các trạng thái trung gian và các biến cố/hành động làm chuyển trạng thái 
48
LOGO 
Kết quả: Sơ đồ trạng thái 
49 
S1 
S4 
S2 
S3 
S5 
S6 
B1 
B2 
B3 
B4 
B5 
B6 
B7 
B8 
B9 
STT 
Trạng thái 
Ý nghĩa 
Xử lý liên quan 
Ghi chú 
… 
… 
… 
… 
… 
STT 
Biến cố 
Ý nghĩa 
Xử lý liên quan 
Ghi chú 
… 
… 
… 
… 
… 
Bảng mô tả các trạng thái 
Bảng mô tả các biến cố 
Sơ đồ trạng thái
LOGO 
Ví dụ 
50 
Unassigned 
Assigned 
removeProfessor 
addProfessor
LOGO 
Ví dụ 
51 
add student / numStudents = numStudents + 1 
Unassigned 
Assigned 
Full 
Cancelled 
do: Send cancellation notices 
Committed 
do: Generate class roster 
closeRegistration [ has Professor assigned ] 
close 
/ numStudents = 0 
addProfessor 
closeRegistration 
remove student / numStudents = numStudents - 1 
cancel 
removeProfessor 
[ numStudents = 10 ] 
close[ numStudents < 3 ] 
closeRegistration[ numStudents >= 3 ] 
close[ numStudents >= 3 ] 
add student / 
numStudents = numStudents + 1 
cancel 
remove student / numStudents = numStudents - 1 
close 
[ numStudents = 10 ] 
cancel
LOGO 
Ví dụ: trạng thái lồng nhau 
52 
superstate 
substate 
add student / numStudents = numStudents + 1 
Open 
Unassigned 
Assigned 
H 
add a professor 
Closed 
Cancelled 
do: Send cancellation notices 
Full 
Committed 
do: Generate class roster 
closeRegistration 
close 
remove a professor 
close[ numStudents < 3 ] 
[ numStudents = 10 ] 
closeRegistration[ numStudents >= 3 ] 
close[ numStudents >= 3 ] 
closeRegistration [ has Professor assigned ] 
close 
/ numStudents = 0 
remove student / numStudents = numStudents - 1 
cancel 
cancel
LOGO 
Luyện tập 
Vẽ sơ đồ trạng thái của thang máy 
Vẽ sơ đồ trạng thái của 1 đèn giao thông 
Vẽ sơ đồ trạng thái của 1 cặp đèn giao thông tại ngã tư 
Vẽ sơ đồ trạng thái của 1 độc giả 
Vẽ sơ đồ trạng thái của 1 cuốn sách 
Vẽ sơ đồ trạng thái của 1 phòng trong khách sạn 
Vẽ sơ đồ trạng thái của 1 quân cờ 
… 
53

More Related Content

What's hot

Bai11 ooad bieu_dolop
Bai11 ooad bieu_dolopBai11 ooad bieu_dolop
Bai11 ooad bieu_dolop
Nhuận Lê Văn
 
Bài Giảng Hiểu Dữ Liệu Và Tiền Xử Lý Dữ Liệu
Bài Giảng Hiểu Dữ Liệu Và Tiền Xử Lý Dữ Liệu Bài Giảng Hiểu Dữ Liệu Và Tiền Xử Lý Dữ Liệu
Bài Giảng Hiểu Dữ Liệu Và Tiền Xử Lý Dữ Liệu
nataliej4
 
OOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối TượngOOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối Tượng
Nguyễn Quang Thiện
 
Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...
Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...
Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...
MasterCode.vn
 
Chuong 6 rational rose slide
Chuong 6 rational rose slideChuong 6 rational rose slide
Chuong 6 rational rose slideiamtranxuanman
 
Oop 0
Oop 0Oop 0
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
MasterCode.vn
 
Bài 1: Tổng quan - NỀN TẢNG LẬP TRÌNH ỨNG DỤNG VỚI C#
Bài 1: Tổng quan - NỀN TẢNG LẬP TRÌNH ỨNG  DỤNG VỚI C# Bài 1: Tổng quan - NỀN TẢNG LẬP TRÌNH ỨNG  DỤNG VỚI C#
Bài 1: Tổng quan - NỀN TẢNG LẬP TRÌNH ỨNG DỤNG VỚI C#
MasterCode.vn
 
Bai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaBai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethua
Nhuận Lê Văn
 
Bai01 oop overview
Bai01 oop overviewBai01 oop overview
Bai01 oop overview
Nhuận Lê Văn
 
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPTBài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
MasterCode.vn
 
Đồ án quản lý tuyển sinh
Đồ án quản lý tuyển sinhĐồ án quản lý tuyển sinh
Đồ án quản lý tuyển sinh
Luân Phạm Thành
 

What's hot (19)

Bai11 ooad bieu_dolop
Bai11 ooad bieu_dolopBai11 ooad bieu_dolop
Bai11 ooad bieu_dolop
 
Qltuyensinh
QltuyensinhQltuyensinh
Qltuyensinh
 
Bài Giảng Hiểu Dữ Liệu Và Tiền Xử Lý Dữ Liệu
Bài Giảng Hiểu Dữ Liệu Và Tiền Xử Lý Dữ Liệu Bài Giảng Hiểu Dữ Liệu Và Tiền Xử Lý Dữ Liệu
Bài Giảng Hiểu Dữ Liệu Và Tiền Xử Lý Dữ Liệu
 
OOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối TượngOOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối Tượng
 
Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...
Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...
Bài 2 : Các khái niệm và nguyên tắc cơ bản của NET Framework - NỀN TẢNG LẬP T...
 
Chuong 6 rational rose slide
Chuong 6 rational rose slideChuong 6 rational rose slide
Chuong 6 rational rose slide
 
Oop 0
Oop 0Oop 0
Oop 0
 
C3 1
C3 1C3 1
C3 1
 
8 voduythanh
8 voduythanh8 voduythanh
8 voduythanh
 
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
 
C2 1
C2 1C2 1
C2 1
 
Bài 1: Tổng quan - NỀN TẢNG LẬP TRÌNH ỨNG DỤNG VỚI C#
Bài 1: Tổng quan - NỀN TẢNG LẬP TRÌNH ỨNG  DỤNG VỚI C# Bài 1: Tổng quan - NỀN TẢNG LẬP TRÌNH ỨNG  DỤNG VỚI C#
Bài 1: Tổng quan - NỀN TẢNG LẬP TRÌNH ỨNG DỤNG VỚI C#
 
Bai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaBai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethua
 
Lecture02(1)
Lecture02(1)Lecture02(1)
Lecture02(1)
 
Bai01 oop overview
Bai01 oop overviewBai01 oop overview
Bai01 oop overview
 
Final
FinalFinal
Final
 
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPTBài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
 
Bai1
Bai1Bai1
Bai1
 
Đồ án quản lý tuyển sinh
Đồ án quản lý tuyển sinhĐồ án quản lý tuyển sinh
Đồ án quản lý tuyển sinh
 

Similar to Ch4.phan tich(1)

Giới thiệu môn học
Giới thiệu môn họcGiới thiệu môn học
Giới thiệu môn họcNguyen Tran
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06xcode_esvn
 
Lesson 06 : OOP and Access modifier
Lesson 06 : OOP and Access modifierLesson 06 : OOP and Access modifier
Lesson 06 : OOP and Access modifier
Hallo Patidu
 
Bai4classesobjectsnamespaces 130622090259-phpapp02
Bai4classesobjectsnamespaces 130622090259-phpapp02Bai4classesobjectsnamespaces 130622090259-phpapp02
Bai4classesobjectsnamespaces 130622090259-phpapp02Hoàng Hà
 
Bai03 xay dunglop
Bai03 xay dunglopBai03 xay dunglop
Bai03 xay dunglop
Nhuận Lê Văn
 
Ch3.mo hinhhoayeucau(1)
Ch3.mo hinhhoayeucau(1)Ch3.mo hinhhoayeucau(1)
Ch3.mo hinhhoayeucau(1)
Nguyễn Thu Hằng
 
Hoatdongbaiday-HaNgoc
Hoatdongbaiday-HaNgocHoatdongbaiday-HaNgoc
Hoatdongbaiday-HaNgoc
SP Tin K34
 
lopvadoituong.pdf
lopvadoituong.pdflopvadoituong.pdf
lopvadoituong.pdf
NguyenDiem50
 
Artificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc mayArtificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc may
Tráng Hà Viết
 
XAYDUNGSUMENHQUANLICHIENLUOC
XAYDUNGSUMENHQUANLICHIENLUOCXAYDUNGSUMENHQUANLICHIENLUOC
XAYDUNGSUMENHQUANLICHIENLUOC
Lieu Tran
 
Kich ban day hoc_Tin Hoc Lop12_Chuong 2_Bai 3
Kich ban day hoc_Tin Hoc Lop12_Chuong 2_Bai 3Kich ban day hoc_Tin Hoc Lop12_Chuong 2_Bai 3
Kich ban day hoc_Tin Hoc Lop12_Chuong 2_Bai 3Nguyen Anh
 
Kịch bản dạy học lớp 12 -chương 2-bài 4 :Cấu trúc bảng
Kịch bản dạy học lớp 12 -chương 2-bài 4 :Cấu trúc bảng Kịch bản dạy học lớp 12 -chương 2-bài 4 :Cấu trúc bảng
Kịch bản dạy học lớp 12 -chương 2-bài 4 :Cấu trúc bảng baongoc91
 

Similar to Ch4.phan tich(1) (20)

4a domain model
4a domain model4a domain model
4a domain model
 
Giới thiệu môn học
Giới thiệu môn họcGiới thiệu môn học
Giới thiệu môn học
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06
 
Lesson 06 : OOP and Access modifier
Lesson 06 : OOP and Access modifierLesson 06 : OOP and Access modifier
Lesson 06 : OOP and Access modifier
 
Csdl hdt
Csdl hdtCsdl hdt
Csdl hdt
 
Bai4classesobjectsnamespaces 130622090259-phpapp02
Bai4classesobjectsnamespaces 130622090259-phpapp02Bai4classesobjectsnamespaces 130622090259-phpapp02
Bai4classesobjectsnamespaces 130622090259-phpapp02
 
Bai03 xay dunglop
Bai03 xay dunglopBai03 xay dunglop
Bai03 xay dunglop
 
Chuong2 c
Chuong2 c Chuong2 c
Chuong2 c
 
Ch3.mo hinhhoayeucau(1)
Ch3.mo hinhhoayeucau(1)Ch3.mo hinhhoayeucau(1)
Ch3.mo hinhhoayeucau(1)
 
Hoatdongbaiday-HaNgoc
Hoatdongbaiday-HaNgocHoatdongbaiday-HaNgoc
Hoatdongbaiday-HaNgoc
 
lopvadoituong.pdf
lopvadoituong.pdflopvadoituong.pdf
lopvadoituong.pdf
 
Lecture02(2)
Lecture02(2)Lecture02(2)
Lecture02(2)
 
Lecture02
Lecture02Lecture02
Lecture02
 
Artificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc mayArtificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc may
 
XAYDUNGSUMENHQUANLICHIENLUOC
XAYDUNGSUMENHQUANLICHIENLUOCXAYDUNGSUMENHQUANLICHIENLUOC
XAYDUNGSUMENHQUANLICHIENLUOC
 
Chapter1
Chapter1Chapter1
Chapter1
 
Kich ban day hoc_Tin Hoc Lop12_Chuong 2_Bai 3
Kich ban day hoc_Tin Hoc Lop12_Chuong 2_Bai 3Kich ban day hoc_Tin Hoc Lop12_Chuong 2_Bai 3
Kich ban day hoc_Tin Hoc Lop12_Chuong 2_Bai 3
 
Kịch bản dạy học lớp 12 -chương 2-bài 4 :Cấu trúc bảng
Kịch bản dạy học lớp 12 -chương 2-bài 4 :Cấu trúc bảng Kịch bản dạy học lớp 12 -chương 2-bài 4 :Cấu trúc bảng
Kịch bản dạy học lớp 12 -chương 2-bài 4 :Cấu trúc bảng
 
Các mô hình dữ liệu
Các mô hình dữ liệuCác mô hình dữ liệu
Các mô hình dữ liệu
 
Nhom09
Nhom09Nhom09
Nhom09
 

More from Nguyễn Thu Hằng

Huong-dan-hoc-Excel.ppt
Huong-dan-hoc-Excel.pptHuong-dan-hoc-Excel.ppt
Huong-dan-hoc-Excel.ppt
Nguyễn Thu Hằng
 
ASP.NET.docx
ASP.NET.docxASP.NET.docx
ASP.NET.docx
Nguyễn Thu Hằng
 
Duoihinhbatchu 120811082150-phpapp02
Duoihinhbatchu 120811082150-phpapp02Duoihinhbatchu 120811082150-phpapp02
Duoihinhbatchu 120811082150-phpapp02
Nguyễn Thu Hằng
 
Vie ebi 2020 v2.5 final
Vie   ebi 2020 v2.5 finalVie   ebi 2020 v2.5 final
Vie ebi 2020 v2.5 final
Nguyễn Thu Hằng
 
Gt cac pptoankinhte - (huapro.vn)
Gt cac pptoankinhte - (huapro.vn)Gt cac pptoankinhte - (huapro.vn)
Gt cac pptoankinhte - (huapro.vn)
Nguyễn Thu Hằng
 
Baitapvaloigiaisql 130821085507-phpapp02
Baitapvaloigiaisql 130821085507-phpapp02Baitapvaloigiaisql 130821085507-phpapp02
Baitapvaloigiaisql 130821085507-phpapp02
Nguyễn Thu Hằng
 
Kiến trúc hướng dịch vụ (webservice)
Kiến trúc hướng dịch vụ (webservice)Kiến trúc hướng dịch vụ (webservice)
Kiến trúc hướng dịch vụ (webservice)
Nguyễn Thu Hằng
 

More from Nguyễn Thu Hằng (13)

Huong-dan-hoc-Excel.ppt
Huong-dan-hoc-Excel.pptHuong-dan-hoc-Excel.ppt
Huong-dan-hoc-Excel.ppt
 
ASP.NET.docx
ASP.NET.docxASP.NET.docx
ASP.NET.docx
 
Tranh to-mau-danh-cho-be
Tranh to-mau-danh-cho-beTranh to-mau-danh-cho-be
Tranh to-mau-danh-cho-be
 
Duoihinhbatchu 120811082150-phpapp02
Duoihinhbatchu 120811082150-phpapp02Duoihinhbatchu 120811082150-phpapp02
Duoihinhbatchu 120811082150-phpapp02
 
Vie ebi 2020 v2.5 final
Vie   ebi 2020 v2.5 finalVie   ebi 2020 v2.5 final
Vie ebi 2020 v2.5 final
 
Gt cac pptoankinhte - (huapro.vn)
Gt cac pptoankinhte - (huapro.vn)Gt cac pptoankinhte - (huapro.vn)
Gt cac pptoankinhte - (huapro.vn)
 
Baitapvaloigiaisql 130821085507-phpapp02
Baitapvaloigiaisql 130821085507-phpapp02Baitapvaloigiaisql 130821085507-phpapp02
Baitapvaloigiaisql 130821085507-phpapp02
 
3250
32503250
3250
 
Kiến trúc hướng dịch vụ (webservice)
Kiến trúc hướng dịch vụ (webservice)Kiến trúc hướng dịch vụ (webservice)
Kiến trúc hướng dịch vụ (webservice)
 
Lecture03
Lecture03Lecture03
Lecture03
 
Lecture01
Lecture01Lecture01
Lecture01
 
Lecture03(1)
Lecture03(1)Lecture03(1)
Lecture03(1)
 
Ch5.thiet kedulieu
Ch5.thiet kedulieuCh5.thiet kedulieu
Ch5.thiet kedulieu
 

Ch4.phan tich(1)

  • 1. LOGO Chương 4: Phân tích 1 GVLT: Phạm Thi Vương
  • 2. LOGO Tài liệu tham khảo Bài giảng dựa chính trên bài giảng “Xây dựng phần mềm hướng đối tượng” - ThS Trần Minh Triết – ĐH KHTN Bài giảng “Phân tích và thiết kế hướng đối tượng” – TS Phạm Ngọc Nam – ĐH BK HN Bài giảng “Phân tích và thiết kế hướng đối tượng” – ThS Phạm Nguyễn Cương – ĐH KHTN …. 2
  • 3. LOGO www.themegallery.com Company Name Nội dung 1. Sơ đồ lớp ở mức phân tích 2. Sơ đồ lớp và Khả năng tiến hóa của hệ thống 3. Sơ đồ trạng thái
  • 4. LOGO www.themegallery.com Company Name Sơ đồ lớp ở mức phân tích 1. Xác định các lớp đối tượng chính 2. Xác định các thông tin và hành động/trách nhiệm của mỗi lớp đối tượng chính 3. Xác định các quan hệ chính 4. Xác định các lớp đối tượng phụ, các danh mục
  • 5. LOGO Nội dung Sơ đồ lớp ở mức phân tích Xác định các lớp đối tượng chính Xác định các thông tin và hành động/trách nhiệm của mỗi lớp đối tượng chính Xác định các quan hệ chính Xác định các lớp đối tượng phụ, các danh mục Sơ đồ lớp và Khả năng tiến hóa của hệ thống Sơ đồ trạng thái Khái niệm và các ký hiệu •Trạng thái •Biến cố, điều kiện •Trạng thái đầu, trạng thái cuối •Superstate Áp dụng 5
  • 6. LOGO Một số khái niệm mở đầu Vấn đề: Mô tả lại bằng một ngôn ngữ nào đó (thường là các sơ đồ) nhằm diễn tả trực quan về vấn đề Phân tích: xây dựng mô hình Thế giới thực Phân tích theo hướng đối tượng: xây dựng các mô hình về các đối tượng của Thế giới thực 6
  • 7. LOGO Một số khái niệm mở đầu Một số loại Sơ đồ: Sơ đồ lớp đối tượng: Mô tả hệ thống các lớp đối tượng (thuộc tính, hành động) cùng với các quan hệ giữa chúng Sơ đồ trạng thái: Mô tả chu trình sống của đối tượng … 7
  • 8. LOGO Nhắc lại về hướng đối tượng 8
  • 9. LOGO Nhắc lại về hướng đối tượng 9 Tên class Tên class (Các) phương thức (Các) thuộc tính Một số ký hiệu Đối tượng:class thuộc tính = giá trị Đối tượng thuộc tính = giá trị
  • 10. LOGO Public/Protected/Private 10 + Thuộc tính/Phương thức public - Thuộc tính/Phương thức private # Thuộc tính/Phương thức protected Phương thức Public Phương thức Protected Phương thực Private Class - privateAttribute # protectedAttribute +publicOp() # protectedOp() - privateOp()
  • 11. LOGO Tầm vực Xác định số lượng thể hiện của thuộc tính / phương thức 11 Class - classifierScopeAttribute classifierScopeOperation() - instanceScopeAttribute instanceScopeOperation()
  • 12. LOGO Ví dụ 12 Student - name - address - nextAvailID : int + addSchedule(theSchedule : Schedule, forSemester : Semester) + getSchedule(forSemester : Semester) : Schedule + hasPrerequisites(forCourseOffering : CourseOffering) : boolean # passed(theCourseOffering : CourseOffering) : boolean + getNextAvailID() : int - studentID
  • 13. LOGO Nhận xét 13 Tên class (Các) phương thức (Các) thuộc tính Bình thường: Class bình thường In nghiêng: Class thuần ảo Gạch dưới: Object (không phải class) Bình thường: Thuộc tính bình thường In nghiêng: không sử dụng Gạch dưới: Thuộc tính static Bình thường: Phương thức bình thường In nghiêng: Phương thức virtual Gạch dưới: Phương thức static
  • 14. LOGO Ví dụ 14 CTamGiac# CDiemP1# CDiemP2# CDiemP3+ CTamGiac() + float DienTich() + float ChuVi() + void Ve() + ... CTuGiac# CDiemP1# CDiemP2# CDiemP3# CDiem P4+ CTuGiac() + float DienTich() + float ChuVi() + void Ve() + ... CEllipse# CDiemTam# floatA# floatB+ CEllipse() + float DienTich() + float ChuVi() + void Ve() + ... CHinhVe# int MaLoaiHinhVe+ float DienTich() + float ChuVi() + void Ve() + ...
  • 15. LOGO Quan hệ giữa các lớp đối tượng Quan hệ kế thừa ClassB kế thừa từ ClassA ClassB là một trường hợp đặc biệt của ClassA ClassA là trường hợp tổng quát của ClassB 15 ClassAClassB
  • 16. LOGO Quan hệ giữa các lớp đối tượng Quan hệ Association Hoặc •Trong ClassA có thuộc tính có kiểu là ClassB Hoặc •Trong ClassB có thuộc tính có kiểu là ClassA Nhận xét: Về mặt lập trình, thuộc tính có thể được lưu trữ dạng biến đơn, biến mảng, hay biến con trỏ Ví dụ:? 16 ClassAClassB
  • 17. LOGO Quan hệ giữa các lớp đối tượng Quan hệ Aggregation Đã xác định được ClassA và ClassB có quan hệ Association với nhau Xác định rõ hơn: •Trong object của ClassA có chứa (trong phần thuộc tính) object của ClassB •ObjectX của ClassA bị hủy thì ObjectY của ClassB (bên trong ObjectX) vẫn có thể còn tồn tại Ví dụ:? 17 ClassAClassB
  • 18. LOGO Quan hệ giữa các lớp đối tượng Quan hệ Composition  Đã xác định được ClassA và ClassB có quan hệ Association với nhau  Xác định rõ hơn: • Trong object của ClassA có chứa (trong phần thuộc tính) object của ClassB • ObjectX của ClassA bị hủy thì ObjectY của ClassB (bên trong ObjectX) không thể còn tồn tại  Ví dụ:? 18 ClassA ClassB
  • 19. LOGO Quan hệ giữa các lớp đối tượng Chiều của quan hệ (Association, Aggregation, Composition) Nếu quan hệ là 1 chiều: đa số các lời gọi hàm được gọi theo đúng chiều của quan hệ Nếu quan hệ là 2 chiều: không vẽ mũi tên 19 ClassAClassB
  • 20. LOGO Quan hệ giữa các lớp đối tượng Bản số - Multiplicity (Association, Aggregation, Composition) Ý nghĩa Ví dụ: •1 •2 •1..* •0..* •* •1, 3, 5..9 20 ClassAClassB11..*
  • 21. LOGO Quan hệ giữa các lớp đối tượng Quan hệ Dependency  ClassA và ClassB không có quan hệ Association  ClassA “phụ thuộc” vào ClassB 21 ClassA ClassB class A { void F(B x) { … } }; class A { B F() { … } }; class A { void F() { B x; } }; Trong ClassA có sử dụng biến toàn cục (kiểu B), hoặc sử dụng phương thức/thuộc tính static của ClassB Tham số truyền vào Kết quả trả ra Biến cục bộ
  • 22. LOGO Xây dựng sơ đồ lớp ở mức phân tích 22
  • 23. LOGO Lập danh sách các đối tượng Tiêu chuẩn nhận dạng đối tượng Định danh: Đối tượng phải có tên (thường là danh từ/ngữ danh từ) Chu trình sống: có thời điểm sinh ra, có khoảng thời gian hoạt động, có thời điểm chấm dứt Sự độc lập tương đối với các đối tượng khác … Đề nghị: Con người Vật thể Tổ chức Vật lý Không gian Thời gian… 23
  • 24. LOGO Lập danh sách các đối tượng Lập danh sách các đối tượng liên quan đến hệ thống 24 Đối tượng đề nghị Không là đối tượng Là đối tượng Được quan tâm Không được quan tâm Đối tượng chính Đối tượng phụ Tiêu chuẩn nhận dạng đối tượng: có rất nhiều trường phái
  • 25. LOGO Ví dụ Ví dụ: Xét ngữ cảnh là 1 trường PTTH với phần mềm quản lý trường cấp 3: Danh sách đề nghị: Học sinh Tổ Bộ môn Số tiết Giáo viên BGH TKB Môn học Khối Bảng điểm Lớp Phụ huynh Phòng Học kỳ ĐTB Học phí Năm học Diện HS … Đối tượng/Không phải đối tượng? 25
  • 26. LOGO Ví dụ Được quan tâm? Phần mềm quản lý học sinh: •Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ huynh, Học kỳ, Năm học… Phần mềm quản lý giáo viên: •Giáo viên, Tổ bộ môn, Môn học, Khối, Lớp, Học kỳ, Năm học… Phần mềm xếp thời khóa biểu: •Giáo viên, Môn học, Lớp, Phòng, Học kỳ,Năm học… 26
  • 27. LOGO Ví dụ Đối tượng chính?Đối tượng phụ Phần mềm quản lý học sinh: •Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ huynh, Học kỳ, Năm học… Phần mềm quản lý giáo viên: •Giáo viên, Tổ bộ môn, Môn học, Khối, Lớp, Học kỳ, Năm học… Phần mềm xếp thời khóa biểu: •Giáo viên, Môn học, Lớp, Phòng, Học kỳ,Năm học… 27
  • 28. LOGO Lập danh sách các quan hệ Tiêu chí đánh giá: Động từ Sự phụ thuộc giữa các đối tượng (chủ yếu xét các đối tượng chính) Đề nghị: Quan hệ theo thời gian •Ít biến động: sau 1 thời gian dài mới thay đổi (thường làm về mặt tổ chức) •Biến động: quan hệ xảy ra vào lúc nào, trong thông tin có thuộc tính về thời gian, thay đổi theo thời gian (thường quan tâm nhiều đến loại quan hệ này) 28
  • 29. LOGO Lập danh sách các quan hệ(tt) Tiêu chí đánh giá: Động từ Sự phụ thuộc giữa các đối tượng (chủ yếu xét các đối tượng chính) Đề nghị: Quan hệ theo thời gian Quan hệ về tổ chức (thường liên quan đến đối tượng phụ) Quan hệ về không gian (thường liên quan đến đối tượng phụ Quan hệ theo vai trò: Chủ động/Bị động Ví dụ:? 29
  • 30. LOGO Nhận dạng thuộc tính Sự phụ thuộc (không có ý nghĩa rõ ràng khi đứng độc lập) Phụ thuộc một đối tượng  Thuộc tính của đối tượng Phụ thuộc nhiều đối tượng  Thuộc tính của quan hệ Các loại thuộc tính Định danh (thường của đối tượng) Phân loại Thời gian Không gian Định lượng … Ví dụ:? 30
  • 31. LOGO Các bước xây dựng sơ đồ lớp ở mức phân tích Bước 1: Xác định các lớp đối tượng, quan hệ và thuộc tính trực tiếp từ yêu cầu của hệ thống Xét lần lượt từng biểu mẫu và quy định •Nếu trong sơ đồ lớp hiện tại chưa có thể lưu trữ được thông tin cần thiết: –Cần bổ sung thuộc tính vào lớp đối tượng đã có? –Cần bổ sung thuộc tính vào quan hệ đã có? –Cần bổ sung thêm quan hệ giữa các lớp đối tượng đã có? –Cần bổ sung thêm lớp đối tượng mới? 31
  • 32. LOGO Các bước xây dựng sơ đồ lớp ở mức phân tích Bước 2: Nếu một lớp đối tượng có thuộc tính có cấu trúc phức tạp hoặc có các thuộc tính có liên hệ chặt chẽ với nhau và có ngữ nghĩa cụ thể thì nên tách ra thành lớp đối tượng phụ 32
  • 33. LOGO Các bước xây dựng sơ đồ lớp ở mức phân tích Bước 3: 3.1. Nhiều lớp đối tượng có nhiều đặc điểm chung  Xây dựng lớp đối tượng tổng quát chung cho các lớp đối tượng cụ thể này 33
  • 34. LOGO Các bước xây dựng sơ đồ lớp ở mức phân tích Bước 3: 3.2. Một lớp đối tượng có thuộc tính phân loại và cách xử lý trong các phương thức của đối tượng thuộc lớp này phụ thuộc vào giá trị của thuộc tính phân loại  Tách lớp đối tượng này thành nhiều lớp đối tượng con tương ứng với mỗi (nhóm) giá trị của thuộc tính phân loại 34
  • 35. LOGO Các bước xây dựng sơ đồ lớp ở mức phân tích Bước 4: Hiệu chỉnh các quan hệ đã có để phù hợp với các lớp đối tượng vừa được điều chỉnh Bước 5: Kiểm tra lại sơ đồ lớp và hiệu chỉnh (theo kinh nghiệm) Bước 6: Bổ sung các trách nhiệm (phương thức) vào các lớp đối tượng ở mức phân tích 35
  • 36. LOGO Kết quả: Sơ đồ lớp ở mức phân tích Sơ đồ lớp Danh sách các lớp đối tượng và quan hệ 36 STT Tên lớp/quan hệ Loại Ý nghĩa/ghi chú … … … …
  • 37. LOGO Kết quả: Sơ đồ lớp ở mức phân tích Sơ đồ lớp Danh sách các lớp đối tượng và quan hệ Mô tả chi tiết từng lớp đối tượng và quan hệ Với mỗi lớp đối tượng: •Mô tả các thuộc tính •Danh sách các trách nhiệm chính Với mỗi quan hệ: 37 STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú … … … … … STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú … … … … …
  • 38. LOGO Áp dụng Áp dụng thực tế vào các bài tập Xác định các lớp đối tượng chính Xác định các thông tin và hành động/trách nhiệm của mỗi lớp đối tượng chính Xác định các quan hệ chính Xác định các lớp đối tượng phụ, các danh mục 38
  • 39. LOGO Sơ đồ trạng thái 39
  • 40. LOGO Các khái niệm Sơ đồ trạng thái Mô tả chu trình sống của các đối tượng chính từ khi sinh ra, hoạt động & mất đi Mỗi đối tượng có thể có nhiều sơ đồ trạng thái theo các góc nhìn khác nhau Trạng thái & biến cố Trạng thái của đối tượng diễn đạt tình trạng hiện có của đối tượng (có ý nghĩa trong một đoạn thời gian) Biến cố là các sự kiện xảy ra làm cho đối tượng chuyển trạng thái. 40
  • 41. LOGO Một số ký hiệu 41 Tên trạng thái Tên trạng thái stateVar : type = value entry/ entry action do/ activity exit/ exit action Tên biến cố (tham số) Tên hành động (tham số) [Điều kiện] Trạng thái Chuyển đổi trạng thái
  • 42. LOGO Các trạng thái đặc biệt Trang thái bắt đầu Là trạng thái khi mới được khởi tạo của object Bắt buộc phải có Chỉ có thể có 1 trạng thái bắt đầu Trang thái kết thúc Chỉ vị trí kết thúc đời sống của object Không nhất thiết phải thể hiện Có thể có nhiều 42 Tr/thái bắt đầu Tr/thái kết thúc
  • 43. LOGO Sơ đồ trạng thái Là đồ thị có hướng với các node là các trạng thái nối với nhau bới các cung mô tả việc chuyển đổi trạng thái 43 Tên trạng thái stateVar : type = value entry/ entry action do/ activity exit/ exit action Biến cố(tham số) [Biểu thức điều kiện] / Hành động (tham số) Trạng thái Biến cố Chuyển đổi trạng thái Hành động Hành động
  • 44. LOGO Sơ đồ trạng thái 44 S1 S4 S2 S3 S5 S6 B1 B2 B3 B4 B5 B6 B7 B8 B9 B1, B2: biến cố sinh B4, B8, B9: biến cố mất B3, B5, B6, B7: biến cố hoạt động
  • 45. LOGO Sơ đồ trạng thái Mỗi sơ đồ trạng thái sẽ ánh xạ thành một thuộc tính của đối tượng Các trạng thái của đối tượng trong 1 sơ đồ trạng thái không giao nhau và giá trị của thuộc tính tương ứng chỉ mang 1 trong các giá trị tương ứng Sơ đồ trạng thái càng chi tiết sẽ phục vụ: Có những xử lý thích hợp trong kiểm tra ràng buộc Có những xử lý thích hợp trong xử lý biến cố Phục vụ tra cứu, tìm kiếm Khi đã quan tâm đến sơ đồ trạng thái của 1 đối tượng Thường trong ứng dụng không còn chức năng xóa (thật sự) đối tượng này Các đối tượng sẽ tồn tại ở trạng thái mất thay vì bị xóa thật sự 45
  • 46. LOGO Sơ đồ trạng thái Thông thường, sơ đồ trạng thái của 1 đối tượng có dạng 46 Sẵn sàng Tạm dừng Hoạt động Chấm dứt
  • 47. LOGO Cách xây dựng sơ đồ trạng thái Cách 1: Xác định quá trình hoạt động bình thường của đối tượng từ khi sinh ra đến khi mất đi Bổ sung các trạng thái và biến cố liên quan đến •Sinh ra •Hoạt động •Tạm từng •Mất đi 47
  • 48. LOGO Cách xây dựng sơ đồ trạng thái Cách 2: Xác định các trạng thái sinh Xác định các trạng thái cuối Xác định các trạng thái trung gian và các biến cố/hành động làm chuyển trạng thái 48
  • 49. LOGO Kết quả: Sơ đồ trạng thái 49 S1 S4 S2 S3 S5 S6 B1 B2 B3 B4 B5 B6 B7 B8 B9 STT Trạng thái Ý nghĩa Xử lý liên quan Ghi chú … … … … … STT Biến cố Ý nghĩa Xử lý liên quan Ghi chú … … … … … Bảng mô tả các trạng thái Bảng mô tả các biến cố Sơ đồ trạng thái
  • 50. LOGO Ví dụ 50 Unassigned Assigned removeProfessor addProfessor
  • 51. LOGO Ví dụ 51 add student / numStudents = numStudents + 1 Unassigned Assigned Full Cancelled do: Send cancellation notices Committed do: Generate class roster closeRegistration [ has Professor assigned ] close / numStudents = 0 addProfessor closeRegistration remove student / numStudents = numStudents - 1 cancel removeProfessor [ numStudents = 10 ] close[ numStudents < 3 ] closeRegistration[ numStudents >= 3 ] close[ numStudents >= 3 ] add student / numStudents = numStudents + 1 cancel remove student / numStudents = numStudents - 1 close [ numStudents = 10 ] cancel
  • 52. LOGO Ví dụ: trạng thái lồng nhau 52 superstate substate add student / numStudents = numStudents + 1 Open Unassigned Assigned H add a professor Closed Cancelled do: Send cancellation notices Full Committed do: Generate class roster closeRegistration close remove a professor close[ numStudents < 3 ] [ numStudents = 10 ] closeRegistration[ numStudents >= 3 ] close[ numStudents >= 3 ] closeRegistration [ has Professor assigned ] close / numStudents = 0 remove student / numStudents = numStudents - 1 cancel cancel
  • 53. LOGO Luyện tập Vẽ sơ đồ trạng thái của thang máy Vẽ sơ đồ trạng thái của 1 đèn giao thông Vẽ sơ đồ trạng thái của 1 cặp đèn giao thông tại ngã tư Vẽ sơ đồ trạng thái của 1 độc giả Vẽ sơ đồ trạng thái của 1 cuốn sách Vẽ sơ đồ trạng thái của 1 phòng trong khách sạn Vẽ sơ đồ trạng thái của 1 quân cờ … 53