Bài giảng Lập trình hướng đối tượng - Bài 13: Tổng quan về UML - Trịnh Thành Trung

Mô hình hóa

• Hướng tiếp cận “máy bay giấy”?

• Đối với dự án phần mềm

− Mất rất nhiều thời gian và tạo ra rất nhiều mã nguồn.

− Không có bất kỳ một kiến trúc nào.

− Phải chịu khổ với những lỗi phát sinh.

• Mô hình hóa

− Giúp đơn giản hóa thế giới thực bằng các mô hình

− Giúp hiểu rõ hơn về hệ thống dướI các góc nhìn khác

nhau

• Ngôn ngữ mô hình hóa thống nhất (Unified

Modeling Language - UML)

• UML là ngôn ngữ để:

−trực quan hóa (visualizing)

−đặc tả (specifying)

−xây dựng (constructing)

−tài liệu hóa (documenting)

các cấu phần (artifact) của một hệ thống phần

mềm

pdf 92 trang kimcuc 4620
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Bài 13: Tổng quan về UML - Trịnh Thành Trung", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình hướng đối tượng - Bài 13: Tổng quan về UML - Trịnh Thành Trung

Bài giảng Lập trình hướng đối tượng - Bài 13: Tổng quan về UML - Trịnh Thành Trung
Bài 13 
Tổng quan về 
UML 
Trịnh Thành Trung 
trungtt@soict.hust.edu.vn 
Nội dung 
1. Phân tích và thiết kế hệ 
thống HĐT 
2. Biểu đồ use case 
3. Biểu đồ hoạt động 
4. Biểu đồ tương tác 
5. Biểu đồ lớp 
Phân tích và thiết kế hệ 
thống hướng đối tượng 
Object-oriented analysis and design (OOAD) 
1 
4 
• Hướng tiếp cận “máy bay giấy”? 
• Đối với dự án phần mềm 
−Mất rất nhiều thời gian và tạo ra rất nhiều mã nguồn. 
− Không có bất kỳ một kiến trúc nào. 
− Phải chịu khổ với những lỗi phát sinh. 
Mô hình hóa 
5 
• Mô hình hóa 
− Giúp đơn giản hóa thế giới thực bằng các mô hình 
− Giúp hiểu rõ hơn về hệ thống dướI các góc nhìn khác 
nhau 
Mô hình hóa 
6 
• Ngôn ngữ mô hình hóa thống nhất (Unified 
Modeling Language - UML) 
• UML là ngôn ngữ để: 
− trực quan hóa (visualizing) 
−đặc tả (specifying) 
−xây dựng (constructing) 
− tài liệu hóa (documenting) 
 các cấu phần (artifact) của một hệ thống phần 
mềm 
UML 
7 
• UML là ngôn ngữ trực quan 
• Giúp công việc phát triển được xử lý nhất quán, 
giảm thiểu lỗi xảy ra 
− Giúp dễ hình dung hơn cấu trúc của hệ thống 
− Hiệu quả hơn trong việc liên lạc, trao đổi 
+ Trong tổ chức 
+ Bên ngoài tổ chức 
UML 
8 
• Các mô hình UML có thể kết nối trực tiếp với rất 
nhiều ngôn ngữ lập trình. 
− Ánh xạ sang Java, C++, Visual Basic 
− Các bảng trong RDBMS hoặc kho lưu trữ trong OODBMS 
− Cho phép các kỹ nghệ xuôi (chuyển UML thành mã 
nguồn) 
− Cho phép kỹ nghệ ngược (xây dựng mô hình hệ thống từ 
mã nguồn) 
UML 
9 
• UML là ngôn ngữ tài 
liệu hóa 
• Tài liệu hóa kiến trúc, 
yêu cầu, kiểm thử, lập 
kế hoạch dự án, và 
quản lý việc bàn giao 
phần mềm 
• Các biểu đồ khác 
nhau, các ghi chú, 
ràng buộc được đặc 
tả trong tài liệu 
UML 
Use Case 
Diagram 
Actor A 
Use Case 1 
Use Case 2 
Use Case 3 
Actor B 
Class Diagram 
GrpFile 
read( ) 
open( ) 
create( ) 
fillFile( ) 
rep 
Repository 
name : char * 
= 0 
readDoc( ) 
readFile( ) 
(from Persistence) 
FileMgr 
fetchDoc( ) 
sortByName( ) 
DocumentList 
add( ) 
delete( ) 
Document 
name : int 
docid : int 
numField : int 
get( ) 
open( ) 
close( ) 
read( ) 
sortFileList( ) 
create( ) 
fillDocument( ) 
fList 
1 
FileList 
add( ) 
delete( ) 
File 
read( ) 
read() fill the 
code.. 
Sequence Diagram 
user 
mainWnd fileMgr : 
FileMgr 
repository document : 
Document 
gFile 
1: Doc view request ( ) 
2: fetchDoc( ) 
3: create ( ) 
4: create ( ) 
5: readDoc ( ) 
6: fillDocument ( ) 
7: readFile ( ) 
8: fillFile ( ) 
9: sortByName ( ) 
ƯÁ¤¹®¼¿¡ ´ëÇÑ º¸±â¸¦ 
»ç¿ëÀÚ°¡ ¿äûÇÑ´Ù. 
ÈÀÏ°ü¸®ÀÚ´Â Àоî¿Â 
¹®¼ÀÇ Á¤º¸¸¦ ÇØ´ç ¹®¼ 
°´Ã¼¿¡ ¼³Á¤À» ¿äûÇÑ´Ù. 
È¸é °´Ã¼´Â ÀоîµéÀÎ 
°´Ã¼µé¿¡ ´ëÇØ À̸§º°·Î 
Á¤·ÄÀ» ½ÃÄÑ È¸é¿¡ 
º¸¿©ÁØ´Ù. 
Deployment Diagram 
 Window95 
