<< Chapter < Page Chapter >> Page >

Phương thức xuất. Đây là phương thức thuần ảo.

Lớp SinhVien:

Dữ liệu điểm trung bình.

Phương thức kiểm tra khả năng được khen thưởng.

Phương thức xuất.

Lớp GiangVien:

Dữ liệu điểm trung bình.

Phương thức kiểm tra khả năng được khen thưởng.

Phương thức xuất.

Hình 7.5

File PERSON.H

1: //PERSON.H

2: Định nghĩa lớp Nguoi

3: #ifndef PERSON_H

4: #define PERSON_H

5:

6: #include<iostream.h>

7:

8: #define MAX_TEN 50

9:

10: class Nguoi

11: {

12: protected:

13: char HoTen[MAX_TEN];

14: public:

15: Nguoi(char *HT);

16: virtual int DuocKhenThuong() const=0;

17: virtual void Xuat() const=0;

18: };

19:

20: #endif

File PERSON.CPP:

1: //PERSON.CPP

2: Định nghĩa hàm thành viên cho lớp Nguoi

3: #include<string.h>

4: #include "person.h"

5:

6: Nguoi::Nguoi(char *HT)

7: {

8: strcpy(HoTen,HT);

9: }

File STUDENT.H:

1: //STUDENT.H

2: Định nghĩa lớp SinhVien

3: #ifndef STUDENT_H

4: #define STUDENT_H

5:

6: #include "person.h"

7:

8: class SinhVien : public Nguoi

9: {

10: protected:

11: float DiemTB;

12: public:

13: SinhVien(char *HT,float DTB);

14: virtual int DuocKhenThuong() const;

15: virtual void Xuat() const;

16: };

17:

18: #endif

File STUDENT.CPP:

1: //STUDENT.CPP

2: Định nghĩa hàm thành viên cho lớp SinhVien

3: #include "student.h"

4:

5: SinhVien::SinhVien(char *HT,float DTB):Nguoi(HT)

6: {

7: DiemTB=DTB;

8: }

9:

10: int SinhVien::DuocKhenThuong() const

11: {

12: return DiemTB>9.0;

13: }

14:

15: void SinhVien::Xuat() const

16: {

17: cout<<"Ho va ten cua sinh vien:"<<HoTen;

18: }

File TEACHER.H:

1: //TEACHER.H

2: Định nghĩa lớp GiangVien

3: #ifndef TEACHER_H

4: #define TEACHER_H

5:

6: #include "person.h"

7:

8: class GiangVien : public Nguoi

9: {

10: protected:

11: int SoBaiBao;

12: public:

13: GiangVien(char *HT,int SBB);

14: virtual int DuocKhenThuong() const;

15: virtual void Xuat() const;

16: };

17:

18: #endif

File TEACHER.CPP:

1: //TEACHER.CPP

2: Định nghĩa hàm thành viên cho lớp GiangVien

3: #include "teacher.h"

4:

5: GiangVien::GiangVien(char *HT,int SBB):Nguoi(HT)

6: {

7: SoBaiBao=SBB;

8: }

9:

10: int GiangVien::DuocKhenThuong() const

11: {

12: return SoBaiBao>5;

13: }

14:

15: void GiangVien::Xuat() const

16: {

17: cout<<"Ho va ten cua giang vien:"<<HoTen;

18: }

File CT7_2.CPP:

1: //CT7_2.CPP

2: //Chương trình 7.2

3: #include<ctype.h>

4: #include "person.h"

5: #include "student.h"

6: #include "teacher.h"

7:

8: int main()

9: {

10: Nguoi *Ng[100];

11: int N=0;

12: char Chon,Loai;

13: char HoTen[MAX_TEN];

14: do

15: {

16: cout<<"Ho va ten:";

17: cin.getline(HoTen,MAX_TEN);

18: cout<<"Sinh vien hay Giang vien(S/G)? ";

19: cin>>Loai;

20: Loai=toupper(Loai);

21: if (Loai=='S')

22: {

23: float DTB;

24: cout<<"Diem trung binh:";

25: cin>>DTB;

26: Ng[N++]=new SinhVien(HoTen,DTB);

27: }

28: else

29: {

30: int SoBaiBao;

31: cout<<"So bai bao:";

32: cin>>SoBaiBao;

33: Ng[N++]=new GiangVien(HoTen,SoBaiBao);

34: }

35: cout<<"Tiep tuc (C/K)? ";

36: cin>>Chon;

37: Chon=toupper(Chon);

38: cin.ignore();

39: if ((N==100)||(Chon=='K'))

40: break;

41: }

42: while (1);

43: for(int I=0;I<N;++I)

44: {

45: Ng[I]->Xuat();

46: if (Ng[I]->DuocKhenThuong())

47: cout<<". Nguoi nay duoc khen thuong";

48: cout<<endl;

49: }

50: return 0;

51: }

Chúng ta chạy ví dụ 7.2 , kết quả ở hình 7.6

Hình 7.6: Kết quả của ví dụ 7.2

Ví dụ 7.3: Giả sử cần phải tạo các hình: hình tròn và hình chữ nhật được tô theo hai màu red và blue. Xây dựng một cây phả hệ để quản lý các hình này.

Trước hết chúng ta cần có lớp cơ sở Shape để lưu trữ thông tin chung cho các hình, sau đó là hai lớp dẫn xuất Rectangle về hình hình chữ nhật và Circle về hình tròn như hình 7.7

Lớp Shape:

Tọa độ tâm.

Màu đường biên.

Màu tô.

Phương thức thiết lập tô màu.

Phương thức vẽ hình. Đây là phương thức thuần ảo.

Lớp Rectangle:

Chiều dài và chiều rộng.

Phương thức vẽ hình.

Lớp Circle:

Bán kính.

Phương thức vẽ hình.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Lập trình hướng đối tượng. OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10794/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Lập trình hướng đối tượng' conversation and receive update notifications?

Ask