Теория и практика объектно-ориентированного программирования. Ноткин А.М. - 21 стр.

UptoLike

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

22
Имеется и вторая, более актуальная причина использования абст-
рактного метода. В объектно-ориентированных языках программирования
со статическими типами данных (С++, Borland Pascal) программист может
вызвать метод класса, только если компилятор может определить, что
класс действительно имеет такой метод. Предположим, что программист
хочет определить полиморфную переменную типа TGraphObject, которая
будет в различные моменты времени
содержать фигуры различного типа.
Это допустимо для полиморфных объектов. Тем не менее компилятор раз-
решит использовать метод Draw для переменной, только если он сможет
гарантировать, что в классе переменной имеется этот метод. Присоедине-
ние метода Draw к классу TGraphObject обеспечивает такую гарантию,
даже если метод Draw для класса TGraphObject никогда не
выполняется.
Естественно, для того, чтобы каждая фигура рисовалась по-своему, метод
Draw должен быть виртуальным.
Группа. Объект, в который включены другие объекты. Объекты,
входящие в группу, называются элементами группы. Элементы группы, в
свою очередь, могут быть группой.
Примеры групп:
1) окно в интерактивной программе, которое владеет такими элемен-
тами, как
поля ввода и редактирования данных, кнопки, списки выбора,
диалоговые окна и т.д. Примерами таких окон являются объекты классов,
порожденных от абстрактного класса Tgroup (TDeskTop, TWindow, TDia-
log) в иерархии классов библиотеки Turbo Vision и объекты классов, по-
рожденных от TWindowObject в иерархии классов библиотеки OWL;
2) агрегат, состоящий из более мелких узлов;
3) огород, состоящий
из растений, системы полива и плана выращи-
вания;
4) некая организационная структура (например, ФАКУЛЬТЕТ, КА-
ФЕДРА, СТУДЕНЧЕСКАЯ ГРУППА).
Мы отличаем «группу» от «контейнера». Контейнер используется
для хранения других данных. Примеры контейнеров: объекты класса TCol-
lection библиотеки Turbo Vision и объекты контейнерных классов библио-
теки STL в C++ (массивы, списки, очереди).
В отличие от контейнера мы
понимаем группу как класс, который не
только хранит объекты других классов, но и обладает собственными свой-
ствами, не вытекающими из свойств его элементов.
Группа дает второй вид иерархии (первый вид иерархия классов,
построенная на основе наследования) иерархию объектов (иерархию ти-
па целое/часть), построенную на основе агрегации.
Реализовать
группу можно несколькими способами.
                                   22

       Имеется и вторая, более актуальная причина использования абст-
рактного метода. В объектно-ориентированных языках программирования
со статическими типами данных (С++, Borland Pascal) программист может
вызвать метод класса, только если компилятор может определить, что
класс действительно имеет такой метод. Предположим, что программист
хочет определить полиморфную переменную типа TGraphObject, которая
будет в различные моменты времени содержать фигуры различного типа.
Это допустимо для полиморфных объектов. Тем не менее компилятор раз-
решит использовать метод Draw для переменной, только если он сможет
гарантировать, что в классе переменной имеется этот метод. Присоедине-
ние метода Draw к классу TGraphObject обеспечивает такую гарантию,
даже если метод Draw для класса TGraphObject никогда не выполняется.
Естественно, для того, чтобы каждая фигура рисовалась по-своему, метод
Draw должен быть виртуальным.
       •Группа. Объект, в который включены другие объекты. Объекты,
входящие в группу, называются элементами группы. Элементы группы, в
свою очередь, могут быть группой.
       Примеры групп:
       1) окно в интерактивной программе, которое владеет такими элемен-
тами, как поля ввода и редактирования данных, кнопки, списки выбора,
диалоговые окна и т.д. Примерами таких окон являются объекты классов,
порожденных от абстрактного класса Tgroup (TDeskTop, TWindow, TDia-
log) в иерархии классов библиотеки Turbo Vision и объекты классов, по-
рожденных от TWindowObject в иерархии классов библиотеки OWL;
       2) агрегат, состоящий из более мелких узлов;
       3) огород, состоящий из растений, системы полива и плана выращи-
вания;
       4) некая организационная структура (например, ФАКУЛЬТЕТ, КА-
ФЕДРА, СТУДЕНЧЕСКАЯ ГРУППА).
       Мы отличаем «группу» от «контейнера». Контейнер используется
для хранения других данных. Примеры контейнеров: объекты класса TCol-
lection библиотеки Turbo Vision и объекты контейнерных классов библио-
теки STL в C++ (массивы, списки, очереди).
       В отличие от контейнера мы понимаем группу как класс, который не
только хранит объекты других классов, но и обладает собственными свой-
ствами, не вытекающими из свойств его элементов.
       Группа дает второй вид иерархии (первый вид − иерархия классов,
построенная на основе наследования) − иерархию объектов (иерархию ти-
па целое/часть), построенную на основе агрегации.
       Реализовать группу можно несколькими способами.