Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chương 6 Thiết kế hướng đối tượng

Similar presentations


Presentation on theme: "Chương 6 Thiết kế hướng đối tượng"— Presentation transcript:

1 Chương 6 Thiết kế hướng đối tượng

2 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

3 Bài giảng Phân tích thiết kế hệ thống - GV: 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ài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền

4 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

5 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

6 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

7 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

8 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 Class Instance Tên của Instance Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền

9 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) return := message (parameter : parameterType) : returnType 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
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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

20 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

21 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

22 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

23 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

24 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
Phươ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ệ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

25 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
Mô hình - Patterns Nguyê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

26 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

27 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

28 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

29 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

30 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

31 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

32 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

33 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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 Register Payment Sale Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền

34 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

35 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

36 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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 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ền

37 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

38 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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 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 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền

39 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

40 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

41 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

42 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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

43 Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
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. 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ền


Download ppt "Chương 6 Thiết kế hướng đối tượng"

Similar presentations


Ads by Google