Bài giảng Phân tích và Thiết kế hệ thống - Chương 6: Thiết kế hướng đối tượng - Từ Thị Xuân Hiền
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.
Trong 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.
43 trang |
Chia sẻ: huongthu9 | Lượt xem: 472 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Phân tích và Thiết kế hệ thống - Chương 6: Thiết kế hướng đối tượng - Từ Thị Xuân Hiền, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 6Thiết kế hướng đối tượngCác sơ đồ tương tác trong UMLBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền2Giới thiệuCó 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 diagramsSequence diagrams Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền3Collaboration Diagrams Sơ đồ hợp tác - Collaboration diagramsBiể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ền4Collaboration Diagrams Ưu điểmTiết kiệm không gian, dễ dàng thêm đối tượng mới vào sơ đồNhược điểmKhó khăn trong việc biểu diễn các thông điệp phức tạpBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền5Sequence 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ền6Sequence Diagrams Ưu điểmBiể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ạpNhược điểmChiếm không gian theo chiều ngang khi thêm đối tượng mớiBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền7Cá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ền8ClassInstanceTên của InstanceCác ký hiệu trong sơ đồ tương tácKý 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ền9return := message (parameter : parameterType) : returnType Các ký hiệu trong collaboration diagramLink: 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ềuVí dụ: Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền10Các ký hiệu trong collaboration diagramMessages 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ền11Các ký hiệu trong collaboration diagramTạo một InstanceTrong 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ền12Các ký hiệu trong collaboration diagramThô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ền13Các ký hiệu trong Sequence diagramLink:Khác với collaboration diagrams, trong sequence diagram không hiển thị Link giữa các đối tượngThô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ền14Các ký hiệu trong Sequence diagramVí dụ:Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền15Các ký hiệu trong Sequence diagramGiá 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áoDù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ền16Các ký hiệu trong Sequence diagramThô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ền17Các ký hiệu trong Sequence diagramThô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ị đúngCú 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ền18Ví dụSơ đồ tuần tự của hành vi Kiểm tra tài khoảnBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền19Thiết kế hướng đối tượngBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền20Nguyên tắc thiết kế hướng đối tượngTrong 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ền21Trách nhiệm - ResponsibilitiesTrá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ệmDoingKnowingBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền22Trách nhiệm - ResponsibilitiesDoingThự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.KnowingBiết về dữ liệu được đóng gói riêngBiết về những đối tượng liên quanBiết biết về những thông tin có thể lấy được và tính toánBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền23Phương thức - Methods Phươ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ệmVí 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ền24Mô hình - PatternsNguyê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ápBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền25GRASP 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 GraspInformation ExpertCreatorHigh Cohesion Low CouplingController Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền26Information 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 GrandTotalLớ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 GrandTotalCho lớp SaleBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền27Information 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ền28Information Expert Ví dụ (tt):Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền29CreatorGiả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 AB chứa đối tượng A. B ghi một thể hiện của các đối tượng AB 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ền30CreatorVấ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ền31CreatorVd(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ền32 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, systemsVấ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ềnBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền33PaymentRegisterSaleLow CouplingVí 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 SaleBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền34Low CouplingVí 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à SaleBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền35Low CouplingMẫ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 PaymentMẫ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 thiế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ền36High 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 caoBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền37High 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 SaleBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền38Lớ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 makePaymentHigh 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 couplingBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền39ControllerController: 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ền40ControllerVí 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ền41ControllerVí dụ (tt): theo mẫu Controller thì có 2 lựa chọnBài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền42ControllerHệ 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.Trong 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ền43
Các file đính kèm theo tài liệu này:
- bai_giang_phan_tich_va_thiet_ke_he_thong_chuong_6_thiet_ke_h.pptx