Giáo trình Phân tích thiết kế hướng đối tượng với UML (Nghề Lập trình máy tính): Phần 2 trình bày kiến thức về hệ thống và hành vi đối tượng, thiết kế hệ thống, các vấn đề về thiết kế và thi hành thuật ngữ chuyên môn về rational rose. Mời các bạn tham khảo!
BÀI Tên : HỆ THỐNG VÀ HÀNH VI ĐỐI TƯỢNG Mã : ITPRG3_16.5 Giới thiệu : Các thao tác thuộc tính đối tựơng, phân tích hoạt động hệ thống, phân tích hành vi đối tượng, kiểm tra mơ hình trình bày Mục tiêu thực hiện: Học xong học viên có khả : - Phân tích thao tác thuộc tính lớp - Mơ tả mục đích biểu đồ trạng thái biểu đồ hoạt động - Đọc giải thích biểu đồ trạng thái - Đọc giải thích biểu đồ hoạt động UML - Phân tích tính bền vững chất lượng mơ hình Nội dung chính: I Quan hệ kết tập (Aggregation) 1- Khái niệm kết tập: Kết tập trường hợp đặc biệt liên hệ Kết tập biểu thị quan hệ lớp dựa tảng nguyên tắc "một tổng thể tạo thành phận" Nó sử dụng muốn tạo nên thực thể cách tập hợp thực thể tồn với Một ví dụ tiêu biểu kết tập xe tơ gồm có bốn bánh xe, động cơ, khung gầm, hộp số, v.v Quá trình ghép phận lại với để tạo nên thực thể cần thiết gọi kết tập Trong trình tìm lớp, kết tập ý tới gặp loại động từ “được tạo bởi", "gồm có", … Quan hệ kết tập khơng có tên riêng Tên ngầm chứa "bao gồm thành phần" 2- Kí hiệu kết tập: Kí hiệu UML cho kết tập đường thẳng với hình thoi (diamond) đặt sát lớp biểu thị kết tập (tổng thể) Một lớp tài khoản tạo lớp chi tiết khách hàng, lệnh giao dịch tài khoản quy định nhà băng Quan hệ trình bày sau: 94 Hình 5.1 - Quan hệ kết tập (1) Mỗi thành phần tạo nên kết tập (tổng thể) gọi phận (aggregates) Mỗi phận phần lại tạo phận khác Hình 5.2 - Quan hệ kết tập (2) Trong trường hợp tài khoản kể trên, phận chi tiết khách hàng Các chi tiết khách hàng lại bao gồm danh sách chủ tài khoản, danh sách địa chỉ, quy định kỳ hạn chi tiết khác mở tài khoản 3- Kết tập liên hệ: Khái niệm kết tập nảy sinh tình thực thể bao gồm nhiều thành phần khác Liên hệ lớp mặt khác mối quan hệ thực thể Quan sát hình sau: 95 Hình 5.3 - Kết tập liên hệ Một tài khoản tạo chi tiết khách hàng, lệnh giao dịch tài khoản quy định nhà băng Khách hàng là phận tài khoản, có quan hệ với tài khoản Nhìn chung, lớp nối kết với cách chặt chẽ qua quan hệ "toàn thể – phận" người ta coi quan hệ kết tập Khơng có lời hướng dẫn chắn rõ ràng cho việc nên dùng kết tập nên dùng liên hệ Một lối tiệm cận quán kèm với kiến thức sâu sắc phạm vi vấn đề giúp nhà phân tích chọn giải pháp đắn II Khái qt hóa chuyên biệt hóa (Generalization & Specialization) Hãy quan sát cấu trúc lớp biểu đồ sau: Hình 5.4- Chuyên biệt hố (Specialization) Trong hình trên, tài khoản khái niệm chung loại tài khoản khác chứa đặc tả cần thiết cho tất loại tài khoản Ví dụ chứa số tài khoản tên chủ tài khoản Ta có hai loại tài khoản đặc biệt suy từ dạng tài khoản chung 96 này, loại mang tính kỳ hạn loại mang tính giao dịch Yếu tố chia cách hai lớp với quy định chuyên ngành hay phương thức hoạt động hai loại tài khoản Tương tự vậy, tài khoản đầu tư trung hạn dài hạn lại khái niệm chuyên biệt khái niệm tài khoản có kỳ hạn Mặt khác, tài khoản bình thường tài khoản tiết kiệm trường hợp đặc biệt loại tài khoản giao dịch Loại cấu trúc lớp gọi cấu trúc hình cấu trúc phân cấp Khi dịch chuyển từ điểm xuất phát xuống dưới, gặp khái niệm ngày chuyên biệt hóa nhiều Theo đường từ tài khoản đến tài khoản tiết kiệm, ta phải qua lớp tài khoản giao dịch Lớp tiếp tục phân loại lớp chuyên biệt hóa cao hơn, tùy thuộc vào chức chúng 1- Kí hiệu khái qt hóa chun biệt hóa Trong biểu đồ trên, lớp cấu trúc nối với mũi tên rỗng, từ lớp chuyên biệt tới lớp khái quát Hình 5.5- Khái qt hóa Q trình bắt đầu với lớp khái quát để sản xuất lớp mang tính chuyên biệt cao gọi trình chun biệt hố (Specialization) Chun biệt hóa: q trình tinh chế lớp thành lớp chuyên biệt Chuyên biệt hóa bổ sung thêm chi tiết đặc tả cho lớp kết Lớp mang tính khái quát gọi lớp cha (superclass), kết chuyên biệt hóa việc tạo lớp (Subclass) Mặt khác, dọc cấu trúc từ lên, ta gặp lớp ngày mang tính khái quát cao - Ví dụ từ lớp tài khoản tiết kiệm lên tới lớp tài khoản Con đường lớp chuyên biệt khiến ngày mang tính khái qt cao gọi q trình khái qt hóa (Generalization) Lớp chuyên biệt gọi lớp con, ví dụ tài khoản tiết kiệm, lớp khái quát kết gọi lớp cha Chuyên biệt hóa khái quát hóa hai đường khác để xem xét mối quan hệ Một lớp lớp lớp đóng vài trị lớp cha lớp khác 97 2- Yếu tố phân biệt (Discriminatior) Để tạo cấu trúc phân cấp, cần phải có số thuộc tính làm tảng cho q trình chun biệt hóa Thuộc tính gọi yếu tố phân biệt (Discriminator) Với giá trị gán cho yếu tố phân biệt lớp cha, ta có lớp tương ứng Hình 5.6 - Yếu tố phân biệt (Discriminatior) Trong hình trên, yếu tố phân biệt lớp tài khoản "loại tài khoản" Chúng ta giả thiết có hai loại tài khoản, mang tính kỳ hạn mang tính giao dịch Theo đó, ta phải tạo hai lớp con, cho tài khoản mang tính kỳ hạn cho tài khoản mang tính giao dịch Trong mơ hình đối tượng, khơng thiết phải nêu bật yếu tố phân biệt Yếu tố phân biệt ln có mặt cấu trúc phân cấp lớp cha/ con, dù có nhấn mạnh mơ hình đối tượng hay không Mặc dầu vậy, để đảm bảo cho mơ hình định nghĩa rõ ràng, trình bày yếu tố phân biệt công việc nên thực 2.1- Lớp trừu tượng Quan sát cấu trúc hình trên, ta thấy lớp tài khoản khơng thực thể hóa, có nghĩa hệ thống không tạo đối tượng thuộc lớp Nguyên nhân lớp tài khoản mang tính khái quát cao đến mức độ việc khởi tạo lớp khơng có ý nghĩa đáng kể Lớp tài khoản đóng vai trị quan trọng việc khái qt hóa thuộc tính cần đến lớp dẫn xuất từ Những loại lớp dùng để cung cấp cấu trúc lớp tồn đầy đủ ý nghĩa mơ hình thật ngồi đời, chúng gọi lớp trừu trượng (abstract class) 98 2.2- Tạo lớp trừu tượng Các lớp trừu trượng kết trình khái qt hóa Hãy quan sát ví dụ cấu trúc lớp sau Lớp tài khoản đứng đầu cấu trúc gọi lớp Lớp cấu trúc chứa thuộc tính khái qt hóa áp dụng cho lớp dẫn xuất từ Trong q trình khái qt hóa, thuộc tính dùng chung lớp chuyên biệt đưa lên lớp cha Lớp cha cuối tạo thuộc tính chung tất lớp dẫn xuất từ Những lớp cha dạng nhiều trường hợp mang tính khái quát tuyệt đối khơng theo đuổi mục đích khởi tạo, chúng có lối ứng xử giống thùng chứa (container) cho tất thuộc tính chung lớp dẫn xuất Những lớp trường hợp chung thường kết ánh xạ danh từ trừu tượng, hệ phương pháp sử dụng danh từ để nhận diện lớp Hình 5.7 - Tạo lớp trừu tượng Biểu đồ cho ta ví dụ khái qt hóa thuộc tính chung, nhiều lớp chuyên biệt Chú ý theo mức chuyên biệt hóa lại có thêm thuộc tính bổ sung thêm cho lớp, khiến chúng mang tính chuyên biệt cao so với lớp cha mức trừu tượng bên Ví dụ lớp tài khoản có thuộc tính số tài khoản tên khách hàng Đây thuộc tính chung chung Tất lớp dẫn xuất từ nó, dù trực tiếp hay gián tiếp (ở mức độ trừu tượng thấp nữa), có quyền sử dụng thuộc tính lớp tài khoản Các lớp tài khoản có kỳ hạn tài khoản giao dịch hai lớp chuyên biệt dẫn xuất từ lớp tài khoản Chúng có thuộc tính chun biệt riêng chúng - ví dụ mức thời gian (duration) lớp tài khoản có kỳ hạn mức tiền tối thiểu lớp tài khoản giao dịch – bên cạnh hai thuộc tính số tài khoản tên khách hàng mà chúng thừa kế từ lớp tài khoản Cũng tương tự với tài khoản đầu tư ngắn hạn tài 99 khoản đầu tư trung hạn loại lớp thuộc tài khoản có kỳ hạn, tài khoản tiết kiệm tài khoản bình thường loại lớp thuộc lớp tài khoản giao dịch 2.3- Lớp cụ thể (concrete class) Lớp cụ thể lớp thực thể hóa Như nói từ trước, lớp cụ thể thực thể hóa gọi đối tượng Trong ví dụ trên, lớp tài khoản đầu tư ngắn hạn tài khoản đầu tư dài hạn thực thể hóa thành đối tượng Tương tự tài khoản tiết kiệm tài khoản bình thường 2.4- Tổng kết phát triển cấu trúc Cơ chế dùng chung thuộc tính thủ tục sử dụng nguyên tắc khái qt hóa gọi tính thừa kế (inheritance) Sử dụng tính thừa kế để tinh chế (refine) lớp dẫn tới việc phát triển cấu trúc Nên phát ứng xử (behaviour) chung loạt lớp thể thành lớp cha Sự khác biệt ứng xử lớp dẫn tới việc tạo lớp Khi phát triển cấu trúc, quan sát ứng xử lớp Trong trường hợp có liên hệ tồn từ lớp cụ thể đến tất lớp lớp cha, nên dịch chuyển liên hệ lên lớp cha Nếu tồn liên hệ lớp lớp cha, chuyên biệt hóa nâng cao cấu trúc để xác định xem liệu liên hệ có áp dụng cho tất lớp lớp cha hay khơng Nếu có gán vào lớp cha, khơng dịch xuống cho lớp phù hợp Trong tiến hành khái quát hóa, trọng tâm cơng việc xác định ứng xử chung nhóm nhiều lớp chuyên biệt bậc trung Khi xây dựng thủ tục thuộc tính chung, nên kiểm tra lại xem chúng có thật yếu tố chung tất lớp chuyên biệt phạm vi Khái quát hóa áp dụng có tập hợp lớp định nghĩa loại đối tượng riêng biệt có số lượng lớn ứng xử chung Trọng tâm tạo nên lớp cha chứa ứng xử chung Khi chuyên biệt hóa, ta tìm khác biệt ứng xử để tạo lớp thích ứng Có nghĩa ta xem xét lớp tồn tại, kiểm tra xem có phải tất ứng xử có khả áp dụng cho đối tượng Nếu không, ta lọc ứng xử lúc cần thiết chia trường hợp thành lớp Trọng tâm chuyên biệt hóa tạo lớp Với chế thừa kế, lớp kế thừa thuộc tính thủ tục tất lớp cha Hình sau làm rõ việc tạo cấu trúc lớp sử dụng tính khái qt 100 Hình 5.8 - Phát triển hệ thống lớp (1) Thường xảy trường hợp tất lớp tham gia vào liên hệ kết tập Trong trường hợp nên tạo lớp cha định nghĩa liên hệ /kết tập Hình sau giải thích thêm điểm này: Hình - Phát triển hệ thống lớp (2) III Quan hệ phụ thuộc nâng cấp (Dependency & Refinement) Bên cạnh liên hệ khái qt hóa, UML cịn định nghĩa hai loại quan hệ khác Quan hệ phụ thuộc (Dependency) liên quan ngữ nghĩa hai phần tử mơ hình, mang tính độc lập mang tính phụ thuộc Mọi thay đổi phần tử độc lập ảnh hưởng đến phần tử phụ thuộc Phần tử mơ hình lớp, gói (package), trường hợp sử dụng,.v.v Có thể nêu vài cí dụ cho phụ thuộc như: lớp lấy tham số đối tượng lớp khác, lớp truy nhập đối tượng toàn cục 101 lớp khác, lớp gọi thủ tục thuộc thuộc lớp khác Trong tất trường hợp có phụ thuộc lớp vào lớp kia, chúng khơng có liên hệ rõ ràng với Quan hệ phụ thuộc thể đường thẳng gạch rời (dashed line) với mũi tên (và thêm nhãn) phần tử mơ hình Nếu sử dụng nhãn khn mẫu (stereotype), xác định loại phụ thuộc Hình sau phụ thuộc dạng "friend", có nghĩa phần tử mơ hình nhận quyền truy cập đặc biệt tới cấu trúc nội phần tử thứ hai (thậm chí tới phần mang tính nhìn thấy private) Hình 5.9- Một quan hệ phụ thuộc lớp Nâng cấp (Refinement) quan hệ hai lời miêu tả vật, mức độ trừu tượng hóa khác Nâng cấp mối quan hệ loại đối tượng lớp thực Các nâng cấp thường gặp khác quan hệ lớp phân tích (trong mơ hình phân tích) lớp thiết kế (trong mơ hình thiết kế) mơ hình hóa thứ, quan hệ lời miêu tả có mức trừu tượng hóa cao lời miêu tả có mức trừu tượng hóa thấp (ví dụ tranh khái quát cộng tác động biểu đồ chi tiết cộng tác đó) Quan hệ nâng cấp cịn sử dụng để mơ hình hóa nhiều mức thực thi thứ (một thực thi đơn giản thực thi phức tạp hơn, hiệu hơn) Quan hệ nâng cấp thể đường thẳng gạch rời (dashed line) với mũi tên rỗng Hình 5.10 - Quan hệ nâng cấp Quan hệ nâng cấp sử dụng việc phối hợp mơ hình Trong dự án lớn, mơ hình cần phải phối hợp với Phối hợp mơ hình sử dụng nhằm mục đích: Chỉ mối liên quan mơ hình nhiều mức độ trừu tượng khác Chỉ mối liên quan mơ hình nhiều giai đoạn khác (phân tích yêu cầu, phân tích, thiết kế, thực thi, ) Hỗ trợ việc quản trị cấu hình 102 Hỗ trợ việc theo dõi mơ hình IV Nâng cấp mơ hình qua vòng lặp Cho tới thời điểm này, qua bước cơng việc phân tích tạo nên phiên mô hình đối tượng Mơ hình cần phải lấy làm mục tiêu cho vòng lặp nâng cấp Cơng việc nâng cấp thực cách đưa mơ hình qua tất giai đoạn phát triển mơ hình đối tượng lần Lần này, kiến thức thu vòng phát triển đầu tỏ hữu dụng Khi nâng cấp mơ hình cần ý đến bước sau: a) Nghiên cứu lớp để tìm thuộc tính thủ tục khơng đồng dạng (dissimilar) Nếu có, xẻ lớp thành thành phần để tạo tính đồng (harmony) lớp Ví dụ với lớp đảm nhận hai vai trò khác nhau, xẻ lớp thành lớp kết với thủ tục xác định rõ ràng b) Nếu phát thấy chức khơng hướng tới lớp đích triệu chứng thiếu lớp Hãy bổ sung lớp thiếu đưa thủ tục kể vào lớp c) Khái qt hóa cịn chưa đủ độ có liên hệ trùng lặp (nhiều liên hệ định nghĩa quan hệ) Trong trường hợp này, cần tạo lớp cha để kết hợp mối liên hệ d) Nếu vai trò mang ý nghĩa đặc biệt quan trọng hệ thống thường cần lớp riêng Một lựa chọn khác biến liên hệ định nghĩa vai trò thành lớp liên hệ e) Nếu lớp thiếu thuộc tính lẫn thủ tục / liên hệ lớp không cần thiết Hãy loại bỏ lớp f) Hãy rà sát tồn hệ thống để tìm vai trị lớp cịn chưa thể Nếu có, triệu chứng thiếu liên hệ g) Nếu có liên hệ đối tượng lại chẳng thủ tục sử dụng tới liên hệ khơng cần thiết Ví dụ ta xác định liên hệ nhân viên thu ngân khách hàng lại khơng có thủ tục định nghĩa hai người Trong trường hợp này, liên hệ không cần thiết Một số mách bảo thực tế: Nghiên cứu để hiểu thấu đáo vấn đề cần giải quyết: Khi xây dựng mơ hình đối tượng, khơng nên bắt đầu cách viết cấu trúc lớp, mối liên hệ mối quan hệ thừa kế lộ rõ bề mặt đập thẳng vào mắt Hãy dành thời gian nghiên cứu kỹ chất vấn đề Mơ hình đối tượng phải thiết kế để phù hợp với giải pháp cho vấn đề mà nhắm tới Cẩn thận chọn tên: Tên cần chọn cách cẩn thận chứng nhận tồn thực thể Tên cần phải xác, ngắn gọn, tránh gây bàn cãi Tên phải thể tổng thể đối tượng không nhắm tới khía cạnh đối tượng 103 Hình 8.20: trạng thái Vẽ trạng thái, thay đổi, thiết lập kiện, hoạt động, điều kiện phù hợp 148 II HƯỚNG DẪN VẼ MƠ HÌNH BUSINESS USECASE Một số khái niệm kí hiệu có liên quan: Trong bước xây dựng mơ hình use case nghiệp vụ này, sử dụng đến khái niệm kí hiệu sau: Khái niệm Ý nghĩa Kí hiệu Tác nhân nghiệp vụ Một người hay vật bên ngồi quy (Business actor) trình nghiệp vụ tương tác với nghiệp vụ Trường hợp sử dụng Một business use case xác định phía nghiệp (Business Usecase) vụ tập hợp thể business use-case Mỗi thể chuỗi hành động mà nghiệp vụ thực để đem lại kết rõ ràng cho business actor cụ thể Một lớp business use-case chứa tất luồng cơng việc phụ có liên quan để tạo kết Mơ hình nghiệp vụ Là mơ hình mơ tả hoạt động (Business Model) nghiệp vụ, bao gồm mô hình usecase nghiệp vụ mơ hình đối tượng nghiệp vụ Mơ hình usecase Đây mơ hình nghiệp vụ (Business chức nghiệp vụ Nó Usecase Model) dùng làm đầu vào chủ yếu để xác định vai trò tổ chức 149 Quan hệ mở rộng Là mối quan hệ usecase , (Extend Relationship) usecase trường hợp mở rộng usecase cịn lại, tức thực không thực usecase lại Quan hệ bao gồm Là mối quan hệ usecase (Include Relationship) usecase sử dụng