Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-50_1.docx
Скачиваний:
9
Добавлен:
02.08.2019
Размер:
707.62 Кб
Скачать
  1. Абстрактные классы, их назначение и использование.

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

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

  1. Понятие области видимости: общие, личные, защищённые и опубликованные поля и методы объекта.

Методы - это процедуры и функции, объявление которых включено в описание класса и которые выполняют действия над объектами класса. Объявляются и описываются они так же, как и обычные подпрограммы в модулях, то есть в интерфейсной части модуля внутри описания класса записывается лишь заголовок подпрограммы, а в исполнительной части – само содержание метода. Чтобы метод был выполнен, надо указать имя объекта и имя метода, отделив одно имя от другого точкой.

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

Помимо объявлений элементов класса (полей, методов, свойств) описание класса, как правило, содержит несколько директив, которые устанавливают степень видимости элементов класса в программе. Рассмотрим семантику директив видимости. 1. Директива private. Поля, свойства и методы, описанные в разделе private, называются личными или закрытыми. Сюда помещаются элементы (чаще всего поля), которые выполняют в объекте специфичные функции и которые поэтому целесообразно скрыть от других частей программы, либо такие элементы, для которых по ряду причин не следует разрешать доступ извне объекта. 2. Директива public. Элементы, описанные в разделе public, называются общедоступными. Они могут быть использованы всюду в программе. Поля, свойства и методы, расположенные сразу после заголовка класса, при выключенной директиве компилятора {$M-}, по умолчанию принимаются общедоступными. 3. Директива protected. Элементы класса, объявленные в разделе protected (защищенный), доступны только в классах, порожденных от исходного. Здесь размещаются элементы, которые важны лишь для функционирования объектов данного класса и его потомков. Обычно в секцию protected помещаются описания методов класса. 4. Директива published. Поля, свойства и методы, описанные в разделе published, называются опубликованными. Их область видимости эквивалентна области видимости общедоступных описаний. Отличие состоит в том, что информация о них, за исключением ряда типов, например real, на этапе проектирования программы помещается в инспектор объектов. Описания, расположенные сразу после заголовка класса, при включенной директиве компилятора {$M+}, по умолчанию принимаются опубликованными. 5. Директива automated. Элементы класса, объявленные в разделе automated, называются автоматическими. Их область видимости эквивалентна области видимости общедоступных описаний. Отличие состоит в том, что для автоматических свойств и методов генерируется дополнительная информация, которая используется для реализации OLE-механизма. Использовать директиву automated имеет смысл при объявлении потомков стандартного класса TAutoObject.

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