Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VMIP.docx
Скачиваний:
18
Добавлен:
17.04.2015
Размер:
93.59 Кб
Скачать

26-27. Инкапсуляция и свойства объекта. Наследование. Директивы Protected и Private.

Инкапсуляция (Encapsulation) — механизм, который объединяет данные и методы их обработки, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В ООП методы и данные могут быть объединены вместе. В этом случае говорят, что создаётся "чёрный ящик".

      Инкапсуляция в языке Delphi применяется при создании классов, т.к. при создании класса мы можем определить данные, принадлежащие ему, и методы для обработки их.       Начнём изучение инкапсуляции со свойств объекта. Ограничение доступа к полям объекта реализуется с помощью свойств объекта.

Свойство объекта — характеристика объекта, которая определяется полем, сохраняющим значение свойства, и двумя методами, обеспечивающими доступ к полю свойства.

Свойство объекта — специальный механизм классов, регулирующий доступ к полям.

      Метод записи свойства(метод установки значения свойства) — write, а метод чтение свойства(метод получение значения свойства) — read.

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

Директивы private, public, protected — директивы, устанавливающие степень видимости элементов в программе.

      Элементы класса, объявленные в секции private, не доступны вне модуля программы и класса-родителям (Наследование). Обычно в эту секцию помещают поля (атрибуты) класса.

Насле́дование — механизм объектно-ориентированного программирования (наряду с инкапсуляцией, полиморфизмом и абстракцией), позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.

Другими словами, класс-наследник реализует спецификацию уже существующего класса (базовый класс). Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса

28. Полиморфизм и виртуальные методы

Вызов виртуального метода осуществляется следующим образом:

  1. Через объектную переменную выполняется обращение к занятому объектом блоку памяти;

  2. Далее из этого блока извлекается адрес таблицы виртуальных методов (он записан в четырех первых байтах);

  3. На основании порядкового номера виртуального метода извлекается адрес соответствующей подпрограммы;

  4. Вызывается код, находящийся по этому адресу.

Абстрактные виртуальные методы

При построении иерархии классов часто возникает ситуация, когда работа виртуального метода в базовом классе не известна и наполняется содержанием только в наследниках. Так случилось, например, с методом ParseLine, тело которого в классе TTextReader объявлено пустым. Конечно, тело метода всегда можно сделать пустым или почти пустым (так мы и поступили), но лучше воспользоваться директивой abstract. Директива abstract записывается после слова virtual и исключает необходимость написания кода виртуального метода для данного класса. Такой метод называется абстрактным, т.е. подразумевает логическое действие, а не конкретный способ его реализации. Абстрактные виртуальные методы часто используются при создании классов-полуфабрикатов. Свою реализацию такие методы получают в законченных наследниках.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]