Bài giảng Phân tích thiết kế hệ thông - Chương 6: Thiết kế hướng đối tượng - Từ Thị Xuân Hiền
Giới thiệu
Có hai loại sơ đồ dùng để biểu diễn sự tương tác giữa các đối tượng bằng các thông điệp (messages):
Collaboration diagrams
Sequence diagrams
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phân tích thiết kế hệ thông - Chương 6: Thiết kế hướng đối tượng - Từ Thị Xuân Hiền", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Phân tích thiết kế hệ thông - Chương 6: Thiết kế hướng đối tượng - Từ Thị Xuân Hiền
Chương 6 Thiết kế hướng đối tượng Các sơ đồ tương tác trong UML Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 2 Giới thiệu Có hai loại sơ đồ dùng để biểu diễn sự tương tác giữa các đối tượng bằng các thông điệp (messages): Collaboration diagrams Sequence diagrams Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 3 Collaboration Diagrams Sơ đồ hợp tác - Collaboration diagrams Biểu diễn sự tương tác giữa các đối tượng mà trong đó các đối tượng có thể đặt tại bất kỳ vị trí nào. Thông điệp tương tác được đánh số thứ tự thể hiện trình tự tương tác. Ví dụ: Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 4 Collaboration Diagrams Ư u điểm Tiết kiệm không gian, dễ dàng thêm đối tượng mới vào sơ đồ Nhược điểm Khó khăn trong việc biểu diễn các thông điệp phức tạp Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 5 Sequence Diagrams Sơ đồ tuần tự - Sequence diagrams Sơ đồ tuần tự được dùng phổ biến trong biểu diện sự tương tác giữa các đối tượng , trung vào việc trao đổi thông báo theo trình tự thời gian. Ví dụ: Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 6 Sequence Diagrams Ư u điểm Biểu diễn rõ ràng trình tự các thông điệp tương tác giữa các đối tượng, trong các trường hợp phức tạp Nhược điểm Chiếm không gian theo chiều ngang khi thêm đối tượng mới Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 7 Các ký hiệu trong sơ đồ tương tác Lớp (Classes) và thể hiện (Instances) Trong UML, một thể hiện ( instances) của một lớp (class) có ký hiệu giống như Lớp , nhưng tên của thể hiện (instances) được gạch chân . Ví dụ: Tên của một Instance là duy nhất trong sơ đồ, nếu không đặt tên thì đặt dấu : trước tên Lớp và gạch chân Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 8 Class Instance Tên của Instance Các ký hiệu trong sơ đồ tương tác Ký hiệu biểu thức thông báo (Message) Cú pháp chuẩn cho các biểu thức thông báo trong UML: Ví dụ: spec := getProductSpect ( id) spec := getProductSpect ( id:ItemID) Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 9 return := message ( parameter : parameterType) : returnType Các ký hiệu trong collaboration diagram Link : Là một liên kết có hướng giữa hai đối tượng , là một thể hiện của một quan hệ kết hợp. Có thể có nhiều thông báo trên cùng một Link và theo cả hai chiều Ví dụ: Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 10 Các ký hiệu trong collaboration diagram Messages to "self" or "this" Một thông báo được gửi từ một đối tượng để chính nó Ví dụ: Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 11 Các ký hiệu trong collaboration diagram Tạo một Instance Trong UML, quy ước thông báo tên create được dùng để tạo instance. Thông báo create có thể bao gồm các tham số , chỉ ra giá trị khởi tạo của instance. Ví dụ: Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 12 Các ký hiệu trong collaboration diagram Thông báo có điều kiện (Conditional Messages) Thông báo có điều kiện được biểu diễn theo định dạng: S ố thứ tự [ điều kiện ] . Thông báo này được chỉ gửi nếu biểu thức điều kiện có giá trị đúng. Ví dụ: Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 13 Các ký hiệu trong Sequence diagram Link : Khác với collaboration diagrams, trong sequence diagram không hiển thị Link giữa các đối tượng Thông báo (Message) Được biểu diễn bằng một biểu thức thông báo đặt trên đường thẳng có hướng chỉ chiều truyền thông báo. Các thông báo được tuần tự theo thời gian từ trên xuống Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 14 Các ký hiệu trong Sequence diagram Ví dụ: Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 15 Các ký hiệu trong Sequence diagram Giá trị trả về của thông báo : có 2 cách để biểu diễn giá trị trả về của thông báo Dùng ký hiệu Dùng biến chứa giá trị trả về: returnValue=message() Ví dụ: Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 16 Các ký hiệu trong Sequence diagram Thông báo "self" hoặc "this“: Thông báo được gửi từ một đối tượng đến chính nó được biểu diễn bằng cách sử dụng một hộp kích hoạt (activation box) lồng nhau Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 17 Các ký hiệu trong Sequence diagram Thông báo có điều kiện: Thông báo chỉ được gửi khi biểu thức điều kiện có giá trị đúng Cú pháp: [ Conditional expression] Message() Ví dụ: Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 18 Ví dụ Sơ đồ tuần tự của hành vi Kiểm tra tài khoản Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 19 Thiết kế hướng đối tượng Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 20 Nguyên tắc thiết kế hướng đối tượng Trong giai đoạn phân tích , yêu cầu của bài toán được mô hình hóa bằng domain model . Trong giai đoạn thiết kế , mục tiêu là xác định các lớp phần mềm và gán trách nhiệm cho các đối tượng sao cho đáp ứng được các yêu cầu của bài toán. GRASP là một phương pháp sử dụng các nguyên tắc thiết kế dựa trên mô hình (patterns) gán trách nhiệm. Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 21 Trách nhiệm - Responsibilities Trách nhiệm liên quan đến nghĩa vụ của một đối tượng về hành vi của nó . Trách nhiệm được gán vào lớp các đối tượng trong suốt giai đoạn thiết kế đối tượng. Có 2 loại trách nhiệm Doing Knowing Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 22 Trách nhiệm - Responsibilities Doing Thực hiện một công việc, ví dụ, tạo đối tượng, thực hiện phép tính, Bắt đầu một hoạt động trong các đối tượng khác. Kiểm soát và điều phối các hoạt động trong các đối tượng khác. Knowing Biết về dữ liệu được đóng gói riêng Biết về những đối tượng liên quan Biết biết về những thông tin có thể lấy được và tính toán Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 23 Phương thức - Methods P hương thức được thực hiện để hoàn thành trách nhiệm . Trách nhiệm được thực hiện bằng các phương thức . Phương thức có thể kết hợp với phương thức khác để thực hiện trách nhiệm Ví dụ Lớp Sale có thể dùng nhiều phương thức và hợp tác với các đối tượng khác để tính total, như gửi thông báo agetSubtotal lớp SalesLineltem yêu cầu tính Subtotal . Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 24 Mô hình - Patterns N guyên tắc chung và các giải pháp đặc trưng được hệ thống hóa trong một định dạng cấu trúc mô tả các vấn đề và giải pháp được dùng để hướng dẫn thiết kế phần mềm , được gọi là Mô hình (Pattern) Tên của mô hình thường gồm 2 phần: Vấn đề và giải pháp Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 25 GRASP là gì? GRASP (General Responsibility Assignment Software Patterns) Mô tả nguyên tắc cơ bản trong thiết kế hướng đối tượng, được biểu diễn dưới dạng các mô hình (Patterns) Các mẫu Grasp Information Expert Creator High Cohesion Low Coupling Controller Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 26 Information Expert Giải pháp : Gán một trách nhiệm cho lớp mà chứa các thông tin cần thiết để thực hiện trách nhiệm. Ví dụ: trong domain model của hệ thống máy tính tiền, những lớp nào cần thiết để tính GrandTotal Lớp Sale có thể tính tổng của tất cả các instance của lớp SalesLineItem Gán trách nhiệm tính GrandTotal Cho lớp Sale Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 27 Information Expert Ví dụ (tt): Thông tin thiết để tính Subtotal là quantitytrong lớp SalesLineltem. và price trong lớp ProductSpecification. Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 28 Information Expert Ví dụ (tt): Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 29 Creator Giải pháp : gán lớp B có trách nhiệm tạo ra một thể hiện của lớp A nếu một hoặc nhiều điều sau đây là đúng: B gộp các đối tượng A B chứa đối tượng A . B ghi một thể hiện của các đối tượng A B có các dữ liệu khởi tạo được thông qua A khi nó được tạo ra . Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 30 Creator Vấn đề : Ai phải chịu trách nhiệm cho việc tạo ra một thể hiện mới của một số lớp? Ví dụ: ai sẽ chịu trách nhiệm cho việc tạo ra một thể hiện của SalesLineltem ? Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 31 Creator Vd(tt): vậy việc gán trách nhiệm yêu cầu phương thức makeLineltem được định nghĩa trong lớp Sale . Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 32 Low Coupling Low coupling : là liên kết có độ phụ thuộc thấp, các phần tử có low coupling bao gồm: classes , subsystems, systems Vấn đề: Làm thế nào để hỗ trợ độ phụ thuộc thấp, tác động thay đổi thấp, và tăng tái sử dụng ? Ví dụ: các lớp trong hệ thống máy tính tiền Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 33 Payment Register Sale Low Coupling Ví dụ(tt): lớp nào thực hiện trách nhiệm tạo một thể hiện của lớp Payment? Lớp Register có thể thực hiện tạo (creating) một Payment và gửi một thông báo addPayment(p) đến lớp Sale Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 34 Low Coupling Ví dụ(tt): một giải pháp khác cho việc tạo các thể hiện mới của Payment là kết hợp lớp Payment và Sale Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 35 Low Coupling Mẫu thiết kế 1: Register tạo (create) một thể hiện của Payment , thêm kết ghép (coupling) với Payment Mẫu thiết kế 2: Sale tạo (create) một thể hiện của Payment , không làm tăng coupling. Mẫu t hiết kế 2 là thích hợp hơn vì lower coupling đ ược duy trì Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 36 High Cohesion Cohesion : trong thiết kế hướng đối tượng, cohesion (chức năng gắn kết) là một biện pháp làm thế nào để các phần tử liên quan chặt ch ẽ với nhau. Giải pháp : Gán một trách nhiệm để duy trì sự kết dính cao Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 37 High Cohesion Ví dụ : giả sử cần tạo một thể hiện của Payment và kết hợp với lớp Sale . Lớp nào thực hiện trách nhiệm này? Theo mẫu create: lớp Register tạo Payment và gửi thông báo AddPayment(p) đến lớp Sale Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 38 Lớp Register tham gia vào một phần trách nhiệm để hoàn thành các hoạt động của hệ thống makePayment High Cohesion Ví dụ (tt): giải pháp 2, ủy quyền trách nhiệm tạo thể hiện của Payment cho lớp Sale . Thiết kế thứ hai hỗ trợ high cohesion và low coupling Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 39 Controller Controller: là một điều phối, nó không thực hiện công việc của chính nó mà ủy thác cho các đối tượng khác. Vấn đề: Ai chịu trách nhiệm xử lý sự kiện đầu vào? Giải pháp : Gán trách nhiệm cho đối tượng đại diện cho: Hệ thống hoặc hệ thống con (subsystem) Một kịch bản của Use mà trong đó xãy ra sự kiện của hệ thống ( use case controller) Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 40 Controller Ví dụ: ai điều khiển các sự kiện của hệ thống như enterltem và endSalel Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 41 Controller Ví dụ (tt): theo mẫu Controller thì có 2 lựa chọn Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 42 Controller Hệ thống nhận sự kiện từ bên ngoài, thường liên quan đến một giao diện điều khiển bởi con người , hoặc một hệ thống khác. T rong thiết kế đối tượng, controller pattern hướng dẫn việc lựa chọn điều khiển sự kiện phù hợp . Controller nhận các yêu cầu dịch vụ từ các lớp giao diện và phối hợp thực hiệ n , bằng cách điều phối cho các đối tượng khác. Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền 43
File đính kèm:
- bai_giang_phan_tich_thiet_ke_he_thong_chuong_6_thiet_ke_huon.pptx