Chng 6 Thit k hng i tng Cc

  • Slides: 43
Download presentation
Chương 6 Thiết kế hướng đối tượng

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ệ

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

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ự

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

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

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

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

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ụ: Class Instance Tên của Instance • 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

Các ký hiệu trong sơ đồ tương tác • Ký hiệu biểu thức thông

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: return : = message (parameter : parameter. Type) : return. Type • Ví dụ: • spec : = get. Product. Spect (id) • spec : = get. Product. Spect (id: Item. ID) 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 collaboration diagram • Link: • Là một liên kết có

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

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á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)

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

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

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á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ề: return. Value=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

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

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

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 -

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

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

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ụ,

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 • Phương thức được thực hiện để hoàn thành trách

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 aget. Subtotal lớp Sales. Lineltem 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 • Nguyên tắc chung và các giải pháp đặc trưng

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 25

GRASP là gì? • GRASP (General Responsibility Assignment Software Patterns) • Mô tả nguyê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 26

Information Expert • Giải pháp: Gán một trách nhiệm cho lớp mà chứa các

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 Grand. Total Lớp Sale có thể tính tổng của tất cả các instance của lớp Sales. Line. Item Gán trách nhiệm tính Grand. Total 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à

Information Expert • Ví dụ (tt): • Thông tin thiết để tính Subtotal là quantitytrong lớp Sales. Lineltem. và price trong lớp Product. Specification. 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

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ể

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

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 Sales. Lineltem? 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 make. Lineltem

Creator • Vd(tt): vậy việc gán trách nhiệm yêu cầu phương thức make. Lineltem đượ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

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

Low Coupling • Ví dụ(tt): lớp nào thực hiện trách nhiệm tạo một thể

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 add. Payment(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ể

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

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 36

High Cohesion • Cohesion: trong thiết kế hướng đối tượng, cohesion (chức năng gắ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 37

High Cohesion • Ví dụ: giả sử cần tạo một thể hiện của Payment

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

High Cohesion • Ví dụ (tt): giải pháp 2, ủy quyền trách nhiệm tạo

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

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ư

Controller • Ví dụ: ai điều khiển các sự kiện của hệ thống như enterltem và end. Salel 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

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

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 43