Объектно-ориентированное программирование на языке С++. Лясин Д.Н - 78 стр.

UptoLike

Составители: 

78
ределить в программе объекты, реально к предметной области не
имеющие никакого отношения. Для того, чтобы предотвратить возмож-
ность использования объектов таких классов в программе, их объявляют
абстрактными. Абстрактным называется класс, в котором определена
хотя бы одна чистая виртуальная функция. Чистая виртуальная функция
определяется следующим образом:
virtual тип имя_функции( список_формальных
_параметров )=0;
Чистая виртуальная функция не имеет реализации, ее нельзя вы-
звать в программе, она служит лишь как основа для дальнейшего поли-
морфного переопределения в производном классе. Соответственно, аб-
страктный класс не может иметь объектов, так как в нем не определены
операции над объектами (или, по крайней мере, хотя бы
одна операция,
реализуемая чистой виртуальной функцией).
Рассмотрим пример.
//Листинг 32. Использование абстрактных классов
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <conio.h>
class File //абстрактный класс
{ protected:
char **str; //адрес буфера для временного хранения информации из файла
char Name[30]; //имя файла
int n; //количество строк в буфере
virtual int ReadFile()=0; //чистая виртуальная функция чтения информации из файла в буфер
public:
File(char*,int);
~File();
void display(); //метод, отображающий содержимое буфера на экране
};
File::File(char * FileName,int k) //конструктор
{ strcpy(Name,FileName);
n=k;
str=new char*[n]; //выделяем память под буфер
for(int i=0;i<n;i++)
str[i]=new char[80];
}
File::~File() //деструктор
    ределить в программе объекты, реально к предметной области не
    имеющие никакого отношения. Для того, чтобы предотвратить возмож-
    ность использования объектов таких классов в программе, их объявляют
    абстрактными. Абстрактным называется класс, в котором определена
    хотя бы одна чистая виртуальная функция. Чистая виртуальная функция
    определяется следующим образом:
          virtual тип имя_функции( список_формальных_параметров )=0;
          Чистая виртуальная функция не имеет реализации, ее нельзя вы-
    звать в программе, она служит лишь как основа для дальнейшего поли-
    морфного переопределения в производном классе. Соответственно, аб-
    страктный класс не может иметь объектов, так как в нем не определены
    операции над объектами (или, по крайней мере, хотя бы одна операция,
    реализуемая чистой виртуальной функцией).
          Рассмотрим пример.
//Листинг 32. Использование абстрактных классов
#include 
#include 
#include 
#include 
class File               //абстрактный класс
{ protected:
  char **str;            //адрес буфера для временного хранения информации из файла
  char Name[30];         //имя файла
  int n;                //количество строк в буфере
  virtual int ReadFile()=0; //чистая виртуальная функция чтения информации из файла в буфер
  public:
  File(char*,int);
  ~File();
  void display(); //метод, отображающий содержимое буфера на экране
};
File::File(char * FileName,int k) //конструктор
{ strcpy(Name,FileName);
  n=k;
  str=new char*[n]; //выделяем память под буфер
  for(int i=0;i