¹®¼°ü¸® 
Ŭ¶óÀ̾ðÆ®.EXE 
 Windows 
NT 
¹®¼°ü¸® ¿£Áø.EXE 
Windows 
NT 
Windows95 
Solaris 
ÀÀ¿ë¼¹ö.EXE 
 Alpha 
UNIX 
 IBM 
Mainframe 
µ¥ÀÌŸº£À̽º¼¹ö 
Windows95 
¹®¼°ü¸® ¾ÖÇø´ 
ºÐ»ê ȯ°æÀÇ Çϵå¿þ¾î¹× ³×Æ®¿÷À¸·ÎÀÇ Á¤º¸ ½Ã½ºÅÛ ¿¬°á ¸ðµ¨ 
 - À©µµ¿ì 95 : Ŭ¶óÀ̾ðÆ® 
 - À©µµ¿ì NT: ÀÀ¿ë¼¹ö 
 - À ´¯Ð½º ¸Ó½Å: ÀÀ¿ë ¼¹ö ¹× µ¥ÀÌŸ ¼¹ö, Åë½Å ¼¹ö 
 - IBM ¸ÞÀÎÇÁ·¹ÀÓ: µ¥ÀÌŸ ¼¹ö, Åë½Å ¼¹ö 
10 
UML 
• UML là ký pháp chứ 
không phải là phương 
pháp 
• UML có thể áp dụng 
cho tất cả các pha của 
quy trình phát triển 
phần mềm 
• "Rational Unified 
Process" - quy trình 
phát triển cho UML 
11 
• Vào 1994, có hơn 50 phương pháp mô hình hóa 
hướng đối tượng: 
− Fusion, Shlaer-Mellor, ROOM, Class-Relation,Wirfs-Brock, 
Coad-Yourdon, MOSES, Syntropy, BOOM, OOSD, OSA, 
BON, Catalysis, COMMA, HOOD, Ooram, DOORS  
• “Meta-models” tương đồng với nhau 
• Các ký pháp đồ họa khác nhau 
• Quy trình khác nhau hoặc không rõ ràng 
 Cần chuẩn hóa và thống nhất các phương pháp 
Lịch sử phát triển 
12 
• UML được 3 chuyên gia hướng đối tượng hợp 
nhất các kỹ thuật của họ vào năm 1994: 
− Booch91 (Grady Booch): Conception, Architecture 
− OOSE (Ivar Jacobson): Use cases 
− OMT (Jim Rumbaugh): Analysis 
• Thiết lập một phương thức thống nhất để xây 
dựng và “vẽ” ra các yêu cầu và thiết kế hướng đối 
tượng trong quá trình PTTK phần mềm UML 
được công nhận là chuẩn chung vào năm 1997. 
Lịch sử phát triển của UML 
13 
UML là ngôn ngữ 
hợp nhất các mô 
hình khác nhau 
Lịch sử phát triển của UML 
Fusion 
Operation descriptions, 
message numbering 
Before and after 
conditions 
Meyer 
Harel 
State charts 
Wirfs-Brock 
Responsibilities 
Embley 
Singleton classes, 
High-level view 
Odell 
Classification Object lifecycles 
Shlaer- Mellor 
Gamma, et.al 
Frameworks, patterns, 
notes 
Booch Rumbaugh Jacobson 
Selic, Gullekson, Ward 
ROOM (Real-Time 
Object-Oriented Modeling) 
Lịch sử phát triển của UML 
UML 
Partners’ 
Expertise 
UML 1.0 
(Jan. ‘97) 
UML 1.1 
(Sept. ‘97) 
UML 1.5 
(March, ‘03) 
UML 2.0 
(2004) 
Other 
Methods 
Booch ‘91 OMT - 1 OOSE 
Booch ’93 OMT - 2 
Unified Method 0.8 
(OOPSLA ’95) 
UML 0.9 
(June ‘96) 
UML 0.91 
(Oct. ‘96) 
and 
15 
Mục đích của OOAD 
• Chuyển các yêu cầu của bài toán thành một bản 
thiết kế của hệ thống sẽ được xây dựng 
• Tập trung vào quá trình phân tích các YÊU CẦU 
của hệ thống và thiết kế các MÔ HÌNH cho hệ 
thống đó trước giai đoạn lập trình 
• Được thực hiện nhằm đảm bảo mục đích và yêu 
cầu của hệ thống được ghi lại một cách hợp lý 
trước khi hệ thống được xây dựng 
• Cung cấp cho người dùng, khách hàng, kỹ sư 
phân tích, thiết kế nhiều cái nhìn khác nhau về 
cùng một hệ thống 
16 
Các công cụ UML 
• Công cụ mã nguồn mở: 
− EclipseUML 
− UmlDesigner 
− StarUML 
− Argo UML... 
• Công cụ thương mại: 
− Enterprise Architect 
− IBM Rational Software Architect 
−Microsoft Visio 
− Visual Paradigm for UML 
− SmartDraw... 
17 
• Biểu đồ use case (Use Case Diagram) 
• Biểu đồ hoạt động (Activity Diagram) 
• Biểu đồ tương tác (Interaction Diagrams) 
− Biểu đồ trình tự (Sequence Diagram) 
− Biểu đồ giao tiếp/cộng tác (Communication/Collaboration Diagram) 
• Biểu đồ trạng thái (Statechart Diagram) 
• Biểu đồ cấu trúc tĩnh (Static Structure Diagrams) 
− Biểu đồ lớp (Class Diagram) 
− Biểu đồ đối tượng (Object Diagram) 
• Biểu đồ thực thi (Implementation Diagrams) 
− Biểu đồ thành phần (Component Diagram) 
− Biểu đồ triển khai (Deployment Diagram) 
Các biểu đồ UML 
Biểu đồ use case 
Use case diagram 
2 
19 
• Mỗi hệ thống tương tác với con người hoặc các 
hệ thống khác để thực hiện nhiệm vụ 
• Các hành vi của hệ thống có thể được mô tả 
trong các use case. 
−What, not How 
− Các use case mô tả các tương tác giữa hệ thống và môi 
trường của nó 
 Biểu đồ use case 
