Bài giảng Phương pháp lập trình hướng đối tượng: Tuần 9 – Phạm Tú San

42 25 2
Bài giảng Phương pháp lập trình hướng đối tượng: Tuần 9 – Phạm Tú San

Đ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

Bài giảng “Phương pháp lập trình hướng đối tượng – Tuần 9: Đa kế thừa” cung cấp cho người học các kiến thức: Đa kế thừa - nhập nhằng hàm trùng tên, vấn đề hình thoi, khái niệm Interface, xử lý lỗi và ngoại lệ, qui tắc xử lý lỗi,… Mời các bạn cùng tham khảo.

Tuần 09: Đa kế thừa ĐA KẾ THỪA Đa kế thừa Đa kế thừa : Một lớp kế thừa từ nhiều lớp khác Khi Ví dụ: B class A: public B, public C { }; C A Đa kế thừa Các thành phần liệu phương thức B C kế thừa lớp dẫn xuất A tương tự kế thừa đơn Tính chất đa xạ (thơng qua phương thức ảo) hoạt động tương tự kế thừa đơn Ví dụ class B { void draw(); }; class C { void cal(); }; class A: public B, public C { void process(); }; void doSth(A& a) { // B::draw() a.draw(); // C::cal() a.cal(); // A::process() a.process(); } Đa kế thừa: nhập nhằng hàm trùng tên Nếu lớp B C có biến hay phương thức trùng tên nhau, lớp A để xác định biến/phương thức từ B hay từ C, phải sử dụng toán tử phạm vi :: int main() { A a; a.tinh(); //error: ambiguous a.B::tinh(); // OK a.C::tinh(); // OK } Vấn đề hình thoi class A { }; class B: public { }; class C: public { }; class D: public public { }; A A B, C Theo khai báo trên, biến/phương thức A kế thừa lặp lại D Vấn đề hình thoi – giải pháp Giải pháp: sử dụng lớp sở ảo (virtual base class) class A { }; class B: public virtual A { }; class C: public virtual A { }; class D: public B, public C { }; Khi lớp D có A Đa kế thừa - interface Không hỗ trợ C# java Thay vào khái niệm interface Interface Interface A Khái niệm Interface Interface phần lớp Lớp = Interface + cài đặt Interface quy định tính cung cấp bên Tivi: interface hệ thống nút bấm Bài tốn gói hàng Một doanh nghiệp chun vận chuyển hàng hóa thường xuyên phải đóng gói hàng vào thùng Một thùng hàng chứa nhiều đơn vị hàng nhiều thùng hàng Mỗi đơn vị hàng có khối lượng xác định Hãy xây dựng chương trình cho phép: Nhập thùng hàng (cho nhập vào thùng hàng đơn vị hàng) Cho phép thêm bớt thùng hàng đơn vị hàng Tính tổng khối lượng thùng hàng MẪU THIẾT KẾ Mẫu thiết kế Mẫu thiết kế Ngun lý HĐT cịn mơ hồ, khó hiểu -> Cần có giải mẫu Mẫu thiết kế Gang of Four Ra đời OOPSLA 1994 23 giải mẫu cho vấn đề thường gặp Giới thiệu mẫu thiết kế HĐT Phân loại mẫu thiết kế Gang of four Mẫu tạo lập đối tượng (creational patterns) Mẫu cấu trúc đối tượng (structural patterns) Mẫu hành xử đối tượng (behavioral patterns) Tư tưởng Giao tiếp thơng qua interface thay lớp cụ thể Ưu tiên composition, hạn chế kế thừa lớp COMPOSITE Composite Structural pattern “Structural patterns are concerned with how classes and objects are composed to form larger structures Structural class patterns use inheritance to compose interfaces or implementations” Các lớp đối tượng phân cấp đệ qui Ví dụ: Một hình vẽ phức tạp chứa hình vẽ đơn giản Một mạch điện chứa mạch đơn, mạch nối tiếp mạch song song Một thư mục chứa thư mục tập tin Composite - structure Ví dụ - tốn thư mục Mỗi thư mục có chứa thư mục file Viết chương trình cho phép nhập, xuất tính kích thước thư mục Ví dụ - tốn thư mục folderAbstract -name: string +getSize(): int +add(a: folderAbstract): void +input(): void file -mSize: int +getSize(): int +add(a: folderAbstract): void +input(): void folder +getSize(): int +add(a: folderAbstract): void +input(): void SINGLETON Singleton Creational Pattern “Creational design patterns abstract the instantiation process They help make a system independent of how its objects are created, composed, and represented” Bảo đảm lớp tạo đối tượng Chỉ cho phép sử dụng đối tượng Ví dụ: Cửa sổ Open/Save tập tin Chương trình Task Manager Lớp FigureManager … Singleton - structure * Singleton getInstance() { if (_singleton==NULL) _singleton = new Singleton(); return _singleton; } Phương thức thiết lập: - Phải cài đặt - Ở mức private protected Singleton– sử dụng s1 s2 trỏ đối tượng void main() { Singleton* s1 = Singleton.getInstance(); Singleton* s2 = Singleton.getInstance(); Singleton s3; } Singleton - sample code Thao khảo Design Patterns: Elements of Reusable ObjectOriented Software Slide PPLTHDT Cô Đặng Thị Thanh Nguyên Thầy Nguyễn Minh Huy ... lớp – phương pháp RAII (Resource Acquisition Is Initialization) Phương thức hủy dọn dẹp Bài tập Xây dựng lại lớp PhanSo bắt tất lỗi có Tài liệu tham khảo Slide PPLTHĐT Thầy Nguyễn Minh Huy Tuần. .. Four Ra đời OOPSLA 199 4 23 giải mẫu cho vấn đề thường gặp Giới thiệu mẫu thiết kế HĐT Phân loại mẫu thiết kế Gang of four Mẫu tạo lập đối tượng (creational patterns) Mẫu cấu trúc đối tượng (structural... PhanSo bắt tất lỗi có Tài liệu tham khảo Slide PPLTHĐT Thầy Nguyễn Minh Huy Tuần 09: Các mẫu thiết kế hướng đối tượng Bài tốn gói hàng Một doanh nghiệp chun vận chuyển hàng hóa thường xuyên phải đóng

Ngày đăng: 03/11/2020, 05:39