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óm tắt 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: ...se 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ì...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á...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ụ procedur...
à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:
- bai_giang_lap_trinh_huong_doi_tuong_bai_13_tong_quan_ve_uml.pdf