Tổng quan 
20 
• Biểu đồ mô tả các yêu cầu chức năng của hệ 
thống dưới dạng các use case. 
• Bao gồm các chức năng mong đợi của hệ thống 
(use case) và môi trường (actor) của nó. 
Tổng quan về biểu đồ use case 
View Report Card 
Student 
Register for Courses 
Login 
21 
• Giống như một bản hợp đồng giữa người phát 
triển phần mềm và khách hàng. 
• Là công cụ mạnh mẽ cho việc lập kế hoạch 
Được dùng trong tất cả các giai đoạn trong quy 
trình phát triển hệ thống 
− Khách hàng phê chuẩn biểu đồ use-case 
− Sử dụng biểu đồ use case để thảo luận với khách hàng. 
− Các thành viên tham gia vào dự án, sử dụng mô hình này 
để hiểu rõ hơn về hệ thống 
Mục đích 
22 
• Tác nhân 
− là bất kỳ thứ gì tương tác với hệ thống, có sự trao đổi dữ 
liệu với hệ thống, có thể là: 
+ Người dùng, 
+ Thiết bị phần cứng 
+ Hệ thống phần mềm khác 
− Là một lớp/loại người dùng chứ không phải một người 
cụ thể 
−Một người dùng cụ thể có thể đóng vai trò là các tác 
nhân khác nhau, có nghĩa là người đó có nhiều vai trò 
khác nhau trong hệ thống 
− Không phải là một phần của hệ thống 
Các thành phần chính 
Actor 
23 
• Tác nhân trao đổi 
thông tin với hệ 
thống: 
• Gửi thông tin tới hệ 
thống 
• Nhận thông tin từ hệ 
thống 
- Tác nhân KHÔNG 
phải là một phần của 
hệ thống 
• Ví dụ: Hệ thống trả 
lời tự động 
Ví dụ 
24 
• Đặt các câu hỏi sau 
− Nhóm người nào yêu cầu hệ thống làm việc giúp họ? 
− Nhóm người nào kích hoạt chức năng của hệ thống? 
− Nhóm người nào sẽ duy trì và quản trị hệ thống hoạt 
động? 
− Hệ thống có tương tác với các thiết bị hay phần mềm 
ngoại vi nào khác hay không? 
• Thông tin về tác nhân 
− Tên tác nhân phải mô tả vai trò của tác nhân đó một cách 
rõ ràng 
− Tên nên là danh từ 
− Cần mô tả khái quát khả năng của tác nhân đó 
Xác định tác nhân của hệ thống 
25 
• Use case 
−Mô tả chức năng của hệ thống, là một chuỗi các hành 
động của hệ thống thực hiện nhằm thu được một kết 
quả dễ thấy tới một tác nhân nào đó. 
−Một use case mô hình hóa một hội thoại giữa một hoặc 
nhiều tác nhân với hệ thống 
−Một use case mô tả hành động của hệ thống thực hiện 
nhằm mang đến một giá trị nào đó cho tác nhân. 
Các thành phần chính (tiếp) 
Use Case 
26 
Xác định use case của hệ thống 
• Xem các yêu cầu chức năng 
• Đối với mỗi tác nhân tìm được, đặt các câu hỏi: 
− Các tác nhân yêu cầu những gì từ hệ thống 
− Các công việc chính mà tác nhân đó muốn HT thực thi? 
− Tác nhân đó có tạo ra hay thay đổi dữ liệu gì của HT? 
− Tác nhân đó có phải thông báo gì cho HT? 
− Tác nhân đó có cần thông tin thông báo gì từ HT? 
• Thông tin về use case 
− Tên của UC nên chỉ rõ kết quả của quá trình tương tác với 
tác nhân 
− Tên nên là động từ 
−Mô tả ngắn gọn về mục đích của UC 
27 
• Tạo ra các UC quá nhỏ 
− Hành động quá đơn giản mà chỉ cần mô tả bởi vài dòng 
• Tạo ra quá nhiều Use case (hàng chục) 
− Nhóm các Use case liên quan thành một Use case tổng quát 
(mức 1) 
− Mô tả các Use Case tổng quát ở một sơ đồ khác (mức 2) 
+ Ví dụ: “Quản lý sách” bao gồm “Nhập sách”, “Xuất sách”, “” 
• Sử dụng các Use-case quá cụ thể, hoặc làm việc với dữ 
liệu quá cụ thể. Ví dụ: 
− “Tìm sách theo tên” (nên là “Tìm sách”) 
− “Nhập Pin vào máy ATM” (nên là “Nhập PIN”) 
− “Thêm sách” (nên là “Quản lý sách” bao gồm “Thêm sách”) 
Những điều nên tránh khi tạo UC 
28 
Các thành phần chính (tiếp) 
• Liên hệ (relationship) 
−Mối liên hệ giữa các actor với nhau 
+ Khái quát hóa 
+ Giao tiếp 
−Mối liên hệ giữa actor và use case 
+ Giao tiếp 
−Mối liên hệ giữa các use case với nhau 
+ Generalization: Khái quát hóa 
+ Include: Bao hàm 
+ Extend: Mở rộng 
29 
• Khái quát hóa 
(Generalization) 
− Tác nhân con kế thừa tính chất 
và hành vi của tác nhân cha 
− Ví dụ 
• Giao tiếp (Association) 
− Các tác nhân tương tác với 
nhau (gửi và nhận thông điệp) 
− Ví dụ 
Giữa các actor 
30 
• Thiết lập quan hệ giữa Tác nhân và Use Case 
− Chúng tương tác bằng cách gửi các tín hiệu cho nhau 
• Một use case mô hình hóa một hội thoại giữa các 
tác nhân và hệ thống 
• Một use case được bắt đầu bởi một tác nhân để 
gọi một chức năng nào đó trong hệ thống. 
Giữa actor với use case 
Actor 
Association 
Use Case 
31 
Giữa actor với use case (tiếp) 
• Chiều của quan hệ chính là chiều của tín hiệu gửi đi 
• Từ tác nhân tới Use Case 
− Kích hoạt Use case 
− Hỏi thông tin nào đó trong hệ thống 
− Thay đổi thông tin nào đó trong hệ thống 
− Thông báo cho UC về một sự kiện đặt biệt nào đó xảy ra với 
hệ thống 
• Từ Use Case tới tác nhân: 
− Nếu như có một điều gì đó xảy ra với HT và tác nhân đó cần 
được biết sự kiện đó 
− UC đôi khi cần hỏi thông tin nào đó từ một tác nhân trước 
khi UC đó đưa ra một quyết định 
32 
• Generalization 
• > 
− always use 
• > 
− sometime use 
Giữa các use case 
33 
• Được sử dụng để chỉ ra một vài tính chất chung 
của một nhóm tác nhân hoặc UC 
• Sử dụng khái niệm kế thừa 
−Mô tả hành vi chung (chia sẻ) trong UC cha 
−Mô tả hành vi riêng trong (các) UC con 
a. Quan hệ generalization 
34 
• Cho phép một UC sử dụng chức năng của UC 
khác 
• Chức năng của UC Inclusion sẽ được gọi trong 
UC Base 
• Sử dụng stereotype là > 
b. Quan hệ > 
35 
• Cho phép mở rộng chức năng của một UC 
• Chèn hành vi của UC Extension vào UC Base 
− Chỉ chèn khi điều kiện extend đúng (mở rộng, phát sinh) 
− Chèn vào lớp cơ sở tại điểm phát sinh (extension point) 
• Sử dụng stereotype là > 
c. Quan hệ > 
36 
• Trả lời các câu hỏi sau: 
−Mô tả các chức năng của hệ thống 
− Sinh viên có thể tác động lên những use-case nào? 
− Giáo viên có thể tác động lên những use-case nào? 
− Nếu A vừa là sinh viên vừa là giáo viên, anh ta có thể 
thực hiện được những use-case nào? 
− Sơ đồ này không nói lên được những gì? 
− Những use-case nào cần thiết thực hiện đầu tiên? 
Đọc biểu đồ use case 
37 
Ví dụ 
View Report Card 
Student 
Register for Courses 
Login 
Select Courses to 
Teach 
Submit Grades 
Professor 
Registrar 
Billing System 
Maintain Professor 
Information 
Maintain Student 
Information 
Close Registration 
Course Catalog 
Biểu đồ hoạt động 
Activity diagram 
3 
39 
Biểu đồ hoạt động 
• Biểu đồ hoạt động (Activity Diagram – AD) được 
sử dụng để mô tả các hoạt động và các hành 
động được thực hiện trong một use case 
− Biểu đồ luồng (flow chart): Chỉ ra luồng điều khiển từ 
hoạt động/hành động này đến hoạt/hành động khác. 
Flow of Events 
This use case starts when the Registrar requests that the 
system close registration. 
1. The system checks to see if registration is in progress. If 
it is, then a message is displayed to the Registrar and the 
use case terminates. The Close Registration processing 
cannot be performed if registration is in progress. 
2. For each course offering, the system checks if a professor 
has signed up to teach the course offering and at least three 
students have registered. If so, the system commits the 
course offering for each schedule that contains it. 
Activity 1 Activity 3 
Activity 2 
40 
• Hoạt động 
− Đặc tả cho hành vi được diễn tả như một luồng thực thi 
thông qua sự sắp xếp thứ tự của các đơn vị nhỏ hơn. 
− Các đơn vị nhỏ hơn bao gồm các hoạt động lồng nhau 
và các hành động riêng lẻ cơ bản 
• Có thể chứa các ràng buộc biểu thức logic khi 
hoạt động được gọi hoặc kết thúc 
Biểu đồ hoạt động 
> 
Boolean constraint 
Activity 5 
> 
Boolean constraint 
Activity 4 
Activity 2 
41 
Ví dụ: Đăng ký khóa học 
Synchronization Bar (Fork) 
Thanh đồng bộ (phân nhánh) Guard Condition 
(Điều kiện ràng buộc) 
Synchronization Bar (Join) 
Thanh đồng bộ (Kết hợp) 
Decision 
Concurrent Threads 
(Tiến trình song song) 
Transition 
(Chuyển dịch) 
Select Course 
[ add course ] 
Check 
Schedule 
Check 
Pre-requisites 
Assign to 
Course 
Resolve 
Conflicts 
Update 
Schedule 
Delete Course 
[ checks completed ] [ checks failed ] 
[ delete course ] 
Activity/Action 
Initial activity 
Final activity 
42 
Gọi một AD khác 
43 
• Biểu đồ hoạt động chỉ mô tả điều gì xảy ra chứ 
không mô tả ai làm gì 
• Nếu muốn chỉ ra ai làm gì thì có thể phân chia 
thành các phần bao gồm các hoạt động do ai làm 
• Có thể phân chia theo một chiều (hàng hoặc cột) 
hoặc hai chiều (cả hàng và cột) 
Phân chia (Partition) 
Phân chia một chiều 
• Cho: 
• Các tác nhân: Người mua, Hệ thống E-mail, Hệ 
thống cho vay và Hệ thống báo cáo tín dụng 
• Các use case: Tìm người môi giới, Quản lý hồ sơ 
cá nhân, Tìm kiếm nhà và Yêu cầu vay 
• Các mối liên kết: 
• Từ người mua tới Tìm người môi giới 
• Từ người mua tới Quản lý hồ sơ cá nhân 
• Từ người mua tới Tìm kiếm nhà 
• Từ người mua tới Yêu cầu vay 
• Quản lý hồ sơ cá nhân tới Hệ thống e-mail 
• Tìm kiếm nhà tới Hệ thống e-mail 
• Yêu cầu vay tới Hệ thống e-mail, Hệ thống cho vay 
• Yêu cầu vay tới Hệ thống báo cáo tín dụng 
• Hãy vẽ: 
• Biểu đồ use-case 
Bài tập 
• Cho: 
• Các trạng thái hành động: 
• Chọn hồ sơ 
• Tìm hồ sơ người mua 
• Tạo hồ sơ mới 
• Đăng nhập 
• Luồng hoạt động: 
• Bắt đầu từ Chọn hồ sơ tới Tìm hồ sơ người mua rồi 
đi từ Tìm hồ sơ người mua đến Tạo hồ sơ mới nếu 
hồ sơ không tồn tại. Nếu hồ sơ tồn tại thì có thể 
Đăng nhập 
• Hãy vẽ: 
• Biểu đồ hoạt động 
Bài tập 
Biểu đồ tương tác 
Interaction diagram 
4 
48 
• Các đối tượng sẽ trở nên vô nghĩa nếu chúng 
không cộng tác với nhau để giải quyết vấn đề. 
−Mỗi đối tượng có trách nhiệm quản lý hành vi và trạng 
thái của nó. 
− Không một ai, không một đối tượng nào lại tự mình làm 
được mọi việc. 
• Các đối tượng tương tác với nhau như thế nào? 
− Chúng tương tác với nhau thông qua các thông điệp. 
− Cho biết làm thế nào mà một đối tượng yêu cầu một đối 
tượng khác thực hiện hành động. 
Các đối tượng cần phải cộng tác 
49 
• Tương tác giữa đối tượng đăng ký khóa học với 
hệ thống thông tin khóa học 
Ví dụ 
 : Car buyer 
