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