Составители:
Рубрика:
77
Circle и Rectangle требует полиморфного поведения метода show. Необходимо
также обратить внимание на использование определенных классов в функции
main. Для того чтобы в одном массиве можно было хранить объекты разных (но
родственных, то есть имеющих общего предка) классов, объявлен массив из эле-
ментов типа указатель на базовый класс (Shape в нашем случае):
Shape *mas[10];
Элементы этого массива могут хранить адреса объектов как класса Circle,
так и Rectangle. Однако, когда далее в тексте программы для объектов, хранящих-
ся в массиве mas, вызывается метод show:
for(i=0;i<10;i++)
mas[i]->show();
только полиморфное поведение этого метода обеспечивает правильное отображе-
ние геометрических фигур. Если бы метод show не был бы объявлен виртуальным,
то для всех объектов был бы вызван метод из класса Shape
.
4.6. Абстрактные классы
При проектировании иерархических систем классов программи-
сты обычно стремятся выделить некоторые обобщающие свойства не-
которой группы описываемых сущностей в базовый класс (в предыду-
щих главах такими классами были Subject, Figure, Shape). Зачастую соз-
данные по такому принципу классы носят абстрактный смысл, не опи-
сывая какой-то реально существующий
объект, а лишь являясь некото-
рой основой, на которой строятся действительно необходимые классы.
Это приводит к некоторому несоответствию спроектированной системы
классов предметной области: оказывается, что программист может оп-
Circle и Rectangle требует полиморфного поведения метода show. Необходимо также обратить внимание на использование определенных классов в функции main. Для того чтобы в одном массиве можно было хранить объекты разных (но родственных, то есть имеющих общего предка) классов, объявлен массив из эле- ментов типа указатель на базовый класс (Shape в нашем случае): Shape *mas[10]; Элементы этого массива могут хранить адреса объектов как класса Circle, так и Rectangle. Однако, когда далее в тексте программы для объектов, хранящих- ся в массиве mas, вызывается метод show: for(i=0;i<10;i++) mas[i]->show(); только полиморфное поведение этого метода обеспечивает правильное отображе- ние геометрических фигур. Если бы метод show не был бы объявлен виртуальным, то для всех объектов был бы вызван метод из класса Shape. 4.6. Абстрактные классы При проектировании иерархических систем классов программи- сты обычно стремятся выделить некоторые обобщающие свойства не- которой группы описываемых сущностей в базовый класс (в предыду- щих главах такими классами были Subject, Figure, Shape). Зачастую соз- данные по такому принципу классы носят абстрактный смысл, не опи- сывая какой-то реально существующий объект, а лишь являясь некото- рой основой, на которой строятся действительно необходимые классы. Это приводит к некоторому несоответствию спроектированной системы классов предметной области: оказывается, что программист может оп- 77
Страницы
- « первая
- ‹ предыдущая
- …
- 75
- 76
- 77
- 78
- 79
- …
- следующая ›
- последняя »