Các phương thức của môi lớp có thể đươc xác định bằng cách phân tích các biểu đồ tương tác. Nói chung, tập hơp tất ca các Messages đươc gửi đến một lớp X trên tất ca các sơ đồ tương [r]
(1)Chương 6
(2)NỘI DUNG
Sơ đồ lớp thiết kế biểu diễn chi tiết lớp phần mềm giao diện ứng dụng Những thông tin tiêu biểu sơ đồ lớp thiết kế bao gồm:
◦ Các lớp (classes)
◦ Mối quan hệ thuộc tính (associations & attributes
◦ Giao diện thao tác giao diện (interfaces with their operations) ◦ Các phương thức (methods)
◦ Thuộc tính (attribute)
(3)Định nghĩa sơ đồ lớp
Biểu đồ lớp chi sư tồn lớp mối quan h chung ban ê thiết kế logic h thốngê
▫Chi cấu truc tĩnh mô hình lớp, cấu truc bên chung mối quan h với lớp khác.ê
▫Chi tất ca ho c phân cấu truc lớp h thống.ă ê ▫Không đưa thông tin tạm thời
(4)(5)Mục đích sơ đồ lớp
• Làm tài liệu cho lớp cấu thành hệ thống hệ thốngcon
• Mơ ta kết hơp, tổng quát hóa quan hệ kết tập lớp biểu đồ
• Chi rõ đặc trưng lớp, thuộc tính tác vụ mơi lớp
• Biểu đồ lớp đươc dùng khắp nơi chu trình phát triển, từ toán đến mô hình cài đặt
(6)Định nghĩa sơ đồ lớp
Biểu đồ lớp chi sư tồn lớp mối quan h chung ban ê thiết kế logic h thốngê
▫Chi cấu truc tĩnh mô hình lớp, cấu truc bên chung mối quan h với lớp khác.ê
▫Chi tất ca ho c phân cấu truc lớp h thống.ă ê ▫Không đưa thông tin tạm thời
(7)Domain Model - Design Model Classes
Domain model: lớp khái niệm đại diện cho khái niệm trừu
tương giới thưc mà người phát triển phân mềm quan tâm
Mơ hình lớp thiết kế (Design model class): lớp thiết kế đại diện cho
(8)Domain Model - Design Model Classes
(9)Xây dựng sơ đồ lớp thiết kế
Các bước xây dưng sơ đồ lớp thiết kế
(10)Các cách tiếp cận xác định lớp
1 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ại
(11)Tiếp cận theo thực thể nghiệp vụ
Đối với thực thể vật: kiểm chứng xem có nhu câu
quan lý thông tin thưc thể hệ thống khơng?
Nếu có, xác định lớp sơ đồ phân tích biểu diễn cho thưc thể này
Xác định tên lớp: tên sư vật
(12)(13)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ô ta thông tin hoạt động giao dịch hệ thống thì chuyển thành lớp mô hình phân tích
(14)(15)(16)Tiếp cận theo cụm danh từ
Đề xuất Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener
Ý tưởng: xác định lớp thông qua việc đọc văn
bản mô tả use case mơ tả u cầu để tìm kiếm
(17)(18)Tiếp cận theo cụm danh từ
(19)Tiếp cận theo cụm danh từ
(20)Danh từ, cụm danh từ là thuộc tính
Xác định danh từ, cụm danh từ thuộc tính: Chi đươc sử dụng giá trị
Khơng có nhiều đặc trưng riêng, chi mô ta đặc trưng đố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 phai lớp
Số dư tài khoản: thuộc tính lớp Tài khoan PIN không hợp lệ: giá trị, không phai lớp Mật khẩu: thuộc tính (có thể lớp Khách hàng)
(21)Danh từ, cụm danh từ là thuộc tính
(22)Danh từ, cụm danh từ là thuộc tính
Loại bỏ ứng viên
Loại bỏ ứng viên không mục tiêu không thuộc phạm vi hệ thống:
Thông điệp Hệ thống Mẫu tin Ngân quỹ VND
(23)Danh từ, cụm danh từ là thuộc tính
ATM: lớp
Máy ATM: cung cấp giao diện tới ngân hàng
Thẻ ATM: cung cấp khách hàng với khoá tới tài khoan
Khách hàng: khách hàng cá nhân sử dụng máy ATM, có tài khoan.
Ngân hàng: khách hàng phụ thuộc vào ngân hàng Nó nơi tập trung tài khoan
xử lý giao dịch tài khoan
Tài khoản: mơ hình hoá tài khoan khách hàng cung cấp dịch vụ tài khoan
(24)Xác định lớp phần mềm
Xác định lớp mà tham gia vào giai pháp phân mềm Các lớp đươc tìm thấy cách duyệt tất ca sơ đồ tương tác danh sách lớp domain model
(25)Xác định lớp phần mềm
Ví dụ: Một hệ thống máy tính tiền sử dụng để ghi lại doanh thu
và xử lý khoản toán, sử dụng cửa hàng bán lẻ, hệ thống bao gồm thành phần phần cứng máy tính và máy quét mã vạch
Hệ thống giao tiếp với ứng dụng khác máy tính thuế, hệ thống kiểm soát hàng tồn kho, kho lưu trữ sản phẩm theo Loại sản phẩm.
(26)Xác định lớp phần mềm
(27)Xác định lớp phần mềm
(28)Tiếp cận theo phân loại
Tiếp cận theo phân loại: phân loại lớp hệ thống dưa mẫu chung
Lớp khái niệm (concept): Một khái niệm quan niệm sư hiểu biết riêng biệt giới
Lớp khái niệm bao gồm nguyên lý đươc dùng để tổ chức để lưu trữ hoạt động trao đổi mặt quan lý
Ví dụ: lớp khái niệm là: phương pháp, hiệu năng, mơ hình, môn học… Lớp kiện (event):
Lớp sư kiện điểm thời gian cân đươc lưu trữ Các sư việc xay thời điểm, bước dãy tuân tư bước
(29)Tiếp cận theo phân loại
Lớp tổ chức (organisation): tập hơp người,
tài nguyên, phương tiện, nhóm xác định chức người dùng Ví dụ: đơn vị, phận, phịng ban, chức danh,…
Lớp người (people): lớp người thể vai trò khác người dùng việc tương tác với hệ thống Những đối tương thường người dùng hệ
thống người không sử dụng hệ thống thông tin họ đươc lưu trữ hệ thống
(30)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ơ ta thơng tin nó.
Ví dụ: tồ nhà, kho, văn phịng, chi nhánh, đại lý,…
Lớp vật hữu hình thiết bị: đối tương vật lý nhóm đối tương hữu hình mà cam nhận trưc quan thiết bị mà hệ thống
tương tác
(31)Tiếp cận theo phân loại
(32)(33)Tiếp cận theo phân tích hoạt động usecase
Phân tích use case “Giải PIN khơng hợp lệ” Các hoạt động khách hàng thực với hệ thống:
Đưa vào thẻ ATM Nhập mã PIN Rút thẻ ATM
(34)(35)(36)(37)(38)StereoType lớp
(39)StereoType lớp
(40)StereoType lớp
(41)StereoType lớp
(42)(43)Xác định mối quan hệ các lớp
Xá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 hai hay nhiều lớp 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 động từ cụm giới từ thành phần của, làm việc cho, chứa
trong, …
(44)(45)(46)(47)Loại bỏ mối kết hợp không cần thiết
Mối kết hợp đa phân: mối kết hơp ba lớp trở lên, mối kết
hơp phức tạp cách thể
(48)Loại bỏ 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: mối kết hơp đươc định nghĩa
(49)Loại bỏ 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: mối kết hơp đươc định nghĩa
(50)(51)(52)Loại bỏ mối kết hợp không cần thiết
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ể quan hệ kế
thừa lớp cấu trúc phân cấp xác định dòng kế thừa
Tiếp cận top-down:
Từ lớp tìm kiếm cụm danh từ chứa tên lớp tính từ (hoặc danh từ) Đánh giá xem cụm danh từ trường hợp đặc biệt cần quản lý hệ thống khơng
Tìm kiếm xem có đặc trưng riêng lớp
(53)(54)Loại bỏ mối kết hợp không cần thiết
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 lớp để xác định xem có thuộc tính phương thức giống Sau
chúng ta gom nhóm đưa thuộc tính phương thức chung lên lớp tổng quát (trừu tượng)
Tạo mối kết hợp tổng quát hoá từ lớp đến lớp tổng quát xác định
(55)Loại bỏ mối kết hợp không cần thiết
Vấn đề đa thừa kế:
Phức tạp vấn đề kế thừa
(56)Loại bỏ mối kết hợp không cần thiết
Vấn đề đa thừa kế:
Phức tạp vấn đề kế thừa
(57)Loại bỏ mối kết hợp không cần thiết
Xác định mối kết hơp thành phân (a-partof, aggregration) Đặc trưng ban
Tính bắc cầu: Nếu lớp A thành phân lớp B lớp B thành phân
lớp C lớp A thành phân lớp C
(58)Loại bỏ mối kết hợp không cần thiết
Xác định mối kết hơp thành phân (a-partof, aggregration)
(59)Loại bỏ mối kết hợp không cần thiết
Vật chứa: đối tương vật lý chứa đưng thành phân không đươc cấu
(60)Loại bỏ mối kết hợp không cần thiết
Tập hợp – thành viên: đối tương khái niệm chứa thành phân vật lý
hoặc khái niệm
(61)Loại bỏ mối kết hợp không cần thiết
Tập hợp – thành viên: đối tương khái niệm chứa thành phân vật lý
hoặc khái niệm
(62)Xác đinh thuộc tính
Câu hỏi:
Thơng tin gì đối tương đươc quan lý ? Nguyên tắc:
Tên: danh từ; cụm danh từ
Đơn gian: chi 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 đươc bổ sung chi tiết giai đoạn tiếp theo)
(63)Xác đinh thuộc tính
Lớp Khách Hàng: Phân tích lân lươt tất ca use case có liên quan đến lớp Khách
(64)Xác đinh phương thức
Các phương thức mơi lớp đươc xác định cách phân tích biểu đồ tương tác.
(65)Xác đinh phương thức
Câu hỏi:
Các đối tương chịu trách nhiệm xử lý gì thơng tin để cung cấp dịch vụ cho hệ thống?
Nguyên tắc:
Tên: động từ + bổ ngữ
Chi quan tâm đến method có phạm vi tồn cục (public), method có phạm vi cục đươc phát giai đoạn thiết kế cài đặt (vd: constructor, ….)
(66)Xác đinh phương thức
Phân tích dịng message sơ đồ tuân tư để xem chuyển hoạt động thành method khơng?
Nếu có, đặt tên cho method ứng với hoạt động
(67)(68)Tinh chế thuộc tính
Kiểu thuộc tính
Thuộc tính đơn trị
Thuộc tính đa trị: dùng cấu trúc, list, array, bag để khai báo cài đặt
Ví dụ: thuộc tính sốĐiệnThoại lớp NhânViên đa trị địaChỉ[3]: String
(69)Tinh chế thuộc tính
<Phạm vi> <tên> : <kiểu thuộc tính> = <giá trị khởi tạo>
(70)Tinh chế thuộc tính
<phạm vi> <tên> <(danh sách tham số)>: <kiểu tra về>
Các method đa số method có phạm vi tồn cục Ví dụ:
+get_Tên(): String
(71)Xác đinh phương thức
(72)Xác đinh phương thức
Một số vấn đề với tên phương thức
◦ Thông điệp Create sơ đồ tương tác, chi đối tương đươc khởi tạo, chuyển thiết kế
sang ngơn ngữ lập trình hướng đối tương, phai đươc thể ngữ canh ngôn ngữ thưc
(73)Xác đinh phương thức
Một số vấn đề với tên phương thức
◦ Một thông điệp dạng (multiobject) truyền tới đối tương chứa bên lớp đó ◦ Ví dụ: Find() thông điệp đến tập đối tương
◦ Vì vậy, Find() không phai phân lớp Productspecification; phân interface
(74)Bổ sung role vào mối quan hê
Bổ sung điều hướng vào mối quan hệ:
◦ Điều hướng thuộc tính Role, chi mối quan hệ đươc thưc từ lớp nguồn đến lớp
mục tiêu.
(75)Bổ sung role vào mối quan hê
Ví dụ:
(76)(77)(78)(79)(80)(81)(82)(83)Sử dụng Package tổ chức domain model
Để dễ dàng phân thiết kế hướng đối tương, domain model đươc tổ chức thành package
(84)Nhóm lớp vào Package
Nguyên tắc 1: nhóm lớp vào package phai thỏa tiêu chí gắn kết (coherence) sau:
◦ Mục tiêu: lớp phai tra dịch vụ đáp ứng yêu câu người dùng
◦ Ổn định: sư cô lập lớp package phai thưc sư ổn định
trình phát triển dư án, sau
◦ Thời gian sống đối tượng: tiêu chí giup phân biệt đươc lớp
mà đối tương có thời gian sống rất khác
(85)Nhóm lớp vào Package
Cách chọn lớp vào package cân phai:
◦ Có chủ đề, có quan hệ
chặt chẽ khái niệm mục đích
(86)Nhóm lớp vào Package
Ký hiệu Package UML: đươc hiển thị thư mục dạng
tab, Subordinate packages đươc hiển thị bên
Tên packages
(87)Quyền sở hữu tham chiếu
Quyền sở hữu:
◦ Một phân tử đươc sở hữu package chứa
◦ Tuy nhiên, Một phân tử đươc tham chiếu đến phân tử package
khác Trong trường hơp này, tên phần tử đươc xác định tên package theo định dạng: PackageName::ElementName
(88)Package phụ thuộc
Nếu phân tử mô hình phụ thuộc vào phân tử khác thì giữa chung có mối quan hệ phụ thuộc
Một package phụ thuộc chi phân tử bên kết hơp với phân tử package mục tiêu
(89)Package phụ thuộc
(90)Ví dụ 1
(91)Ví dụ 1
(92)Ví dụ 1
(93)Ví dụ 1
(94)Bài tập
Cho domain model hệ thống đặt vé máy bay, chia domain model thành package sau cho đam bao:
◦ Tính kết dính mơi package
◦ Giam tối thiểu sư phụ thuộc package ◦ Dịch vụ môi package gì?
(95)(96)Bài tập
Gợi ý:
◦ Package 1: gồm lớp liên quan đến chuyến bay ◦ Package 2: lớp liên quan đến việc đặt vé
Lưu ý:
◦ Lớp flight đặt Package tốt nhất để đam bao thời gian
(97)Bài tập
(98)Bài tập
(99)Bài tập
Giai pháp 2: lớp Flight package Bookings đam bao đươc tiêu chí:
◦ Thời gian sống đối tương
◦ Flight có quan hệ chặt với việc đặt vé (Bookings) so với thông tin
(100)Bài tập
(101)