:RegistrationController :CourseCatalogSystem 
getCourseOfferings(forSemester) 
Thông điệp 
50 
Biểu đồ tương tác 
• Biểu đồ tương tác - Interaction diagram 
• Mô hình hóa phương diện động của hệ thống, 
mô tả tương tác giữa các đối tượng 
• Thường dùng để mô tả kịch bản của use case 
• Các loại biểu đồ tương tác 
− Biểu đồ tuần tự (Sequence diagram) 
− Biểu đồ giao tiếp (Communication diagram) 
• Các biến thể chuyên dụng 
− Biểu đồ thời gian (Timing Diagram) 
− Biểu đồ tương tác tổng quát (Interaction Overview 
Diagram) 
• Biều đồ trình tự 
• Một cách nhìn hướng về trình tự thời gian tương 
tác giữa các đối tượng. 
• Biểu đồ giao tiếp 
• Một cách nhìn thông điệp giữa các đốhướng về 
cấu trúc của quá trình truyền thông điệp giữa các 
đối tượng. 
Các biểu đồ tương tác 
• Biểu đồ thời gian 
• Một cách nhìn về sự ràng buộc thời gian của các 
thông điệp trong một tương tác. 
• Thường sử dụng trong các ứng dụng thời gian 
thực, vì trong các ứng dụng này yếu tố thời gian 
mang tính quyết định 
• Biểu đồ tương tác tổng quan 
• Một cách nhìn tương tác ở mức cao bằng cách 
kết hợp các biểu đồ tương tác theo một trình tự 
logic nào đó. 
Các biểu đồ tương tác (tiếp) 
Biểu đồ tương tác 
Biểu đồ trình tự 
Sequence diagram (SD) 
4.1 
56 
• Biểu đồ trình tự (Sequence diagram – SD) 
• Được sử dụng để xác định và chỉ rõ vai trò của 
các đối tượng tham gia vào luồng sự kiện của use 
case 
• Là một loại biểu đồ tương tác, mô tả mô hình 
tương tác giữa các đối tượng, trong đó nhấn 
mạnh vào trình tự thời gian của các thông điệp 
trao đổi giữa các đối tượng đó. 
Biểu đồ trình tự 
57 
• Biểu đồ trình tự chỉ ra: 
−Các đối tượng tham gia vào tương tác. 
−Thời gian sống của các đối tượng 
−Trình tự các thông điệp được trao đổi. 
Biểu đồ trình tự 
Biểu đồ trình tự 
58 
Ví dụ: Đăng ký khóa học 
 : Student :RegisterForCoursesForm :RegistrationController : Course Catalog :CourseCatalogSystem 
