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

UptoLike

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

66
while(w.Control()!=27); //пока не нажата клавиша ESC, просматриваем текст в окне
}
4.4. Виртуальные классы
В некоторых случаях дублирование компонент непрямого базового класса
необходимо устранить. Например, перед нами стоит задача определить классы,
описывающие поведение шахматных фигур.
//Листинг 27. Определение классов «шахматные фигуры»
class Figure //класс «фигура»
{ protected:
int hor; //позиция фигуры по горизонтали
char vert; //позиция фигуры по вертикали
int color; //цвет фигуры
public:
Figure(char x, int y, int z) //конструктор
: vert(x), hor(y), color(z)
{}
};
class Castle : public Figure //класс ладья
{ public:
Сastle(char x, int y, int z):
Figure (x, y, z) //конструктор
{}
int Move(char x, int y) //функция, реализующая ход ладьи на поле [x y ]
{
if ( ((x == vert)
&& (y != hor))
|| ((x != vert)
&& (y == hor)))
{
hor = y;
vert = x;
return 1;
}
return 0;
}
};
class Bishop : public Figure //класс слон
{ public:
Bishop(char x, int y, int z):
Figure (x, y, z) //конструктор
{}
while(w.Control()!=27); //пока не нажата клавиша ESC, просматриваем текст в окне
}




      4.4. Виртуальные классы


      В некоторых случаях дублирование компонент непрямого базового класса
необходимо устранить. Например, перед нами стоит задача определить классы,
описывающие поведение шахматных фигур.
  //Листинг 27. Определение классов «шахматные фигуры»
  class Figure                    //класс «фигура»
  { protected:
    int hor;                      //позиция фигуры по горизонтали
    char vert;                    //позиция фигуры по вертикали
    int color;                     //цвет фигуры
    public:
        Figure(char x, int y, int z) //конструктор
         : vert(x), hor(y), color(z)
       {}
   };
  class Castle : public Figure         //класс ладья
  { public:
       Сastle(char x, int y, int z):
       Figure (x, y, z)               //конструктор
         {}
     int Move(char x, int y)         //функция, реализующая ход ладьи на поле [x y ]
      { if ( ((x == vert)
         && (y != hor))
         || ((x != vert)
        && (y == hor)))
        {
          hor = y;
          vert = x;
          return 1;
        }
       return 0;
      }
  };
  class Bishop : public Figure          //класс слон
  { public:
       Bishop(char x, int y, int z):
       Figure (x, y, z)               //конструктор
         {}

                                                  66