Bài giảng môn Lập trình - Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ

Lập trình  
Chương 5: Dẫn xuất/thừa kế  
và đa hình/đa xạ  
2/10/2017  
Nội dung  
. 5.1 Dẫn xuất/thừa kế  
. 5.2 Hàm ảo và cơ chế đa hình/đa xạ  
. 5.3 Lớp thuần ảo  
. 5.4 Kiểm soát truy nhập  
. 5.5 Tương thích kiểu  
2
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
5.1 Dẫn xuất và kế thừa  
. Nghiên cứu các thuộc tính và phương thức của các  
loại xe đạp sau  
. Xe đạp (Bicycle)  
. Tandem bicycle  
3
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
. Racing Bike  
. Mountain Bike  
4
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
5.1 Dẫn xuất và kế thừa (…)  
. Tandem bicycle là một loại xe đạp  
– Xe đạp có hai yên  
. Mountain bicycle là một loại xe đạp  
– Xe đạp có khả năng chống sốc (lốp dầy và nhiều bắnh răng)  
. Racing bicyle là một loại xe đạp  
– Xe đạp có cấu tạo khí động lực học nhẹ  
. Tandem, mountain, racing bicycle là những loại xe  
đạp chuyên dụng  
– Có các thành phần cơ bản của một chiếc xe đạp  
– Cùng nguyên lý hoạt động  
– Bổ sung thêm các thông tin khác  
5
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
5.1 Dẫn xuất và kế thừa (…)  
. Cơ chế dẫn xuất/thừa kế là một kỹ thuật lập trình hướng đối  
tượng cho phép chuyên biệt hóa  
. Dẫn xuất cho phép tạo ra một lớp mới (lớp dẫn xuất) của các đối  
tượng bằng cách sử dụng các lớp cũ như là các lớp cơ sở  
– Lớp dẫn xuất thừa hưởng các thuộc tính và hành vi của lớp “cha-  
mẹ” (lớp cơ sở)  
– Lớp dẫn xuất là một phiên bản chuyên biệt hóa của lớp “cha-mẹ”  
Lớp cơ sở - ” lớp cha mẹ”  
Bicycle  
Mountain  
Bikes  
Racing  
Bikes  
Tandem  
Bikes  
Lớp dẫn xuất  
6
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Ví dụ minh họa sử dụng cơ chế dẫn xuất  
. Xây dựng các lớp biểu diễn về con người, sinh viên,  
giảng viên  
. Các thuộc tính và phép toán cơ bản của lớp Person  
Tên lớp  
Person  
name: string  
Thuộc tính  
age: int  
gender: string  
set_name  
get_name  
set_age  
Phép toán/  
phương thức  
get_age  
set_gender  
get_gender  
display  
7
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
. Các thuộc tính và phép toán cơ bản của lớp Student và  
Lecture  
Lecture  
Student  
name: string  
age: int  
gender: string  
faculty: string  
telnumber: int  
name: string  
age: int  
gender: string  
class: string  
id: int  
set_name  
get_name  
set_age  
set_name  
get_name  
set_age  
get_age  
get_age  
set_gender  
get_gender  
set_faculty  
get_faculty  
set_telnumber  
get_telnumber  
display  
set_gender  
get_gender  
set_class  
get_class  
set_id  
get_id  
display  
8
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
5.1 Dẫn xuất và kế thừa (…)  
. Ba lớp trên giống nhau về:  
– Thuộc tính:  
Name  
Age  
gender  
– Phương thức  
set_name, get_name  
set_age, get_age  
set_gender, get_gender  
. Khác nhau: lớp Student, Lecture có bổ sung thêm các  
thuộc tính và phương thức  
9
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Person  
. Quan hệ lớp  
name: string  
age: int  
gender: string  
Lớp cơ sở  
set_name  
get_name  
set_age  
get_age  
set_gender  
get_gender  
display  
Quan hệ dẫn xuất  
Lớp dẫn xuất  
Lecture  
Student  
Faculty: string  
Telnumber: int  
class: string  
ID: int  
set_class  
get_class  
set_ID  
set_faculty  
get_faculty  
set_telnumber  
get_telnumber  
display  
get_ID  
display  
10  
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Thực hiện (Lớp Person)  
//Khai báo lớp Person trong file person.h  
#include <iostream>  
#include <string>  
using namespace std;  
class Person{  
string name;  
int age;  
string gender;  
public:  
Person(string,int,string);  
string get_name();  
void set_name(string);  
int get_age();  
void set_age(int);  
string get_gender();  
void set_gender(string);  
void display()  
};  
11  
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Thực hiện (Lớp Person)  
//Định nghĩa lớp Person trong file person.cpp  
#include “person.h”  
Person::Person(string _name,int _age, string _gender){  
name = _name;  
age = _age;  
sex = _gender;  
}
string Person::get_name(){ return name;}  
void Person::set_name(string _name){ name = _name;}  
int Person::get_age(){ return age;}  
void Person::set_age(int _age){ age = _age;}  
string Person::get_gender(){ return gender;}  
void Person::set_gender(string _gender){gender = _gender;}  
void Person::display(){  
cout<<“Person:\n”;  
cout<<“Name:\t”<<name<< endl;  
cout<<“Age:\t”<<age<< endl;  
cout<<“Gender:\t”<<gender<< endl;  
}
12  
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Thực hiện (Lớp Student)  
//Khai báo lớp Student trong file student.h  
class Student: public Person  
{
string lop;  
int id;  
public:  
Student(string, int, string,  
string,int);  
void set_class(string c);  
string get_class();  
void set_id(int i);  
int get_id();  
void display();  
};  
13  
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Thực hiện (Lớp Student)  
//Định nghĩa lớp Student trong file student.cpp  
#include “student.h”  
Student::Student(string _n,int _a, string _g, string  
_l,int _id)  
:Person(_n,_a,_g){  
lop = _l;  
id = _id;  
}
void Student:: set_class(string c){lop = c;}  
string Student:: get_class(){ return lop;}  
void Student:: set_id(int i){id = i;}  
int Student:: get_id(){return id;}  
void Student:: display(){  
Person::display();  
cout<<"class:\t"<<lop<<endl;  
cout<<"ID:\t"<<id<<endl;  
}
14  
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Thực hiện (Lớp Lecture)  
// Khai báo lớp Lecture trong file lecture.h  
class Lecture:public Person{  
string faculty;  
int telnumber;  
public:  
Lecture(string,int, string, string,int);  
void set_faculty(string f);  
string get_faculty();  
void set_telnumber(int tel);  
int get_telnumber();  
void display();  
};  
15  
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Thực hiện (Lớp Lecture)  
//Định nghĩa lớp Lecture trong file lecture.cpp  
#include “lecture.h”  
Lecture::Lecture(string _n,int _a, string _g, string _f,int  
_t)  
:Person(_n,_a,_g){  
faculty = _f;  
telnumber = _t;  
}
void Lecture:: set_faculty(string f){faculty = f;}  
string Lecture:: get_faculty(){ return faculty;}  
void Lecture:: set_telnumber(int tel){telnumber = tel;}  
int Lecture:: get_telnumber(){return telnumber;}  
void Lecture:: display(){  
Person::display();  
cout<<"Faculty:\t"<<faculty<<endl;  
cout<<"Telephone Number:\t"<<telnumber<<endl;  
}
16  
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
. Chương trình minh họa sử dụng 1  
//Thực hiện trong file main.cpp  
#include <iostream>  
#include “person.h”  
#include “student.h”  
#include “lecture.h”  
void main(){  
Person per("John",21,"man");  
Student stu("Marry",22,"woman","Electronics1-K53",20080001);  
Lecture lec("Michel",22,"man","Electronics Engineering",123456789);  
cout<<“Person:\t”<<per.get_name()<<“\t”<<per.get_age()  
<<“\t”<<per.get_gender()<<“\n\n”;  
cout<<“Student:\t”<<stu.get_name()<<“\t”<<stu.get_age()<<“\t”  
<<stu.get_gender()<<“\t”<<stu.get_class()<<“\t”<<stu.get_id()<<“\n\n”;  
cout<<“Lecture:\t”<<lec.get_name()<<“\t”<<lec.get_age()<<“\t”  
<<lec.get_gender() <<“\t”<<lec.get_faculty()<<“\t”  
<<lec.get_telnumber()<<“\n\n”;  
}
. Kết quả chạy chương trình  
17  
. Chương trình minh họa sử dụng 2  
//Thực hiện trong file main.cpp  
void main(){  
Person per("John",21,"man");  
Student stu("Marry",22,"woman","Electronics1-K53",20080001);  
Lecture lec("Michel",22,"man","Electronics Engineering",123456789);  
per.display();  
stu.display();  
lec.display();  
}
. Kết quả chạy chương trình  
18  
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Các dạng dẫn xuất/thừa kế  
19  
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Tóm lược  
. Lớp dẫn xuất có hai mục đích cơ bản  
– Mở rộng các tính năng của lớp cơ sở  
– Thừa hưởng các thuộc tính và phép toán của lớp cơ sở  
– Cụ thể hóa các phép toán qua những phương thức khác nhau  
. Ưu điểm của cơ chế thừa hưởng  
– Xây dựng một mô hình phần mềm hướng đối tượng dễ hiểu  
– Tiết kiệm được công việc thực hiện qua sử dụng lại các lớp cơ  
sở  
– Hạn chế lỗi qua cơ chế thừa hưởng  
20  
Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ  
Tải về để xem bản đầy đủ
pdf 40 trang yennguyen 20560 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Lập trình - Chương 5: Dẫn xuất/thừa kế và đa hình/đa xạ", để 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_mon_lap_trinh_chuong_5_dan_xuatthua_ke_va_da_hinhd.pdf