Сравнительное объектно-ориентированное проектирование - 12 стр.

UptoLike

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

12
Тип функции
OnMoveEvent, описанный с модификатором of object,
означает, что это тип метода класса, а не просто тип какой-то отдельной
функции. Разница в том, что метод класса обязательно имеет один
скрытый параметр
Self - экземпляр класса, который его вызывает. У
обычных процедур и функций такого параметра нет. Обработчики
событий в Delphi обычно имеют тип метода. Тогда в них можно
подставить ссылку на метод либо формы приложения, либо другого
класса, использующего объявленное событие в своих целях.
В заголовке описания класса
TSprite в скобках указан предок TObject, хотя
такое указание отсутствует в описании класса
TSpriteList. В Delphi
отсутствие предка по умолчанию означает, что предком является класс
TObject. Так что в описании класса TSprite ссылку на TObject можно также
опустить.
Конструктор класса
TSprite помещен в раздел private. Это делает
невозможным создание экземпляров отдельных спрайтов из кода,
написанного вне модуля
uSprite. Логика классов TSprite и TSpriteList
предполагает, что созданием спрайтов занимается только метод
Add
класса
TSpriteList, который только и вызывает конструктор экземпляров
класса
TSprite.
В описании класса
TSprite присутствуют методы с уровнем доступа
protected. Эти методы и вообще члены класса с доступом protected
доступны любому предку класса
TSprite, даже если они описаны в других
модулях, но не доступны коду других классов, описанных в других
модулях.
Среди методов класса
TSprite, защищенных модификатором protected
есть абстрактный метод
procedure PaintPicture; virtual; abstract. Он
отмечен модификатором
abstract. Абстрактный метод PaintPicture не
имеет реализации в классе
TSprite. Его реализация будет предложена
наследниками. Наличие абстрактного метода делает сам класс
TSprite
абстрактным в том смысле, что его экземпляры не могут быть созданы.
После описания класса
TSprite описаны один тип динамического массива
// Тип массива, хранящего карту следов (пикселей) спрайтов на канве
TTraceMap=Array of array of Boolean;
Тип TTraceMap описывает двумерный массив логических значений.
Динамичность массива в том, что его размер не фиксируется как постоянная
величина в процессе разработки класса (
design time), а определяется лишь в ходе
счета (
run time). Конкретные переменные, например, размеры области
изображения спрайтов, приобретают реальные значения при создании
экземпляра класса
TTracedSpriteList=class(TSpriteList). Это происходит в методе
AfterConstruction класса TTracedSpriteList, выполняющемся сразу вслед за созданием
экземпляра объекта этого класса.