Bài giảng Phương pháp lập trình hướng đối tượng - Tuần 09: Đa kế thừa - Phạm Tú San

Tuần 09:  
Đa kế thừa  
ĐA KẾ THỪA  
Đa kế thừa  
Đa kế thừa : Một lớp có thể kế thừa từ nhiều  
lớp khác. Khi đó  
Ví dụ:  
B C  
class A: public B, public C  
{
...  
};  
A
Đa kế thừa  
Các thành phần dữ liệu và phương thức của B  
và C sẽ được kế thừa trong lớp dẫn xuất A  
tương tự như kế thừa đơn  
Tính chất đa xạ (thông qua phương thức ảo)  
vẫn hoạt động tương tự như trong kế thừa đơn.  
Ví dụ  
class B {  
void draw();  
void doSth(A& a)  
{
};  
class C {  
// B::draw()  
a.draw();  
// C::cal()  
a.cal();  
void cal();  
};  
class A: public B,  
public C  
// A::process()  
a.process();  
}
{
void process();  
};  
Đa kế thừa: nhập nhằng hàm trùng tên  
Nếu trong lớp B và C có các biến hay phương thức  
trùng tên nhau, thì tại lớp A để xác định là  
biến/phương thức đó từ B hay từ C, chúng ta 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 A  
{...};  
class C: public A  
{...};  
class D: public B,  
public C  
{...};  
Theo như khai báo ở trên, các biến/phương  
thức trong A sẽ được kế thừa lặp lại trong D  
Vấn đề hình thoi – giải pháp  
Giải pháp: sử dụng lớp cơ sở ảo (virtual base  
class)  
class A {...};  
class B: public virtual A  
{...};  
class C: public virtual A  
{...};  
class D: public B, public C  
{...};  
Khi đó trong lớp D chỉ có duy nhất 1 A  
Đa kế thừa - interface  
Không được hỗ trợ trong C# và java  
Thay vào đó là khái niệm interface  
Interface 1  
Interface 2  
A
Khái niệm Interface  
Interface là một phần của lớp  
Lớp = Interface + cài đặt  
Interface quy định tính năng cung cấp ra bên  
ngoài  
Tivi: interface là hệ thống nút bấm  
Interface - Java  
interface Bicycle  
{
// wheel revolutions per minute  
void changeGear(int newValue);  
void speedUp(int increment);  
void applyBrakes(int decrement);  
}
class ACMEBicycle implements Bicycle  
{
// remainder of this class  
// implemented as before  
}
Bicycle b = new ACMEBicycle();  
Interface – C++  
C++ giả lập interface bằng abstract class  
abstract class  
Tất cả các phương thức đều thuần ảo  
Dynamic binding - Interface  
class A: public Interface1, public Interface2  
{public:  
void ham1(){}  
void ham2(){}  
};  
class Interface1  
{public:  
class Interface2  
{public:  
virtual void ham1() = 0;  
virtual void ham2() = 0;  
};  
};  
void main()  
{
Interface1 *i1 = new A();  
i1->ham1();  
Interface2 *i2 = new A();  
i2 -> ham2();  
}
Interface  
Public class A: Interface1, Interface2  
{public void ham1(){}  
public void ham2(){}  
};  
public Interface1  
public Interface2  
{public void ham1() = 0;  
};  
{public void ham2() = 0;  
};  
Tài liệu tham khảo  
Slide PPLTHĐT của  
Thầy Đinh Bá Tiến  
Thầy Nguyễn Minh Huy  
Tuần 09:  
Xử lý lỗi và ngoại lệ  
Các loại lỗi  
Các loại lỗi  
Lỗi biên dịch  
Lỗi thực thi  
Lỗi ngữ nghĩa  
Xét lớp PhanSo – các lỗi thực thi có thể xảy ra  
PhanSo( int tu, int mau);  
void NghichDao();  
void Nhap();  
PhanSo ChiaPhanSo(const PhanSo &p);  
Traditional Error Handling  
Xử lý lỗi truyền thống  
Xử lý lỗi cho từng hàm  
Dùng kết quả để báo lỗi  
Chỉ trả về 1 loại lỗi  
Ảnh hưởng tới kết quả  
Dùng tham số để báo lỗi  
Tăng số lượng tham số  
Dùng biến toàn cục  
Có thể quên check  
Exception Handling  
Xử lý lỗi qua kênh dành riêng  
Kênh Exception  
Tách rời phần xử lý lỗi  
Rõ ràng, trong sáng  
Dễ quản lý, bảo trì  
Có khả năng thông báo lỗi ra bên  
ngoài cho các hàm ở cấp cao hơn  
Xây dựng sẵn trong ngôn ngữ  
Exception Handling - Cách sử dụng  
Từ khóa “throw”  
Đưa lỗi vào kênh Exception  
Từ khóa “try”  
Dò lỗi trong kênh Exception  
Từ khóa “catch”  
Bắt lỗi từ kênh Exception  
Tải về để xem bản đầy đủ
pdf 42 trang baolam 24780 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phương pháp lập trình hướng đối tượng - Tuần 09: Đa kế thừa - Phạm Tú San", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_phuong_phap_lap_trinh_huong_doi_tuong_tuan_09_da_k.pdf