Phương pháp xác định các lớp đối tượng

1UML/NN 1Chương 6Nguyên lý thiết kế,Phương pháp xác định lớpUML/NN 2Nội dung 6.1 Các tiên đề trong thiết kế 6.2 Hướng tiếp cận trong xác định lớp 6.3 Xác định mối quan hệ giữa các lớp 6.4 Xác định thuộc tính và hành vi của lớpUML/NN 36.1. Các tiên đề trong Thiết kế Tiên đề 1: tiên đề độc lập Duy trì tính độc lập của các thành phần thiết kếTinh độc lập của các thành phần không caoTính độc lập của các thành phần caoUML/NN 4Coupling (Liên kết)ABCDCoupling mạnhCoupling yếu2UML/NN 5Hai loại coupling Hai loại coupling: tương tác và kế thừa Coupling tương tác: chia thành 5 loại Data coupling Stamp coupling Control coupling Common coupling Content coupling Coupling kế thừaUML/NN 6Data coupling Liên kết giữa các thành phần là dữ liệu nguyên tố hoặc phức hợp Ví dụ:Class_A+ Operation_A () : IntegerClass_B+ Operation_B (Integer Para_1) : Integerinteger Operation_A(){int x,y;Class_B cB;….y = cB.Operation_B(x);…}UML/NN 7Stamp coupling Stamp coupling: liên kết giữa hai thành phần là một phần của cấu trúc hoặc toàn bộ cấu trúc Ví dụ:integer Operation_A(){int x,y;Class_B cB; Class_C c;….y = cB.Operation_B(c);…}UML/NN 8Control coupling Control coupling: một thành phần gởi các yếu tố điều khiển tới một thành phần khác thì hai thành phần này có control coupling.+ A(){int x = 1;sub(x, dk)…}+ sub(x, dk){}dk=1=23UML/NN 9Common và Content coupling Common couping: hai thành phần cùng tham chiếu đến một cấu trúc toàn cục (hoặc biến toàn cục) thì có liên hệ gọi làCommon coupling. Content coupling: nếu một thành phần tham khảo trực tiếp đến nội dung scủa một thành phần khác thì được gọi làcontent coupling.UML/NN 10Mức độ liên kếtRất thấpThấpTrung bìnhCaoRất caoData couplingStamp couplingControl couplingCommon couplingContent couplingXếp hạng phụ thuộcTên couplingUML/NN 11Coupling kế thừa Là coupling giữa lớp tổng quát và lớp chuyên biệt trong cấu trúc phân cấp: Liên kết giữa lớp tổng quát và lớp chuyên biệt càng chặt càng tốt: -> không kế thừa những thuộc tính không liên quan hoặc không cần thiết Nếu một lớp chuyên biệt “chồng” lên hầu hết các method hoặc không sử dụng nó từ lớp tổng quát Æ coupling kế thừa yếu Æ thay đổi tiếp cận tổng quát hoá và chuyên biệt hoáUML/NN 12Tiên đề 2: tiên đề thông tin Giảm tối đa thông tin các đối tượng thiết kế Tách thành nhiều đối tượng đơn giản hơn Tách thành cấu trúc phân cấp kế thừaĐối tượng phức tạpNhiều đối tượng đơn giản4UML/NN 13Ví dụLậpHoáĐơn()Hoá ĐơnInHoáĐơn()Hoá ĐơnMáy InLậpHoáĐơn()InHoáĐơn()UML/NN 14Nội dung 5.1 Các tiên đề trong thiết kế 5.2 Hướng tiếp cận trong xác định lớp 5.3 Xác định mối quan hệ giữa các lớp 5.4 Xác định thuộc tính và hành vi của lớpUML/NN 156.2 Các cách tiếp cận xác định lớp1. Tiếp cận theo thực thể nghiệp vụ2. Tiếp cận theo cụm danh từ3. Tiếp cận theo phân loại4. Tiếp cận theo phân tích hoạt động use caseUML/NN 161. Tiếp cận theo thực thể nghiệp vụ Đối với các thực thể sự vật: kiểm chứng xem có nhu cầu quản lý thông tin về thực thể này trong hệ thống không?  Nếu có, xác định một lớp trong sơ đồ phân tích biểu diễn cho thực thể này Xác định tên lớp: tên của sự vật Thuộc tính: bổ sung các thuộc tính mô tả đầy đủthông tin mà hệ thống có nhu cầu quản lý về đối tượng5UML/NN 17Ví dụ:Hành lýNVLHàng hoáHành lýNVLHàng hoáUML/NN 18…Tiếp cận theo thực thể nghiệp vụ Đối với thực thể thông tin: Nếu thực thể mô tả thông tin về một hoạt động giao dịch hệ thống thì chuyển thành một lớp trong mô hình phân tích Nếu thực thể là một dạng thông tin tổng hợp Æ cóthể tách thành nhiều lớp mới hoặc bổ sung thông tin cho các lớp đang tồn tạiHoá đonHoá đơnThẻ thư việnThẻ thư việnUML/NN 19Ví dụHOHOÁÁ Đ ĐƠNƠNSố HĐ:…… Ngày: /…/…Khách hàng: …………………… Địa chỉ:………………………… Người lập:……………………… 20003000…Đơn giá1001000…Số lượngCáiKg…ĐVTH1H7…Tên hàng001004…Mã sốTổng trị giá: ………Hoá đơnKhách hàngHàngChi tiết HĐUML/NN 20WorkerNhân viên bán hàngNhân viên quản lýThủ khoNhân viênĐộc giảĐọc giảNhà CCNhà CCấp6UML/NN 21Ví dụ: Hóa đơnKhách hàngNgườI quản lýHồ sơ khách hàngHoá đơnThẻ khách hàng thân thiết0 n 110 n 0 n 0 n11Khách hàngHoá đơnThẻ KHTT0 1111 nUML/NN 222. Tiếp cận theo cụm danh từ Đề xuất bởi Rebecca Wirfs-Brock, Brian Wilkerson, và Lauren Wiener  Ý tưởng: xác định các lớp thông qua việc đọc trong các văn bản mô tả use case hoặc các mô tả yêu cầu để tìm kiếm và trích lọc các cụm danh từClass không thích hợp (irrelevant)Class mờ(fuzzy class)Class thích hợp(relevant class)UML/NN 23Tiếp cận theo cụm danh từ (noun phrase)Mô tả use case, yêu cầuMô tMô tảảuse case, use case, yêu cyêu cầầuuXác định các danh từ, cụm danh từXXáác đc địịnh cnh cáác danh c danh ttừừ, c, cụụm danh tm danh từừDanh từ, cụm danh từDanh tDanh từừ, c, cụụm m danh tdanh từừLoại bỏ các danh từ mô tả class giảLoLoạại bi bỏỏccáác danh c danh ttừừmô tmô tảảclass giclass giảảDanh từ, cụm danh từứng viên Danh tDanh từừ, c, cụụm m danh tdanh từừứứng viên ng viên Đồng nhất các class trùng nghĩaĐĐồồng nhng nhấất ct cáác c class trclass trùùng nghng nghĩĩaaDanh sách các class Danh sDanh sáách cch cáác c class class Loại các danh từthuộc tínhLoLoạại ci cáác danh tc danh từừthuthuộộc tc tíínhnhLoại các class không có mục tiêuLoLoạại ci cáác class c class không ckhông cóómmụục tiêuc tiêuUML/NN 24ATMBao thưBốn ký sốNgân quỹTiềnPINPIN không hợp lệThông điệpMật khẩuMã PINMẫu tinBướcHệ thốngGiao dịchLịch sử giao dịch Tài khoảnSố dư tài khoảnSố tiềnTiến trình đăng nhậpThẻ ATMMáy ATMNgân hàngKhách hàng ngân hàngThẻTiền mặtKhách hàngTài khoản khách hàngVND 7UML/NN 25Loại bỏ các lớp không thích hợpBao thưBốn ký sốNgân quỹTiềnPINPIN không hợp lệThông điệpMật khẩuMã PINMẫu tinBướcHệ thốngGiao dịchLịch sử giao dịch Tài khoảnSố dư tài khoảnSố tiềnTiến trình đăng nhậpThẻ ATMMáy ATMNgân hàngKhách hàng ngân hàngThẻTiền mặtKhách hàngTài khoản khách hàngVND UML/NN 26Đồng nhất các ứng viên trùng lắpKhách hàng, Khách hàng ngân hàng = Khách hàngTài khoản, Tài khoản khách hàng = Tài khoảnPIN, Mã PIN = PINTiền, Ngân quỹ = Ngân quỹThẻ ATM, Thẻ = Thẻ ATMUML/NN 27Các lớp còn lạiBao thưBốn ký sốNgân quỹTiềnPINPIN không hợp lệThông điệpMật khẩuMã PINMẫu tinBướcHệ thốngGiao dịchLịch sử giao dịchTài khoảnSố dư tài khoảnSố tiềnTiến trình đăng nhậpThẻ ATMMáy ATMNgân hàngKhách hàng ngân hàngThẻTiền mặtKhách hàngTài khoản khách hàngVND UML/NN 28Danh từ, cụm danh từ có thể là thuộc tính Xác định danh từ, cụm danh từ có thể là thuộc tính: Chỉ được sử dụng như là giá trị Không có nhiều hơn một đặc trưng riêng, hoặc chỉmô tả một đặc trưng của đối tượng khác  Ví dụ: hệ thống ATM (tiếp tục phân tích) Số tiền: Æ một giá trị, không phải một lớp Số dư tài khoản: Æ thuộc tính của lớp Tài khoản PIN không hợp lệ: Æ một giá trị, không phải một lớp Mật khẩu: Æ một thuộc tính (có thể của lớp Khách hàng) Lịch sử giao dịch: Æ một thuộc tính (có thể của lớp Giao dịch) PIN: Æ một thuộc tính (có thể của lớp Khách hàng)8UML/NN 29Danh sách danh từ, cụm danh từ còn lạiBao thưBốn ký sốNgân quỹTiềnPINPIN không hợp lệThông điệpMật khẩuMã PINMẫu tinBướcHệ thốngGiao dịchLịch sử giao dịchTài khoảnSố dư tài khoảnSố tiềnTiến trình đăng nhậpThẻ ATMMáy ATMNgân hàngKhách hàng ngân hàngThẻTiền mặtKhách hàngTài khoản khách hàngVND UML/NN 30Loại bỏ các ứng viên Loại bỏ các ứng viên không mục tiêu hoặc không thuộc phạm vi hệ thống: Thông điệp  Hệ thống Mẫu tin Ngân quỹ VND Tiền mặt Tiến trình đăng nhậpBao thưBốn ký sốNgân quỹTiềnPINPIN không hợp lệThông điệpMật khẩuMã PINMẫu tinBướcHệ thốngGiao dịchLịch sử giao dịchTài khoảnSố dư tài khoảnSố tiềnTiến trình đăng nhậpThẻ ATMMáy ATMNgân hàngKhách hàng ngân hàngThẻTiền mặtKhách hàngTài khoản khách hàngVND UML/NN 31ATM: các lớp Máy ATM: cung cấp một giao diện tới ngân hàng Thẻ ATM: cung cấp một khách hàng với một khoátới một tài khoản Khách hàng: một khách hàng là một cá nhân sửdụng máy ATM, có một tài khoản. Ngân hàng: các khách hàng phụ thuộc vào ngân hàng. Nó là một nơi tập trung các tài khoản và xử lý các giao dịch tài khoản. Tài khoản: nó mô hình hoá một tài khoản của khách hàng và cung cấp các dịch vụ về tài khoản cho khách hàng Giao dịch: mô tả một giao tác của khách hàng khi sử dụng thẻ ATM. Một giao tác được lưu trữ với thời gian, ngày, loại, số tiền, và số dư UML/NN 323. Tiếp cận theo phân loại Tiếp cận theo phân loại: phân loại các lớp của hệ thống dựa trên các mẫu chung. Lớp khái niệm (concept): Một khái niệm là một quan niệm hoặc sự hiểu biết riêng biệt về thế giới. Lớp khái niệm bao gồm các nguyên lý được dùng đểtổ chức hoặc để lưu trữ các hoạt động và các trao đổi về mặt quản lý. Ví dụ: các lớp khái niệm có thể là: phương pháp, hiệu năng, mô hình, môn học… Lớp sự kiện (event):  Lớp sự kiện là các điểm thời gian cần được lưu trữ. Các sựviệc xảy ra tại một thời điểm, hoặc một bước trong một dãy tuần tự các bước  Ví dụ: đăng ký, hoá đơn, đơn hàng, phiếu nhập,…9UML/NN 33Tiếp cận theo phân loại… Lớp tổ chức (organisation): tập hợp con người, tài nguyên, phương tiện, hoặc những nhóm xác định chức năng người dùng  Ví dụ: đơn vị, bộ phận, phòng ban, chức danh,… Lớp con người (people): lớp con người thể hiện các vai trò khác nhau của người dùng trong việc tương tác với hệ thống. Những đối tượng này thường là người dùng hệ thống hoặc những người không sử dụng hệ thống nhưng thông tin về họ được lưu trữ bởi hệ thống  Ví dụ: Sinh viên, khách hàng, giáo viên, nhân viên,…UML/NN 34…Tiếp cận theo phân loại Lớp vị trí (place): Các vị trí vật lý mà hệ thống cần mô tả thông tin về nó. Ví dụ: toà nhà, kho, văn phòng, chi nhánh, đại lý,… Lớp sự vật hữu hình và thiết bị: các đối tượng vật lý hoặc các nhóm của đối tượng hữu hình mà cóthể cảm nhận trực quan và các thiết bị mà hệ thống tương tác. Ví dụ: xe hơi, máy bay, … là các sự vật hữu hình; thiết bịcảm ứng nhiệt là một lớp thiết bị. UML/NN 35Ví dụ: hệ thống ATM Các lớp khái niệm: Các lớp sự kiện: Các lớp tổ chức:TàiKhoảnGiaoDịchNgânHàngUML/NN 36Hệ thống ATM Các lớp con người: Các lớp sự vật hữu hình và thiết bịKháchHàngMáyATMThẻATM10UML/NN 374. Tiếp cận theo phân tích hoạt động usecaseTác nhânHệ thốngĐối tượng nào của hệthống sẽ trực tiếp tương tác với tác nhân?:Đối tượng Đối tượng nào tiếp theo được chuyển giao trách nhiệm ?…:Đối tượng Kết thúc mô tả kịch bản của use case cho phép xác định tất cả các lớp liên tham giaUML/NN 38Ví dụ: hệ thống thư việnĐộc giảThủ thưYêu cầu mượn sáchKiểm tra thẻ:Hồ sơ độc giảKiểm tra điều kiện[Không thoả]Từ chốiCập nhật hồ sơ độc giảSách gởi đọc giả:SáchCập nhật lại trạng thái sáchTừ chối thẻkhông hợp lệUse case Mượn sáchUML/NN 39Ví dụ 1 Phân tích use case “Giải quyết PIN không hợp lệ”. Các hoạt động khách hàng có thể thực hiện với hệ thống: Đưa vào thẻ ATM Nhập mã PIN Rút thẻ ATMUML/NN 40Ví dụ 3 Phân tích use case “Rút tiền”: KháchHàngNgânHàng : MáyATM : TàiKhoảnĐưa vào thẻ ATMYêu cầu PINNhập mã PINKiểm tra mã PINMã PIN hợp lệYêu cầu số tiềnNhập số tiềnXử lý giao tác rútGiao tác thành côngPhân phối tiền mặtYêu cầu lấy thẻLấy thẻYêu cầu tiếp tụcKết thúcIn hoá đơn11UML/NN 41Nội dung 5.1 Các tiên đề trong thiết kế 5.2 Hướng tiếp cận trong xác định lớp 5.3 Xác định mối quan hệ giữa các lớp 5.4 Xác định thuộc tính và hành vi của lớpUML/NN 42Xác định mối kết hợp association Hướng dẫn xác định mối kết hợp: Một sự phụ thuộc giữa hai hay nhiều lớp có thểthiết lập thành mối kết hợp. Mối kết hợp thường tương ứng với một động từ hoặc cụm giới từ như là thành phần của, làm việc cho, chứa trong, … Một tham chiếu từ một lớp đến một lớp khác làmột mối kết hợp.UML/NN 43Các mối kết hợp… Mối kết hợp vị trí (location): liên kết tới, thành phần của, làm việc tại, …. Ví dụ:Nhân ViênChi NhánhLàm việc tạiBuổi HọcPhòng HọcHọc tạiUML/NN 44…Các mối kết hợp… Mối kết hợp sở hữu: của, có, thuộc,…Cầu Thủ Đội BóngLà thành phần củaPhòng Toà NhàChứa trong12UML/NN 45…Các mối kết hợp… Mối kết hợp truyền thông, liên lạc (communication): đặt tới, trao đổi với, gởi cho, tiếp nhận từ,…Đơn Hàng Nhà CCấpĐặt tớiBản Yêu Cầu Phòng BanGởi tớiUML/NN 46…Các mối kết hợp… Mối kết hợp phản thân: là mối quan hệ được thiết lập giữa một đối tượng của một lớp với một đối tượng khác cũng thuộc lớp đó.Nhân Viên Thành PhầnQuản lýChứa trongUML/NN 47Ví dụ: hệ thống ATMMáyATMNgânHàngKháchHàngTàiKhoản GiaoDịch1Có0 n1 n1CủaMối kết hợp sở hữuMối kết hợp sở hữuThuộcThuộc vềUML/NN 48Loại bỏ các mối kết hợp không cần thiết Mối kết hợp đa phân: là mối kết hợp giữa ba lớp trở lên, mối kết hợp này phức tạp trong cách thể hiện Æ Nếu có thể, phát biểu lại nó dùng mối kết hợp nhị phân 13UML/NN 49…Loại bỏ các mối kết hợp không cần thiết Mối kết hợp trực tiếp dư thừa: là các mối kết hợp được định nghĩa trong ngữ nghĩa của những mối kết hợp khác (còn gọi là mối kết hợp suy diễn hoặc bắc cầu) Phiếu đặt hàngNhà cung cấpPhiếu giao hàngĐặt tớiLiên quanTừ0 *10 *10 11UML/NN 50Xác định bản số cho mối kết hợp: (min, max) 1; 0 1; 1 *; 0 *; a * (a là hằng)Bản Yêu Cầu Phòng BanGởi tới0 *1Bản sốUML/NN 51Ví dụCầu Thủ Đội BóngLà thành phần củaPhòng Toà NhàChứa trong2 *11 *1 *Đơn Hàng Nhà CCấpĐặt tới10 *UML/NN 52Hệ thống ATMMáyATMNgânHàngKháchHàngTàiKhoản GiaoDịch1Có0 n1 n1CủaThuộcThuộc về0 *11 *111 *11 *14UML/NN 53Lớp kết hợp (Association class)Hoá Đơn Sản Phẩm0 *1 *Chi Tiết Hoá ĐơnsốLượng đơnGiáSinh Viên Khoá HọcKết QuảđiểmTB xếpLoại0 *1 *UML/NN 54Lớp kết hợpHoá Đơn Sản Phẩm0 *1 *Chi Tiết Hoá ĐơnsốLượng đơnGiáHoá ĐơnSản PhẩmChi Tiết Hoá ĐơnsốLượng đơnGiá11 *0 *1UML/NN 55Xác định mối quan hệ Nâng cấp mối kết hợp: Xác định mối kết hợp tổng quát – chuyên biệt (generalization): Thể hiện quan hệ kế thừa giữa các lớp và một cấu trúc phân cấp xác định những dòng kế thừa này Tiếp cận top-down: Từ một lớp chúng ta tìm kiếm cụm danh từ chứa tên lớp vàtính từ (hoặc danh từ). Đánh giá xem cụm danh từ này cóthể là một trường hợp đặc biệt cần được quản lý trong hệthống không  Tìm kiếm xem có những đặc trưng riêng của lớp  Xây dựng mối kết hợp chuyên biệt từ lớp này đến lớp ban đầuUML/NN 56…Xác định mối quan hệ …Hoá đơnHoá đơn giao hàngGiaoDịchGiaoDịchRút GiaoDịchGởiGhi chú: chỉ cần đưa vào các lớp chuyên biệt mà chúng ta xác định được các đặc trưng riêng (thuộc tính, method, liên kết) của nó trong hệ thống.15UML/NN 57…Xác định mối quan hệ …Nhân viênNhân Viên VP Công NhânTrưởng Phòng Thư Ký NV Bán HàngUML/NN 58…Xác định mối quan hệ … Nâng cấp mối kết hợp: Xác định mối kết hợp tổng quát – chuyên biệt (generalization):  Tiếp cận bottom-up: Tìm kiếm trong các lớp để xác định xem có các thuộc tính và phương thức giống nhau. Sau đóchúng ta có thể gom nhóm và đưa các thuộc tính và phương thức chung này lên một lớp tổng quát (trừu tượng) Tạo mối kết hợp tổng quát hoá từ các lớp này đến lớp tổng quát mới xác định UML/NN 59…Xác định mối quan hệ …Hoá đơnĐơn đặt hàngHàng hoáChứng từUML/NN 60…Xác định mối quan hệ …Khách HàngNhà CCấpĐối Tác16UML/NN 61…Xác định mối quan hệ … Xác định sự tương quan:Lớp A1 Lớp A2Lớp A(complete, disjoint) (incomplete, disjoint) (complete, overlapping) (incomplete, overlapping) UML/NN 62…Xác định mối quan hệ …Khách HàngNhà CCấpĐối Tác(incomlete, disjoint)Nhân Viên VPTrưởng Phòng Thư Ký NV Bán Hàng(incomplete, overlapping)Khách HàngKhách Quen(incomplete)UML/NN 63…Xác định mối quan hệ … Vấn đề đa thừa kế: Phức tạp trong vấn đề kế thừa Æ Không nên sử dụng (phiên bản gốc UML không đưa vào)Giáo ViênNhà Nghiên CứuGviên – Nhà NgCứuUML/NN 64…Xác định mối quan hệ … Xác định mối kết hợp thành phần (a-part-of, aggregration) Đặc trưng cơ bản Tính bắc cầu: Nếu lớp A là một thành phần của lớp Bvà lớp B là thành phần của lớp C Æ lớp A là thành phần của lớp C Tính đối xứng: nếu lớp A là thành phần của lớp B thìlớp B không phải là thành phần của lớp ALớp ALớp BLớp C17UML/NN 65…Xác định mối quan hệ … Xác định mối kết hợp thành phần (a-part-of, aggregration) Tập hợp: một đối tượng vật lý được hình thành từ các đối tượng vật lý thành phần khác Toà NhàXe Ô TôPhòngThùng Xe Bánh Xe Động Cơ11 *11114 81Đơn HàngDòng HĐ11 *UML/NN 66…Xác định mối quan hệ … Vật chứa: một đối tựơng vật lý chứa đựng các thành phần nhưng không được cấu tạo bởi các thành phần ContainerPhòng HọcHàng HoáBàn Ghế Projector11 *0 10 10 10 10 *0 *UML/NN 67…Xác định mối quan hệ … Tập hợp – thành viên: một đối tượng khái niệm chứa các thành phần có thể vật lý hoặc khái niệmPhòng BanNhân Viên10 *Đội BóngCầu Thủ10 *Lớp vật lýLớp khái niệmUML/NN 68Hệ thống ATMMáyATMNgânHàngKháchHàngTàiKhoản GiaoDịch1Có0 n1 n1CủaThuộcThuộc0 *11 *111 *11 *18UML/NN 69Nội dung 5.1 Các tiên đề trong thiết kế 5.2 Hướng tiếp cận trong xác định lớp 5.3 Xác định mối quan hệ giữa các lớp 5.4 Xác định thuộc tính và hành vi của lớpUML/NN 70Xác định thuộc tính Câu hỏi:  Thông tin gì về đối tượng sẽ được quản lý ? Nguyên tắc: Tên: danh từ; cụm danh từ Đơn giản: chỉ dùng đủ thuộc tính để diễn đạt trạng thái đối tượng ở giai đoạn phân tích (thuộc tính sẽ được bổ sung chi tiết hơn ở các giai đoạn tiếp theo) Không quá quan tâm về việc phải khám pháhết thuộc tínhUML/NN 71Ví dụ: Hệ thống ATM Lớp Khách Hàng: Phân tích lần lượt tất cảcác use case có liên quan đến lớp Khách Hàng như là: “Đăng nhập”, “Xử lý PIN không hợp lệ”. Các thuộc tính của lớp khách hàng như sau:KháchHàngtênKháchHànghọKháchHàngmãPINsốThẻUML/NN 72ATM: Thuộc tínhGiaoDịchRút GiaoDịchGởiMáyATMđịaChỉtrạngTháiKháchHàngtênKháchHànghọKháchHàngmãPINsốThẻGiaoDịchgiaoDịchIDngàyGiaoDịchthờiGianGiaoDịchloạiGiaoDịchsốTiềnsốDưTàiKhoảnsốTàiKhoảnloạiTàiKhoảnsốDư11của0 n1cóNgânHàngsốTiềnHiệnTại19UML/NN 73Xác định method Câu hỏi:  Các đối tượng chịu trách nhiệm xử lý gì về thông tin của nó để cung cấp dịch vụ cho hệ thống? Nguyên tắc: Tên: động từ + bổ ngữ Chỉ quan tâm đến các method có phạm vi toàn cục (public), các method có phạm vi cục bộ sẽ được phát hiện trong giai đoạn thiết kế cài đặt (vd: constructor, ….) Các method chịu trách nhiệm về các thao tác lên các thuộc tính của đối tượng: truy vấn, cập nhật, đọc và ghiUML/NN 74Xác định method qua phân tích use case Phân tích các dòng message trong sơ đồtuần tự để xem có thể chuyển một hoạt động thành một method không? Nếu có, đặt tên cho method ứng với hoạt động đóUML/NN 75Ví dụ… lớp TàiKhoản Rút Tiền Gửi Tiền Xem thông Tin Tài Khoản: KháchHàng : MáyATM : TàiKhoảnYêu cầu số tiềnNhập số tiềnXử lý giao tác rútGiao tác thành côngPhân phối tiền mặtYêu cầu lấy thẻLấy thẻYêu cầu tiếp tụcKết thúcIn hoá đơnTàiKhoảnsốTàiKhoảnloạiTàiKhoảnsốDưrútTiền()Use case Rút TiềnUML/NN 76…Ví dụ Lớp TàiKhoản Rút Tiền Gửi Tiền Xem thông Tin Tài Khoản: KháchHàng : MáyATM: TàiKhoảnYêu cầu số tiềnNhập số tiềnXử lý giao tác gửiGiao tác thành côngYêu cầu lấy thẻLấy thẻYêu cầu tiếp tụcKết thúcIn hoá đơnTàiKhoảnsốTàiKhoảnloạiTàiKhoảnsốDưrútTiền()Use case Rút TiềngửiTiền()xemTàiKhoản()20UML/NN 77ATM: methodGiaoDịchRút GiaoDịchGởiKháchHàngtênKháchHànghọKháchHàngmãPINsốThẻkiểmTraMậtKhẩu()GiaoDịchgiaoDịchIDngàyGiaoDịchthờiGianGiaoDịchloạiGiaoDịchsốTiềnsốDưTàiKhoảnsốTàiKhoảnloạiTàiKhoảnsốDưrútTiền()gởiTiền()11của0 n1cóNgânHàngMáyATMđịaChỉtrạngTháisốTiềnHiệnTạikhởiĐộngMáy()đóngMáy()xemTàiKhoản()1Ghi chú: các method được phát hiện trong giai đoạn này thường đại diện xử lý cho một use caseUML/NN 78Tinh chế thuộc tính Kiểu thuộc tính Thuộc tính đơn trị Thuộc tính đa trị: có thể dùng các cấu trúc, list, array, bag để khai báo cài đặt. Ví dụ: thuộc tính sốĐiệnThoại của lớp NhânViên cóthể là đa trị địaChỉ[3]: String địaChỉ[1 3]: StringUML/NN 79Hiển thị thuộc tính : =  + : toàn cục # : bảo vệ -: cục bộGhi chú: phạm vi mặc định của các thuộc tính là cục bộUML/NN 80GiaoDịchRút GiaoDịchGởiKháchHàng#tênKháchHàng:String#họKháchHàng:String#mãPIN::String#sốThẻ:StringGiaoDịch#giaoDịchID:String#ngàyGiaoDịch:Date#thờiGianGiaoDịch:Time#loạiGiaoDịch:String#sốTiền:float#sốDư:floatMáyATM#địaChỉ:String#trạngThái:StringTàiKhoản#sốTàiKhoản:String#loạiTàiKhoản:String#sốDư:float11của0 n1cóNgânHàng#tàiKhoản:TàiKhoản#giaoTác:GiaoDịch#kháchHàng:KháchHàng#sốTiềnHiệnTại:floatCác thuộc tính cài đặt liên kếtATM : thuộc tính lớp21UML/NN 81Hiển thị method <(danh sách tham số)>:  Các method đa số là các method có phạm vi toàn cục Ví dụ:  +get_Tên(): String +get_SốTàiKhoản(vtàiKhoản : TàiKhoản): StringUML/NN 82Thiết kế nội dung methodCác method được xác định trong giai đoạn phân tíchThiết kế bằng việc phân tích sơ đồ use caseCác method được thiết kế Các method vừa phát hiện UML/NN 83ATM: kiểmTraMậtKhẩu KháchHàng::+ kiểmTraMậtKhẩu(sốThẻ:String, vPIN:String): vkháchHàng: KháchHàng: KháchHàng: MáyATMKiểmTraMậtKhẩu(vSốThẻ, vPIN)vKháchHàng = lấy_KháchHàng(sốThẻ, vPIN)Hiển thị thông báo PIN không hợp lệ, vui lòng nhập lạiCung cấp quyền truy cập cho người dùngvKháchHàngMethod mới được phát hiệnUML/NN 84ATM: rútTiền TàiKhoản::+ rútTiền(sồTiền: foat )maTraVe = "So tien rut vuot qua so du"soDu = soDu - soTien#capNhatTaiKhoan(soTaiKhoan, soDu)#taoGiaoTac("Rut", soTien, soDu)Cap nhat lai so du tai khoanTao mot giao tac rut tien cho tai khoansoTien > soDusoTien <= soDuCác method mới được phát hiện22UML/NN 85Hệ thống ATMGiaoDịchRút GiaoDịchGởiKháchHàng#tênKháchHàng:String#họKháchHàng:String#mãPIN::String#sốThẻ:StringGiaoDịch#giaoDịchID:String#ngàyGiaoDịch:Date#thờiGianGiaoDịch:Time#loạiGiaoDịch:String#sốTiền:float#sốDư:floatMáyATM#địaChỉ:String#trạngThái:StringTàiKhoản#sốTàiKhoản:String#loạiTàiKhoản:String#sốDư:float11của0 n1cóNgânHàng#tàiKhoản:TàiKhoản#giaoTác:GiaoTác#kháchHàng:KháchHàng#sốTiềnHiệnTại:float+kiểmTraMậtKhẩu()#lấy_KháchHàng()+khởiĐộngMáy()+đóngMáy()+kếtNối()+đóngKếtNối()#tắtMáy()+gửiTiền()+rútTiền()#cậpNhậtTàiKhoản()#tạoGiaoTác()+gánThôngTinGiaoDịch()#cậpNhậtSốTiền()