1: create schedule( ) 
5: display course offerings( ) 
2: get course offerings( ) 
3: get course offerings(forSemester) 
6: display blank schedule( ) 
4: get course offerings( ) 
Select Offerings 
ref 
59 
Biểu đồ trình tự: Đối tượng 
:RegisterForCoursesForm :RegistrationController SWTSU Catalog : 
CourseCatalogSystem 
Các đối tượng nặc danh 
(Anonymous object) 
Đường sống 
(Lifeline) 
Đối tượng có tên 
(named object) 
60 
:RegisterForCoursesForm :RegistrationController SWTSU Catalog : 
CourseCatalogSystem 
 : Student : Course Catalog 
Biểu đồ trình tự: Tác nhân 
Các tác nhân cụ thể 
(Actor instance) 
61 
Biểu đồ trình tự: Thông điệp 
Thông điệp gọi chính nó 
(Reflexive/self-call Message) 
1: create schedule( ) 
2: get course offerings( ) 
3: get course offerings(for Semester) 
4: get course offerings( ) 
:RegisterForCoursesForm :RegistrationController SWTSU Catalog : 
CourseCatalogSystem 
 : Student : Course Catalog 
6: display blank schedule( ) 
5: display course offerings( ) 
Thông điệp 
(Message) 
Trả về 
(Return) 
62 
1: create schedule( ) 
2: get course offerings( ) 
3: get course offerings(for Semester) 
4: get course offerings( ) 
6: display blank schedule( ) 
:RegisterForCoursesForm :RegistrationController SWTSU Catalog : 
CourseCatalogSystem 
 : Student : Course Catalog 
