Практикум по объектно-ориентированному программированию на базе языка с++ Учебно-методическое пособие



Pdf көрінісі
бет25/44
Дата21.02.2024
өлшемі0.49 Mb.
#492719
түріПрактикум
1   ...   21   22   23   24   25   26   27   28   ...   44
ООП С

Множественное наследование означает, что класс имеет несколько 
базовых классов. Если в базовых классах есть одноименные методы, то
может произойти конфликт идентификаторов, который устраняется при 
помощи операции доступа к области видимости ::. В иерархию классов
описанных выше, добавим класс Employee_Student (сотрудники, которые 
учатся). 
 
class Employee_Student: public Employee, public Student {...}; 
Employee_Student A; 
cout<
cout<


45 
Если у базовых классов есть общий предок (Person в примере),
то производный класс унаследует два экземпляра поля предка, а это чаще 
всего нежелательно. Для вызова метода get_age() требуется явно указы-
вать классы, в которых эти методы описаны, иначе компилятор не сможет 
разобраться к методу какого из базовых классов надо обратиться. Чтобы 
избежать двойного наследования полей, при наследовании общего 
предка, его определяют с ключевым словом virtual (виртуальный класс). 
 
class Person {...}; 
class Student: virtual Person{...}; 
class Employee: virtual Person{...}; 
class Employee_Student: public Employee, public Student 
{...}; 
Класс Employee_Student будет содержать только один экземпляр 
полей класса Person.
Задание. Написать реализацию класса Shape и наследовать от него класс 
Circle. Описание класса Shape и Сircle представлены ниже: 
// shape.h 
class Shape 

protected: 
int color; 
public: 
Shape(){color=14;} 
Shape(int color){this->color=color;} 
~Shape(); 
 
int get_color(); 
void set_color(int); 
 
virtual void show()=0; 
virtual void hide()=0; 
virtual void move(int dx, int dy)=0; 
virtual void moveto(int x, int y)=0; 
 
}; 
46 
// circle.h 
class Circle:public Shape{ 
protected: 
int x, y, r; 
public: 
Circle():Shape(){x=100; y=100;} 
Circle(int x, int y, int r, int c):Shape(c){this->x=x; this->y=y; this->r=r}; 
~Circle(); 
 
int get_x(); 
int get_y(); 
int get_r(); 
 
void set_x(int); 
void set_y(int); 
void set_r(int); 
 
virtual void show(); 
virtual void hide(); 
virtual void move(int dx,int dy); 
virtual void moveto(int x,int y); 
}; 


Достарыңызбен бөлісу:
1   ...   21   22   23   24   25   26   27   28   ...   44




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет