Программирование на С++. Рейзлин В.И. - 20 стр.

UptoLike

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

22
TGraphObject просто нет достаточной информации для рисования чего бы
то ни было. Тем не менее присутствие метода Draw позволяет связать
функциональность (рисование) только один раз с классом TGraphObject, а
не вводить три независимые концепции для подклассов TTriangle, TCircle,
TSquare.
Имеется и вторая, более актуальная причина использования абст-
рактного метода. В объектно-ориентированных языках программирования
со статическими типами данных, к которым относится и С++, программист
может вызвать метод класса, только если компилятор может определить,
что класс действительно имеет такой метод. Предположим, что програм-
мист хочет определить полиморфную переменную типа TGraphObject, ко-
торая будет в различные моменты времени содержать фигуры различного
типа. Это допустимо для полиморфных объектов. Тем не менее компиля-
тор разрешит использовать метод Draw для переменной, только если он
сможет гарантировать, что в классе переменной имеется этот метод. При-
соединение метода Draw к классу TGraphObject обеспечивает такую га-
рантию, даже если метод Draw для класса TGraphObject никогда не вы-
полняется. Естественно, для того чтобы каждая фигура рисовалась по-
своему, метод Draw должен быть виртуальным.
Порядок выполнения работы
1. Определить иерархию классов (в соответствии с вариантом).
2. Определить в классе статическую компоненту - указатель на нача-
ло связанного списка объектов и статическую функцию для просмотра
списка.
3. Реализовать классы.
4. Написать демонстрационную программу, в которой создаются
объекты различных классов и помещаются в список, после чего список
просматривается.
5. Сделать соответствующие методы не виртуальными и посмотреть,
что будет.
6. Реализовать вариант, когда объект добавляется в список при соз-
дании, т.е. в конструкторе (смотри пункт 6 следующего раздела).
Методические указания
1. Для определения иерархии классов связать отношением наследо-
вания классы, приведенные в приложении (для заданного варианта). Из
перечисленных классов выбрать один, который будет стоять во главе ие-
рархии. Это абстрактный класс.