Biểu đồ trình tự: Kích hoạt 
Kích hoạt 
(Activation) 
5: display course offerings( ) 
63 
Biểu đồ trình tự: Khung tương tác 
 : Student :RegisterForCoursesForm :RegistrationController : Course Catalog :CourseCatalogSystem 
1: create schedule( ) 
5: display course offerings( ) 
2: get course offerings( ) 
3: get course offerings(forSemester) 
6: display blank schedule( ) 
4: get course offerings( ) 
Select Offerings 
ref 
Khung tương tác 
(Interaction Frame) 
Toán tử 
(Operator) 
64 
Toán tử Ý nghĩa 
alt Khung lựa chọn nhiều, chỉ có lựa chọn có điê ̀u kiê ̣n đúng sẽ 
được thực hiê ̣n 
opt Tu ̀y chọn, chỉ thực hiê ̣n khi điê ̀u kiện thỏa ma ̃n 
par Song song, mỗi khung cha ̣y song song 
loop Lă ̣p la ̣i, khung có thể được thực hiê ̣n nhiê ̀u lâ ̀n 
region Vu ̀ng then chốt, ta ̣i một thời điê ̉m chỉ có một luô ̀ng cha ̣y nó 
ref Tham chiê ́u đến một tương ta ́c kha ́c trong biê ̉u đồ kha ́c, vẽ trùm 
trên ca ́c lifetime liên quan, có thể có tham số va ̀ gia ́ trị tra ̉ về 
sd Vẽ xung quanh 1 biê ̉u đồ biê ̉u đồ trình tự nếu câ ̀n 
Biểu đồ trình tự: Khung tương tác 
65 
Ví dụ 
procedure dispatch 
 foreach (lineitem) 
 if 
