Chương 6 Tương ứng bội và phương thức ảo Lớp cơ sở trừu tượng - Pdf 70

Lớp cơ sở trừu tượng
5.1. Lớp cơ sở trừu tượng
Một lớp cơ sở trừu tượng là một lớp chỉ được dùng làm cơ sở cho các lớp khác. Không
hề có đối tượng nào của một lớp trừu tượng được tạo ra cả, bởi vì nó chỉ được dùng để định
nghĩa một số khái niệm tổng quát, chung cho các lớp khác. Một ví dụ về lớp trừu tượng là lớp
CON_VAT (con vật), nó sẽ dùng làm cơ sở để xây dựng các lớp con vật cụ thể như lớp
CON_CHO (con chó), CON_MEO (con mèo),... (xem ví dụ bên dưới)
Trong C++ , thuật ngữ “Lớp trừu tượng” đặc biệt áp dụng cho các lớp có chứa các phương
thức ảo thuần tuý. Phương thức ảo thuần tuý là một phương thức ảo mà nội dung của nó không
có gì. Cách thức định nghĩa một phương thức ảo thuần tuý như sau:
virtual void tên_phương_thức() = 0 ;
Ví dụ:
class A
{
public:
virtual void nhap() = 0 ;
virtual void xuat() = 0 ;
void chuong();
} ;
Trong ví dụ trên, thì A là lớp cơ sở trừu tượng. Các phương thức nhap và xuat được khai báo
là các lớp ảo thuần tuý (bằng cách gán số 0 cho chúng thay cho việc cài đặt các phương thức
này). Phương thức chuong() là một phương thức bình thường và sẽ phải có một định nghĩa ở
đâu đó cho phương thức này.
Không có đối tượng nào của một lớp trừu tượng lại có thể được phát sinh. Tuy nhiên các
con trỏ và các biến tham chiếu đến các đối tượng của lớp trừu tượng thì vẫn hợp lệ. Bất kỳ lớp
nào dẫn xuất từ một lớp cớ sở trừu tượng phải định nghĩa lại tất cả các phương thức thuần ảo
mà nó thừa hưởng, hoặc bằng các phương thức ảo thuần tuý, hoặc bằng những định nghĩa thực
sự. Ví dụ:
class B : public A
{
public:

// Lop co so truu tuong
// Lop CON_VAT
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <ctype.h>
#include <string.h>
class CON_VAT
{
protected:
char *ten;
public:
CON_VAT()
{
ten = NULL;
}
CON_VAT(char *ten1)
{
ten = strdup(ten1);
}
345 346
virtual void xung_ten()
{
}
} ;
class CON_MEO:public CON_VAT
{
public:
CON_MEO() : CON_VAT()
{

DS_CON_VAT(int max);
~DS_CON_VAT();
int nhap(CON_VAT *c);
CON_VAT* xuat(int n);
void thong_ke();
} ;
DS_CON_VAT::DS_CON_VAT(int max)
{
max_so_con_vat = max;
so_con_vat = 0;
h = new CON_VAT*[max];
for (int i=0; i<max; ++i)
h[i] = NULL;
}
DS_CON_VAT::~DS_CON_VAT()
{
max_so_con_vat = 0;
so_con_vat = 0;
delete h;
}
int DS_CON_VAT::nhap(CON_VAT *c)
{
if (so_con_vat==max_so_con_vat)
return 0;
int i=0;
while (h[i]!=NULL) ++i;
h[i]=c;
so_con_vat++ ;
return (i+1);
}

CON_CHO c5("BONG");
CON_MEO m1("MUOP");
CON_MEO m2("DEN");
CON_MEO m3("TRANG");
CON_MEO m4("TAM THE");
CON_MEO m5("VANG");
void main()
{
DS_CON_VAT d(20);
clrscr();
d.nhap(&c1);
int im2 = d.nhap(&m2);
d.nhap(&c3);
d.nhap(&m1);
int ic4 = d.nhap(&c4);
d.nhap(&c5);
d.nhap(&m5);
d.nhap(&c2);
d.nhap(&m3);
349 350


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status