1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu NGUYÊN LÝ THIẾT KẾ HƯỚNG ĐÔI TƯỢNG - LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG doc

55 1,1K 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 55
Dung lượng 419,5 KB

Nội dung

Nguyên thiết kế hướng đối tượng Lập trình hướng đối tượng Nguyên thiết kế hướng đối tượng 2 Bob Tarr Nguyên tắc số 1 Giảm thiểu khả năng truy nhập tới lớp và các thành viên Nguyên thiết kế hướng đối tượng 3 Bob Tarr "Trừu tượng hóa" nghĩa là gì?  Tony Hoare: “trừu tượng hóa xuất phát từ một cách nhìn nhận những đặc điểm tương đồng giữa một số đối tượng, tình thế, hoặc quy trình nhất định trong thế giới thực, và quyết định tập trung vào những điểm tương đồng này và nhất thời lờ đi các điểm khác biệt.”  Grady Booch: “Một trừu tượng hóa kí hiệu các đặc điểm cốt lõi của một đối tượng mà các đặc điểm này phân biệt nó với tất cả các loại đối tượng khác, cho ta các ranh giới được xác định rõ ràng. Tất cả được xét một cách tương đối trong góc nhìn của người quan sát.”  Trừu tượng hóa là một trong những phương pháp nền tảng để đối phó với sự phức tạp  Một trừu tượng hóa tập trung vào hình ảnh bên ngoài của một đối tượng và tách hành vi của đối tượng đó ra khỏi cài đặt của nó. Nguyên thiết kế hướng đối tượng 4 Bob Tarr Đóng gói - encapsulation  Grady Booch: "Đóng gói là để chia tách giữa giao diện cam kết của một trừu tượng hóa và cài đặt của nó.  Craig Larman: "Đóng gói là một cơ chế được dùng để che dữ liệu, cấu trúc bên trong, và chi tiết cài đặt của một đối tượng. Mọi tương tác với đối tượng được thực hiện qua một giao diện công khai của các thao tác"  Các lớp đối tượng không nên để mở các chi tiết cài đặt nội bộ của mình Nguyên thiết kế hướng đối tượng 5 Bob Tarr Che dấu thông tin ở Java  Sử dụng các thành viên private và các hàm đọc (get) và ghi (set) mỗi khi có thể.  Ví dụ:  Thay thế public double speed;  bằng private double speed; public double getSpeed() { return speed; } public double setSpeed(double newSpeed) { speed = … } Nguyên thiết kế hướng đối tượng 6 Bob Tarr Che dấu thông tin ở Java  Ta có thể quy định các ràng buộc về giá trị public void setSpeed(double newSpeed) { if (newSpeed < 0) { sendErrorMessage( ); newSpeed = Math.abs(newSpeed); } speed = newSpeed; }  Nếu các client được truy cập trực tiếp đến thành viên dữ liệu thì từng client phải chịu trách nhiệm kiểm tra ràng buộc Nguyên thiết kế hướng đối tượng 7 Bob Tarr Che dấu thông tin ở Java  Ta có thể thay đổi biểu diễn dữ liệu bên trong lớp đối tượng mà không phải sửa giao diện // Now using metric units (kph, not mph) public void setSpeedInMPH(double newSpeed) { speedInKPH = convert(newSpeed); } public void setSpeedInKPH(double newSpeed) { speedInKPH = newSpeed; } Nguyên thiết kế hướng đối tượng 8 Bob Tarr Che dấu thông tin ở Java  Ta có thể thực hiện các hiệu ứng phụ tùy ý public void setSpeed(double newSpeed) { speed = newSpeed; notifyObservers(); }  Nếu các client của một lớp truy nhập trực tiếp dữ liệu của mình, mỗi client sẽ phải chịu trách nhiệm chạy hiệu ứng phụ Nguyên thiết kế hướng đối tượng 9 Bob Tarr Nguyên tắc số 2 Ưu tiên sử dụng Composition hơn Inheritance Nguyên thiết kế hướng đối tượng 10 Bob Tarr Composition  Phương pháp tái sử dụng mà trong đó chức năng mới được xây dựng bằng cách tạo một đối tượng có thành phần là các đối tượng khác  Chức năng mới được tạo bằng cách sử dụng chức năng của một trong các đối tượng thành phần  Composition có thể là chứa  Tham chiếu  Giá trị  C++ cho phép chứa giá trị đối tượng hoặc chứa tham chiếu đối tượng  Java chỉ cho phép chứa tham chiếu đối tượng. [...]... Trong ngữ cảnh bài toán, chuyên biệt hóa một vai trò, giao tác, hoặc thiết bị  Sai Một Person không phải là một vai trò, giao tác, hay thiết bị Bob Tarr Nguyên thiết kế hướng đối tượng 23 Ví dụ 1 - Composition Bob Tarr Nguyên thiết kế hướng đối tượng 24 Ví dụ 2 Inheritance/Composition Bob Tarr Nguyên thiết kế hướng đối tượng 25 Ví dụ 1  "Là một loại đặc biệt", không phải "là một vai trò",... thiết kế hướng đối tượng 11 Ưu/nhược điểm của Composition Nhược điểm  Kết quả là hệ thống có xu hướng chứa nhiều đối tượng hơn  Các giao diện phải được định nghĩa cẩn thận để sử dụng nhiều đối tượng khác nhau trong vai trò các khối cấu thành  Bob Tarr Nguyên thiết kế hướng đối tượng 12 Thừa kế    Phương pháp tái sử dụng mà trong đó chức năng mới được xây dựng bằng cách mở rộng cài đặt của một đối. .. một cài đặt Bob Tarr Nguyên thiết kế hướng đối tượng 30 Interface  Một interface của một đối tượng là một tập các phương thức của đối tượng đó mà các đối tượng khác biết rằng chúng có thể kích hoạt   Một đối tượng có thể có nhiều interface     Các đối tượng chỉ biết về nhau qua interface về bản chất, mỗi interface là một tập con của tập tất cả các phương thức mà một đối tượng có cài Một kiểu... Nguyên tắc M - óng: Các thực thể phần mềm nên mở đối với việc mở rộng, nhưng đóng đối với việc sửa đổi Bob Tarr Nguyên thiết kế hướng đối tượng 35 Nguyên tắc M - óng (OCP)    Phát biểu: ta nên cố gắng thiết kế các m - un mà không bao giờ cần sửa Để mở rộng hành vi của hệ thống, ta bổ sung các đoạn trình mới, ta không sửa mã cũ Các m - un thỏa mãn OCP cần đạt được 2 tiêu chí: Mở đối với mở rộng:... thể Các đối tượng thuộc các lớp khác nhau có thể thuộc cùng một kiểu, và một đối tượng có thể có nhiều kiểu khác nhau Interface là chìa khóa cho khả năng ghép nối (plugability)! Bob Tarr Nguyên thiết kế hướng đối tượng 31 Ưu/nhược điểm của interface  Ưu điểm:        Client không biết về lớp cụ thể của đối tượng mà mình đang dùng Có thể dễ dàng thay thế đối tượng này vào chỗ của đối tượng khác...  Đúng Một đối tượng passenger sẽ luôn là passenger, agent cũng vậy Mở rộng chứ không định nghĩa lại hoặc xóa bỏ   Đúng Passenger và Agent là các dạng đặc biệt của PersonRole Đúng Trong ngữ cảnh bài toán, chuyên biệt hóa một vai trò, giao tác, hoặc thiết bị  Đúng Mỗi PersonRole là một vai trò Bob Tarr Nguyên thiết kế hướng đối tượng 26 Ví dụ 3 Bob Tarr Nguyên thiết kế hướng đối tượng 27 Ví... xóa bỏ, các trách nhiệm của lớp cha Lớp con không mở rộng khả năng của một lớp chỉ là lớp tiện ích Đối với một lớp trong ngữ cảnh thực của bài toán, lớp con chuyên biệt hóa một vai trò, giao tác, hoặc thiết bị Bob Tarr Nguyên thiết kế hướng đối tượng 21 Ví dụ 1 Bob Tarr Nguyên thiết kế hướng đối tượng 22 Ví dụ 1  "Là một loại đặc biệt" chứ không phải "là một vai trò" của lớp cha   Không biến... s.toString(); } Bob Tarr Nguyên thiết kế hướng đối tượng 19 Ví dụ Inheritance & Compostion  Một vài điểm cần lưu ý về InstrumentedSet :      Lớp này là một Set Có một constructor có tham số là một Set Đối tượng Set nằm trong lớp có thể là một đối tượng thuộc bất cứ lớp nào cài đặt interface Set (có thể không phải HashSet) Lớp này rất linh động và có thể bọc ra ngoài một đối tượng Set bất kì Ví... các đối tượng thành phần qua giao diện của các đối tượng đó  Tái sử dụng kiểu "hộp đen", do chi tiết cài đặt của các đối tượng thành phần không lộ ra ngoài  Tính đóng gói cao  Ít phụ thuộc về cài đặt hơn  Mỗi lớp chỉ chú trọng vào một tác vụ  Quan hệ composition có thể được xác định một cách động trong thời gian chạy qua việc đối tượng nhận tham chiếu tới các đối tượng khác Bob Tarr Nguyên thiết. .. hệ giữa các đối tượng không cần phải được mã cứng cho một lớp cụ thể, từ đó tăng tính linh hoạt Giảm phụ thuộc lẫn nhau (coupling) giữa các thành phần hệ thống Tăng khả năng tái sử dụng Tăng cơ hội sử dụng composition do các đối tượng thành phần có thể thuộc bất cứ lớp nào cài đặt một interface cụ thể Nhược điểm  Làm tăng nhẹ độ phức tạp của thiết kế Bob Tarr Nguyên thiết kế hướng đối tượng 32 Ví . Nguyên lý thiết kế hướng đối tượng Lập trình hướng đối tượng Nguyên lý thiết kế hướng đối tượng 2 Bob Tarr Nguyên tắc số 1 Giảm. phép chứa giá trị đối tượng hoặc chứa tham chiếu đối tượng  Java chỉ cho phép chứa tham chiếu đối tượng. Nguyên lý thiết kế hướng đối tượng 11 Bob Tarr Ưu/nhược

Ngày đăng: 18/02/2014, 23:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN