
- •Структуракласса
- •Имя родительского класса, если новый класс должен унаследовать все его характеристики.
- •Присваивание объектов
- •Например:
- •Уровни инкапсуляции
- •published – элементы класса доступны в любом месте программы,
- •По умолчанию считается, что все поля класса расположены в разделе private.
- •Поля
- •Для ограничения непосредственного
- •Методы
- •Реализация методов
- •Указатели на методы объектов (method pointers) – хранят в себе оба этих адреса.
- •При описании метода перед его именем должно указываться имя класса, но не переменной.
- •Во многих случаях возможности наследуемых методов достаточно полно реализованы в родительских классах и
- •В момент встречи программой этого слова вызовется одноименный метод ближайшего
- •Типы методов
- •Виртуальные и абстрактные методы
- •Не всякие одноименные методы являются
- •Пример. Иерархия классов (и методов!) перемещаемых геометрических фигур.
- •Принципиальноеотличие:
- •Работа виртуальных методов основана на косвенном вызове подпрограмм.:
- •Вызов виртуального метода происходит следующим образом:
- •VMT содержит:
- •Динамические методы
- •Конструкторы и деструкторы
- •Конструктор – предназначен для
- •Объявление конструктора:
- •Деструктор – предназначен для
- •Описание деструктора:
- •Замечание.
- •Свойства
- •При запросе значения свойства оно считывается
- •Физически после компиляции программы
- •Объявление свойства:
- •Эта часть имеет вид:
- •Часть read - представляет механизм для считывания (возвращения) значения свойства.
- •В части write - дается механизм задания значения свойства.
- •В случае отсутствия части write изменить значение этого свойства нельзя, то есть это
- •Уровень инкапсуляции свойства Поля класса располагаются в скрытой секции.
- •Пример
- •type
- •Операциисклассамииобъектами
- •Операция as - приведениетипа

Структура
класса
















Структура объявления класса :
type имя класса =
class (имя родительского класса)
список элементов класса;
end;
1

Имя родительского класса, если новый класс должен унаследовать все его характеристики.
Если имя родительского класса опущено, то новый класс по умолчанию наследует только характеристики базового класса TObject.
(Для общности представления рекомендуется всегда указывать этот базовый класс)
2

type TMyClass = class(TObject)
……….
end;
type TMyClass = class
……….
end;
3

Присваивание объектов
Так как класс - это тип данных, то переменным этого типа
можно присваивать значения соответствующих объектов
Допускается присваивание как в точности данных своего типа, так и всех классов-потомков.
4

Например:
type T1 = class(TObject);
T2 = class(T1);
var X: T1;
……….
Х можно присваивать
как объект типа Т1, так и как объект типа Т2.
(присваиваются указатели)
5

Уровни инкапсуляции
Доступность любых элементов класса определяется принадлежностью к
определенному уровню видимости, обозначаемому специальным зарезервированным словом,
с которого начинается раздел в объявлении класса.
public – элементы класса доступны в любом месте программы.
6

published – элементы класса доступны в любом месте программы,
В среде Delphi информация о них размещается в
инспекторе объектов, и, соответственно,
доступна для изменения на этапе проектирования программы.
private - элементы класса доступны только в том модуле, где описан данный класс.
Как правило, поля класса помещаются именно в эту секцию
7

type TMyClass = class
private
Count: integer;
Name: string;
public
procedure SetName(s: string); procedure SetCount(k: integer); function GetName: string;
function GetCount: integer;
end;
8

По умолчанию считается, что все поля класса расположены в разделе private.
Можно убрать слово private из описания.
protected – отличается от private - элементы из этого раздела доступны также внутри
методов классов -наследников данного класса, описанных в других модулях.
9







Поля




























Поля класса эквивалентны полям записи. Они могут быть любого типа, в том числе и процедурного.
Значение поля процедурного типа –
указатель на метод.
При обращении к полю внутри самого класса
записывается только его имя.
Если обращение происходит извне, перед именем поля указывается имя конкретного объекта, которому принадлежит это поле.
10