(product.value>$10K) 
 careful.dispatch 
 else 
 regular.dispatch 
 end if 
 end for 
 if (needsConfirmation) 
 messenger.confirm 
end procedure 
Biểu đồ tương tác 
Biểu đồ giao tiếp 
Communication diagram (CD) 
4.2 
67 
• Biểu đồ giao tiếp nhấn mạnh vào việc tổ chức 
các đối tượng tham gia vào tương tác. 
• Biểu đồ giao tiếp chỉ ra: 
−Các đối tượng tham gia vào tương tác. 
−Các liên kết giữa các đối tượng. 
−Các thông điệp trao đổi giữa các đối tượng. 
Biểu đồ giao tiếp 
Biểu đồ giao tiếp 
68 
Ví dụ 
 : Student 
 : RegisterForCoursesForm 
 : RegistrationController : CourseCatalogSystem 
5: display course offerings( ) 
6: display blank schedule( ) 
 : Course Catalog 1: create schedule( ) 
2: get course offerings( ) 
3: get course offerings(forSemester) 
4: get course offerings( ) 
69 
Đối tượng 
Đối tượng (Object) 
 : RegisterForCoursesForm 
 : RegistrationController SWTSU Catalog 
: CourseCatalogSystem 
70 
Tác nhân 
 : Student : Course Catalog 
 : RegisterForCoursesForm 
 : RegistrationController SWTSU Catalog 
: CourseCatalogSystem 
Tác nhân 
(Actor) 
71 
Liên kết và thông điệp 
 : Student 
 : RegisterForCoursesForm 
 : RegistrationController : CourseCatalogSystem 
5: display course offerings( ) 
6: display blank schedule( ) 
 : Course Catalog 1: create schedule( ) 
