Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текст лекций.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1.59 Mб
Скачать

15.4. Правила построения и использования объектов а. Правила наследования

  1. Информационные поля и методы родительского класса наследуются всеми дочерними классами независимо от числа промежуточных уровней иерархии.

  2. Доступ к полям и методам родительских классов для дочерних выполняется так, как будто бы они описаны в самом дочернем классе.

  3. Ни в одном из дочерних классов не могут использоваться идентификаторы полей, совпадающие с идентификаторами полей каких-либо родительских классов. Это же относится и к идентификаторам формальных параметров, указанным в заголовках методов.

  4. Дочерний класс может доопределить произвольное число собственных методов и информационных полей.

  5. Любое изменение текста в родительском методе автоматически оказывает влияние на все методы порожденных дочерних классов, которые его вызывают.

  6. В противоположность информационным полям (правило 3) идентификаторы методов в дочерних классах могут совпадать с именами методов в родительских классах. В этом случае дочерний метод подавляет одноименный ему родительский, вследствие чего для объекта дочернего класса будет вызываться метод именно дочернего, а не родительского класса. В то же время остается и возможность вызова родительского класса. Для этого необходимо использовать квалифицированный (уточненный) идентификатор, в котором перед именем метода помещается имя требуемого родительского класса. Пример записи квалифицируемого идентификатора – TPoint.Show.

Б. Виртуальные методы

  1. Виртуальными следует объявлять те методы, которые изменяются в классе-потомке.

  2. Если метод одного из классов в иерархии объявлен как виртуальный, то все классы иерархии должны также объявить его виртуальным.

  3. Список формальных параметров любого виртуального метода во всей иерархии должен совпадать и по типам и по именам параметров.

В. Ранее и позднее связывание

Ранее связывание – процесс, в результате которого вызовы статических правил однозначно разрешаются компилятором во время трансляции метода.

Позднее связывание: вызывающий и вызываемый методы не могут быть связаны во время компиляции. Их связывание происходит в момент вызова. Это обеспечивается за счет создания (автоматического) так называемой таблицы виртуальных методов.

Г. Совместимость классов объектов

Совместимость классов относительно операции присваивания простирается только от потомков к прародителям, но не наоборот:

Frame237

Следствие этого: имеется возможность включить объекты разных классов одной и той же иерархии в один список, при условии, что в качестве указателя на объект элемента списка указан тип указателя на прародителя всей иерархии классов. Пример использования этой возможности для объекта класса TText приведен на следующей странице. В нем объект данного класса включается в список, элементами которого могут быть объекты из классов, принадлежащих всей иерархии, начиная от объектов класса TPoint.

Frame238

Продолжение на следующей странице

Frame239

Вопросы для самоконтроля

  1. Что такое объектно-ориентированное программирование?

  2. Что такое инкапсуляция?

  3. Что такое наследование свойств?

  4. Что такое полиморфизм?

  5. В чем отличия типа «объект» от типа «запись»?

  6. Что называется методом?

  7. В чем отличия описания методов и подпрограмм?

  8. Каковы правила наследования в Турбо-Паскале?

  9. Для чего предназначено ключевое слово Inherited?

  10. Какие существуют правила вызова наследуемых методов?

  11. Что такое виртуальный метод?

  12. Что такое конструктор и деструктор для чего они нужны?

  13. Каковы правила совместимости объектных классов?