Bài giảng UML - Chương 3: Sơ đồ lớp - Trương Quốc Định
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng UML - Chương 3: Sơ đồ lớp - Trương Quốc Định", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_uml_chuong_3_so_do_lop_truong_quoc_dinh.ppt
Nội dung text: Bài giảng UML - Chương 3: Sơ đồ lớp - Trương Quốc Định
- Chương 3 : Sơ đồ lớp (class ) GV : TS. Trương Quốc Định
- Nội dung Khái niệm sơ đồ lớp Các thành phần trong sơ đồ lớp 2
- Khái niệm sơ đồ lớp Được xem là một trong số các mô hình quan trọng của pp phân tích hướng đối tượng Mô tả cấu trúc tĩnh của hệ thống Mô tả thành phần dữ liệu của hệ thống 3
- Các thành phần trong sơ đồ lớp Lớp Thuộc tính Phương thức Quan hệ Associations Generalization Dependency Realization Ràng buộc, chú thích 4
- Lớp Là khái niệm cho phép mô tả một tập hợp các đối tượng có cùng các đặc tính: cùng một ngữ nghĩa, có chung các thuộc tính, các phương thức và các quan hệ. Một đối tượng là một thể hiện của lớp. Class +Attribute1 +Attribute2 +Operation1() +Operation2() 5
- Lớp Stereotype Lớp biên (boundary class). Lớp biên là lớp nằm trên biên hệ thống và môi trường. Chúng có thể là biểu mẫu (form), báo cáo (report), giao diện với phần cứng như máy in, máy quét và là giao diện với các hệ thống khác. Lớp thực thể (entity class). Lớp thực thể lưu trữ thông tin mà nó sẽ được ghi vào bộ nhớ ngoài. Thí dụ lớp Mon_hoc là lớp thực thể. Lớp điều khiển (control class). Lớp điều khiển có trách nhiệm điều phối hoạt động của các lớp khác. Lop_Bien Lop_Thuc_The Lop_Dieu_Khien 6
- Lớp Lớp biên Giao diện người dùng Tập trung vào thông tin được thể hiện, tương tác như thế nào Không tập trung vào các hiệu ứng hình ảnh Ví dụ - Form lập hóa đơn bán hàng Giao diện hệ thống Tập trung vào các chuẩn giao tiếp Không tập trung vào làm thế nào cài đặt các chuẩn giao tiếp đó 7
- Lớp Lớp điều khiển Điều khiển, phối hợp các hoạt động của hệ thống Phân phối công việc cho các lớp Điều khiển lớp biên và lớp thực thể 8
- Lớp Abstract class Là lớp không thể khởi tạo trực tiếp đối tượng từ nó. Lớp trừu tượng được sử dụng với mục tiêu ạo các lớp kế thừa từ nó. Các lớp kế thừa có thể là lớp trừu tượng hoặc không. 9
- Lớp Interface Là lớp không có thuộc tính và các phương thức là các phương thức ảo. Các phương thức không được cài đặt. Các phương thức sẽ được cài đặt trong các lớp kế thừa. 10
- Các thành phần của Lớp Tên lớp : Phải có nghĩa, bắt đầu bằng chữ hoa Nếu được đóng gói, cần đặc tả các gói bao chứa nó theo thứ tự từ lớn đến nhỏ, phân cách nhau bởi dấu ‘:’ Thuộc tính Đặc tả bởi tên, kiểu dữ liệu, giá trị khởi tạo Tên thuộc tính phải duy nhất trong lớp đó Các kiểu dữ liệu chuẩn của UML 2.0 : String, Integer, Long, Boolean Phương thức Đặc tả kiểu trả về (nếu có) Đặc tả danh sách các đối số và kiểu tương ứng 11
- Các thành phần của lớp Thuộc tính Phạm vi Public. Các thuộc tính có tính chất này sẽ có thể truy xuất từ mọi lớp khác. Bất kỳ lớp nào trong hệ thống đều có thể quan sát và sửa đổi giá trị của thuộc tính. Private. Thuộc tính được gán tính chất này thì sẽ không nhìn thấy được từ lớp khác. Protected. Thuộc tính có tính chất này được chính lớp của nó và các lớp phân cấp dưới nó (lớp kế thừa) có thể xâm nhập. Package Implemetation. Thuộc tính được gán tính chất này cho thấy nó là public, nhưng chỉ các lớp trong gói mới xâm nhập được. 13
- Các thành phần trong sơ đồ lớp Lớp Thuộc tính Thuộc tính tĩnh (static) : chỉ có một bản sao của thuộc tính dùng chung cho mọi đối tượng của lớp Thuộc tính suy diễn (Derived) : giá trị được tính từ 1 hay nhiều thuộc tính khác 14
- Các thành phần của lớp Phương thức Operation Name (arg1: arg1 data type, arg2: arg2 data type ): return type. Các loại phương thức trên lớp Thao tác cài đặt (implemetor). Thao tác này cài đặt một vài chức năng tác nghiệp. Chúng được tìm ra từ các biểu đồ tương tác. Biểu đồ tương tác tập trung vào các chức năng tác nghiệp, hầu như mỗi thông điệp trên biểu đồ được ánh xạ thành thao tác cài đặt. Thao tác quản lý (manager). Thao tác manager quản lý việc tạo lập và hủy bỏ các đối tượng. Ví dụ, toán tử khởi tạo và hủy. Thao tác xâm nhập (access). Dùng để thâm nhập các thuộc tính có tính chất private hay protected. Thao tác trợ giúp (helper). Thao tác Helper là các thao tác mà chính lớp chứa nó cần đến để hực hiện trách nhiệm, nhưng các lớp khác không cần biết gì về chúng 15
- Các thành phần trong sơ đồ lớp Quan hệ Quan hệ biểu diễn sự kết nối ngữ nghĩa giữa các lớp, nó cho phép một lớp biết về các thuộc tính, thao tác và quan hệ của lớp khác có quan hệ với nó. Các quan hệ được thể hiện trên sơ đồ lớp. Giữa các lớp có bốn kiểu quan hệ chính, đó là: Kết hợp (association), Phụ thuộc (dependencies), Kết tập (aggregation) và Khái quát hóa (generalization). 16
- Quan hệ kết hợp Quan hệ kết hợp Là kết hợp ngữ nghĩa giữa hai lớp Có thể định nghĩa tự thân (các đối tượng của cùng một lớp có kết hợp với nhau). Kết hợp 1 chiều hoặc 2 chiều 2 lớp có quan hệ kết hợp với nhau nghĩa là các đối tượng thuộc hai lớp này có thể trao đổi thông điệp với nhau. 17
- A +B_Quan_He_A +A_Quan_He_B B +AttributeA: Integer +AttributeB: String // Generated by StarUML(tm) Java Add-In // Generated by StarUML(tm) Java Add-In // // // @ Project : Untitled // @ Project : Untitled // @ File Name : A.java // @ File Name : B.java // @ Date : 8/23/2011 // @ Date : 8/23/2011 // @ Author : // @ Author : // // public class A { public class B { public Integer AttributeA; public String AttributeB; public B A_Quan_He_B; public A B_Quan_He_A; } } 18
- Role name Association name instructor StaffMember Student 1 * instructs * Role Navigable Multiplicity (uni-directional) association * pre - requisites Courses 0 3 Reflexive association 19
- Quan hệ phụ thuộc Quan hệ phụ thuộc mô tả sự thay đổi một lớp nào đó (the supplier) sẽ làm thay đổi lớp còn lại (the client). Quan hệ phụ thuộc thường không có tên. Ví dụ : Trong ứng dụng trang bán hàng trực tuyến, lớp “Giỏ hàng” sẽ phụ thuộc lớp “Sản phẩm” vì lớp “Giỏ hàng” sẽ sử dụng lớp “Sản phẩm” như là một tham số của phương thức thêm hàng vào giỏ. 20
- Phụ thuộc sử dụng Lớp “client” yêu cầu phải tồn tại ít nhất một thể hiện của lớp “supplier” để có thể có được sự cài đặt đúng. 21
- Phụ thuộc gọi, phụ thuộc khởi tạo Phụ thuộc gọi mô tả lớp nguồn sẽ gọi một phương thức của lớp đích. Phụ thuộc khởi tạo mô tả rằng lớp nguồn sẽ khởi tạo các đối tượng thuộc vào lớp đích. 22
- Các thành phần trong sơ đồ lớp An instantiation dependency («instantiate») signifies that one or more methods belonging to instances of the source class create instances of the target class. A method belonging to an instance of the HTMLPageHandler class creates an instance of the LoginPage class. 23
- Các thành phần trong sơ đồ lớp A send dependency («send») signifies that instances of the source class send signals to instances of the target class. An abstraction dependency is one in which the client is at one level of abstraction and the supplier is at a different level. A realization dependency («realize») signifies that the supplier serves as the implementation of the client. 24
- Quan hệ kết tập Kết tập (aggregation) là hình thức mạnh của kết hợp. Quan hệ kết hợp giữa hai lớp có nghĩa là chúng có cùng mức, không lớp nào quan trọng hơn. Kết tập thể hiện mối quan hệ giữa toàn thể và bộ phận (whole-part), trong đó một lớp biểu diễn cái lớn hơn (tổng thể) còn lớp kia biểu diễn cái nhỏ hơn (bộ phận) Các lớp tham gia vào quan hệ kết tập được khởi tạo và hủy không đồng thời 25
- Nhận biết quan hệ kết tập Trả lời câu hỏi “A có phải là thành phần của B?” Tồn tại phương thức có thể xuất hiện ở cả hai lớp? Có thuộc tính nào đó giá trị của nó có thể lan tỏa sang tát cả các đối tượng của lớp thành phần? 26
- Quan hệ hợp thành Đây là hình thức mạnh hơn của quan hệ kết tập Cả hai lớp được tạo lập và hủy cùng thời điểm 27
- Quan hệ khái quát hóa Khái quát hóa gộp các thành phần chung của 1 tập các lớp để hình thành 1 lớp tổng quát hơn và nó được gọi là lớp cha. Chuyên biệt hóa cho phép thu thập các đặt trưng cụ thể của tập đối tượng chưa được lớp nào nhận ra. Các đặc tính mới được biểu diễn bởi các lớp mới, nó là các lớp con của lớp đang tồn tại. 28
- Tính bội Tính bội của quan hệ cho biết bao nhiêu hiện thực của lớp có quan hệ với một hiện thực của lớp khác vào một thời điểm. Khái niệm “bao nhiêu” được gọi là tính bội của một “vai trò” của kết hợp. Chú ý: bản số của một lớp ở đầu này của liên kết được ký hiệu ở lớp đầu kia của quan hệ. 29
- Vai trò của lớp Tên vai trò có thể được sử dụng trong các quan hệ kết hợp và tổ hợp thay cho tên quan hệ. Mỗi quan hệ nhị phân có hai vai trò, mỗi vai trò ở đầu cuối trên quan hệ trên sơ đồ. Vai trò mô tả lớp này “nhìn” lớp khác thông qua quan hệ kết hợp như thế nào. 30
- Quan hệ có thẩm định Được sử dụng để hạn chế phạm vi sử dụng của quan hệ kết hợp. Sự thẩm định thể hiện bằng cách Thêm chỉ số vào quan hệ, Một lớp khác vào lớp ban đầu Vector Object +Indice : Integer 1 * Ngan_Hang Khach_Hang +# Tai_Khoan 1 1 * 31
- Quan hệ do suy diến Được đặt điều kiện hoặc được suy diễn từ liên kết khác Dư thừa nhưng cải thiện tốc độ truy xuất dữ liệu Ký hiệu: có dấu slash (“/”) trước tên liên kết + Khach hang - ma KH - ho KH - ten KH - dia chi KH 1 > 1 co the 0 * + The ATM - ma the - ngay tao - s o du co TK 0 * cua TK 0 * 1 + Tai khoan - s o TK - ngay tao - s o du 32
- Khach_Hang 1 1 Hang_Hoa 1 * > 1 * 1 * 1 * Phieu_Thu Chi_Tiet_HD Hoa_Don +STT_PhieuThu +SL_Mua +So_Tien +DonGia_Mua +STT_HD 1 +Tong_Tien 1 * 33
- Quan hệ nhiều chiều Giống khái niệm của mối kết hợp trong mô hình cổ điển Trong UML, khuyến khích chuyển sang các quan hệ 2 chiều (hoặc 3 chiều) hoặc sử dụng lớp liên kết 34
- Quan hệ nhiều chiều Chuyển thành lớp 35
- Quan hệ OR Quan hệ ràng buộc giữa 2 hay nhiều kết hợp Cho biết các đối tượng của lớp chỉ có thể tham gia vào 1 liên kết tại 1 thời điểm Ký hiệu bằng đường gạch nối với đặc tả {or} 36
- Ràng buộc và ghi chú Ràng buộc là điều kiện trên thuộc tính, phương thức, quan hệ. Ghi chú là giải thích rõ hơn một vấn đề gì đó (thường kết hợp với lớp) Customer 1 * Order may be canceled id: long { value > 0 } { total < $50 } Constraint Note 37
- Nhan_Vien Ví dụ Nhan_Vien_Nhap_Lieu 1 Thu_Thu* 0 1 Xây dựng sơ đồ lớp cho phần mềm quản lý “Thư viện1 1 Nhap thong tin he thong Doc_Gia +MaDG điện tử” +Ngay_Cap 1 * Tai_Lieu 1 +Ma_TL Lap_Phieu_Muon Dang_Ky_Truoc Tai_Lieu_So +Ngay_Dang_Ky Tai_Lieu_Giay +So_Tap +Ten_TL +So ISBN 1 * 1 * 1 The_Muon Su*u_Lieu_Dien_Tu 0 * +STT_The +Ngay_Muon Tap_TC Tap Chi 1 +STT_Tap 1 * +Ngay_XB 1 * +Gia_Bia 1 * Sach 0 1 1 * +Nam_Xuat_Ban 1 Tac gia 1 * Linh_Vuc 0 1 +MaTG 1 * +MaLV +TenTG +LinhVuc Muon 1 +Ngay_Tra The_Loai +MaTL 1 * 1 * +TheLoai Quyen_TL 1 * +STT_Quyen 1 * 1 Tinh_Trang +MaTT 38 +TinhTrang
- Một ví dụ 39
- Một ví dụ 40
- Mô tả các phương thức Loại Phương Tên Diễn giải STT Tên phương thức Kiểu tham số Kiểu trả về Diễn giải phương thức PT thức lớp tham số tham số 1a HienKQCN Hiện kết quả cả năm đang xét 2b HienDSKQCN x Hiện tất cả danh sách kết quả cả năm Hiện danh sách kết quả cả năm và sắp xếp theo mã kết 3 HienDSKQCNTheoMa x quả Mã kết 4 TimKQCN x Ma Variable character quả cả KetQuaCaNam Tìm kết quả cả năm có mã kết quả là Ma năm 5 DSKQCN x KetQuaCaNam[ ] Tìm tất cả kết quả cả năm 6 DSMaKQCN x Variable character[ ] Tìm tất cả danh sách mã kết quả cả năm 7 DSHocSinh HocSinh[ ] Tìm tất cả danh sách học sinh có kết quả cả năm đang xét 8 DSHocSinh NS int Năm sinh HocSinh[ ] Tìm tất cả danh sách học sinh có năm sinh là NS Phương thức lớp: Thao tác trên toàn bộ các đối tượng thuộc lớp đó 41
- Ví dụ Xác định các phương thức của lớp + Lop + Mon - ma lop - ma mon - ten lop 0 * 0 * - s i so - c o thuc hanh - ban + Hoc 0 * - s o tiet hoc o 1 + Phong + Thiet bi 1 * 1 * - ma TB trang bi - ten TB - tri gia 42
- Ví dụ Xác định các phương thức của lớp Hiển thị đối tượng đang xét Hiển thị tất cả các đối tượng của lớp đang xét (*) Hiển thị tất cả các đối tượng của lớp đang xét, có sắp theo nhóm (*) Tìm kiếm đối tượng tương ứng khóa đối tượng (hoặc OID) của chính lớp đang xét (*) Tìm kiếm tất cả các đối tượng hoặc tất cả các khóa đối tượng (hoặc OID) của chính lớp đang xét Thống kê dùng hàm kết tập 43
- UML package Gói được sử dụng cho mục tiêu gom nhóm các lớp. Thường được sử dụng để miêu tả kiến trúc luạn lý của một hệ thống.Commonly used for specifying the logical architecture of the system. Không nhất thiết phải tương ứng với kiến trúc các phân hệ con của một hệ thống. Name 44
- b a b.a a.A b.b b.a.F b.b.E b.b.D a.B b.a.G a.C 45
- Phân loại các lớp ứng dụng 46
- Lớp trong & lớp ngoài Lớp ngoài là lớp bên ngoài hệ thống và thực hiện tương tác với hệ thống. Lớp biên là lớp thuộc về hệ thống và tương tác với lớp ngoài hệ thống. 47
- Employee Accountant 1 1 * > Cashier_ Money Order +Cashier_Code > Customer_ Receipt_supplier +Customer_ID > 1 * +Total_Price 1 *1 +Full name > Receipt 1 Receipt detail 1 * +Id 1 * 1 * +Quantity/weight +Total value 1 * +Date 1 1 Detail 1 +Quantity > +Price Supplier_ writes 0 1 1 * sell 1 * 1 * > > > Category Checkout session Manager Product 1 * 1 * +Category number +Total value +ProductCode 1 +Description +Create() +Description +VAT rate +Stock level +AddToTotal(value) 1 +getTotalValue() +CalculChange(Value) 1 * 1 1 * passes to > BarCode discount +% 1 1 * > +quantity 0 1 Cash register manager +paidQuantity Discount period +enterQuantity() +enterWeight() is read by +getProductDetail() 1 +getCategory() +Payment() 0 1 > 1 Scaner 1 1 +scan() > +covertToProductCode() Keyboard 49
- Quy tắc sinh mã 50
- Quy tắc sinh mã 51
- Quy tắc sinh mã 52
- Quy tắc sinh mã 53
- Quy tắc sinh mã 54
- Quy tắc sinh mã 55
- Quy tắc sinh mã 56
- Quy tắc sinh mã 57
- Trường hợp đặc biệt 58
- Chuyển sơ đồ lớp sang ERD Chuyển lớp thành thực thể 59
- Chuyển sơ đồ lớp sang ERD 60
- Chuyển sơ đồ lớp sang ERD 61
- Chuyển sơ đồ lớp sang ERD 62
- Chuyển sơ đồ lớp sang ERD 63
- Ví dụ Phân tích Xây dựng sơ đồ lớp cho phân hệ bán hàng của một siêu thị Siêu thị có bán nhiều sản phẩm hàng hóa, mỗi sản phẩm thuộc một loại hàng khác nhau, mỗi loại hàng có một % VAT tương ứng. Đơn giá bán của sản phẩm được quản lý theo thời điểm, lịch sử về giá sản phẩm cũng cần phải được lưu lại. Khi lập hóa đơn, cần biết mã số của nhân viên lập hóa đơn, mã số khách hàng, ngày lập hóa đơn cùng danh sách các sản phẩm mua tương ứng. 64