2: get course offerings( ) 
3: get course offerings(forSemester) 
4: get course offerings( ) 
Liên kết 
(Link) 
Thông điệp 
(message) 
72 
Biểu đồ trình tự và giao tiếp 
• Giống nhau: 
• Tương đương về ngữ nghĩa 
− Cùng đưa ra thông tin về sự tương tác giữa các đối tượng 
qua các thông điệp 
− Có thể chuyển đổi giữa hai biểu đồ mà không mất mát 
thông tin 
• Mô hình hóa phương diện động của hệ thống 
• Mô hình hóa kịch bản use case. 
73 
Biểu đồ trình tự và giao tiếp 
Biểu đồ tuần tự 
• Chỉ ra thứ tự rõ ràng 
của các thông điệp 
• Thể hiện tốt hơn luồng 
công việc 
• Mô hình hóa trực quan 
hơn toàn bộ luồng thực 
thi (theo thời gian) 
• Thể hiện tốt hơn đối 
với các đặc tả thời gian 
thực và các kịch bản 
phức tạp 
Biểu đồ giao tiếp 
• Chỉ ra mối quan hệ rõ 
ràng giữa các đối tượng 
• Thể hiện tốt hơn quá 
trình giao tiếp 
• Mô hình hóa trực quan 
hơn cho tất cả các ảnh 
hưởng của đối tượng 
• Thể hiện rõ hơn hiệu quả 
của quá trình tương tác 
trên từng đối tượng, dễ 
hiểu hơn cho các buổi 
brainstorming 
Biểu đồ lớp 
Class diagram 
5 
77 
Biểu đồ lớp 
• Biểu đồ lớp (Class diagram – CD) 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 
− Chỉ ra cấu trúc tĩnh của mô hình như lớp, cấu trúc bên 
trong của chúng và mối quan hệ với các lớp khác. 
− 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. 
• 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. 
79 
• Sử dụng hình chữ nhật gồm 3 
thành phần 
− Tên lớp 
− Các thuộc tính 
− Các phương thức 
Lớp 
Class_Name 
attribute1 
attribute2 
attribute3 
method1() 
method2() 
method3() 
80 
• Chỉ ra tên, kiểu và giá trị mặc định nếu có 
− attributeName : Type = Default 
• Tuân theo quy ước đặt tên của ngôn ngữ cài đặt 
và của dự án. 
• Kiểu (type) nên là kiểu dữ liệu cơ bản trong ngôn 
ngữ thực thi 
− 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. 
Biểu diễn thuộc tính 
81 
• Tên phương thức: 
−Mô tả kết quả 
− Sử dụng góc nhìn của đối tượng khách (client – đối 
tượng gọi) 
− Nhất quán giữa các lớp 
• Chữ ký của phương thức: 
− operationName([direction] 
parameter:class,...):returnType 
+ Direction: in (mặc định), out hoặc inout 
Mô tả phương thức 
82 
• Phạm vi truy cập được sử dụng để thực hiện khả 
năng đóng gói 
• Sử dụng các ký hiệu 
− + Public access 
− # Protected access 
− - Private access 
Phạm vi truy cập 
Class1 
- privateAttribute 
+ publicAttribute 
# protectedAttribute 
- privateOperation () 
+ publicOPeration () 
# protectedOperation () 
83 
• Phạm vi truy cập xác định số lượng thể hiện của 
thuộc tính/thao tác: 
− Instance (Thành viên đối tượng): Một thể hiện 
cho mỗi thể hiện của mỗi lớp 
−Classifier (Thành viên lớp): Một thể hiện cho tất 
cả các thể hiện của lớp 
• Thành viên lớp (thành viên tĩnh) được ký hiệu 
bằng cách gạch dưới tên thuộc tính/thao tác. 
Thành viên lớp 
Class1 
- classifierScopeAttr 
- instanceScopeAttr 
+ classifierScopeOp () 
+ instanceScopeOp () 
84 
• Hệ thống đăng ký khóa học 
Ví dụ 
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() 
85 
• Biểu đồ lớp sơ lược 
Ví dụ 
CloseRegistrationForm 
LoginForm 
Professor 
BillingSystem 
CloseRegistrationController 
RegisterForCoursesForm 
Course 
CourseCatalogSystem 
Student 
RegistrationController 
CourseOffering 
Schedule 
86 
• Một cơ chế chung để tổ chức các phần tử thành 
nhóm. 
• Một phần tử trong mô hình có thể chứa các phần 
tử khác. 
Gói 
University 
Artifacts 
87 
Ví dụ 
Registration 
CloseRegistrationForm CloseRegistrationController 
RegisterForCoursesForm RegistrationController 
88 
• Mối liên hệ ngữ nghĩa giữa hai hay nhiều lớp chỉ 
ra sự liên kết giữa các thể hiện của chúng 
• 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. 
Liên kết 
Course Student Schedule 
89 
• Bội số quan hệ là số lượng thể hiện của một lớp 
liên quan tới MỘT thể hiện của lớp khác. 
• Với mỗi liên kết, có hai bội số quan hệ cho hai 
đầu của liên kết. 
− Với mỗi đối tượng của Professor, có nhiều Course 
Offerings có thể được dạy. 
− Với mỗi đối tượng của Course Offering, có thể có 1 hoặc 
0 Professor giảng dạy. 
Bội số quan hệ 
Professor CourseOffering 
0..1 0..* 
instructor 
90 
Ví dụ 
RegisterForCoursesForm 
CourseOffering Schedule 
0..4 
0..* 
Student 
0..* 
1 
RegistrationController 
1 
1 
0..1 
0..1 
91 
• 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ó. 
− Kết tập là mối quan hệ “là một phần” (“is a part-of”). 
• Bội số quan hệ được biểu diễn giống như các liên 
kết khác 
Kết tập 
Part Whole 
0..1 
1 
92 
Ví dụ 
RegisterForCoursesForm 
CourseOffering Schedule 
0..4 
0..* 
Student 
0..* 
1 
RegistrationController 
1 
1 
0..1 
0..1 
93 
• 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 
−Whole sở hữu Part, tạo và hủy Part. 
− 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. 
Cấu thành 
Whole 
Composition 
Part 
Part Whole 
96 
So sánh kết tập và cấu thành 
• Aggregation – University and Chancellor 
− Nếu không có trường Đại học (University), hiệu trưởng 
(Chancellor) không thể tồn tại. 
− Nếu không có Chancellor, University vẫn có thể tồn tại 
• Composition – University and Faculty 
− University không thể tồn tại nếu không có các khoa 
(Faculty) và ngược lại (share time-life) 
+ Thời gian sống của University gắn chặt với thời gian sống của 
Faculty 
+ Nếu Faculties được giải phóng thì University không thể tồn 
tại và ngược lại 
97 
• Mối quan hệ giữa các lớp trong đó một lớp chia 
sẻ cấu trúc và/hoặc hành vi với một hoặc nhiều 
lớp khác 
• 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 
− Đơn kế thừa (Single inheritance) 
− Đa kế thừa (Multiple inheritance) 
• Là mối liên hệ “là một loại” (“is a kind of”) 
Tổng quát hóa (Generalization) 
98 
• Lớp trừu tượng không thể có đối tượng 
− Chứa phương thức trừu tượng 
− Chữ nghiêng 
Lớp trừu tượng 
There are no direct instances of Animal 
Lion Tiger 
Animal 
+ communicate () 
+ communicate () + communicate () 
All objects are either lions or tigers 
Abstract class 
Abstract operation 
Communication 
Discriminator 
Thank you! 
Any questions? 

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_bai_13_tong_quan_ve_uml.pdf