Programming: Delphi
Иллюстрированный самоучитель по Delphi 7 для профессионалов
Класс TPersistent
"Persistent"
в переводе с английского означает "устойчивый", "постоянный".
Что же такого постоянного в одноименном классе? Ответ таков: виртуальный метод
Этот важнейший метод осуществляет копирование содержимого одного объекта
(source) в другой (self, т. е. в объект, вызвавший метод
Assign). При этом объект-получатель остается самим собой, чего нельзя достигнуть, используя простое присваивание переменных объектного типа:
Ведь в этом случае указатель на одну область адресного пространства, содержащую экземпляр класса (объект), замещается указателем на другую область адресного пространства, содержащую другой объект.
Метод Assign позволяет продублировать объект — присвоить одному объекту значения всех свойств другого. При этом объекты не обязательно должны быть одного и того же класса; более того, они не обязательно должны находиться в отношениях "родитель-потомок". Данный метод тем и хорош, что позволяет полиморфное присвоение. Конструкция
позволяет скопировать содержимое картинки Picture в папку обмена Windows (объект
clipboard). Какова здесь логика? Известно, что в папку обмена можно поместить растровую картинку, текст, метафайл, мультимедийные данные и т. п. Метод
Assign класса TClipboard переписан таким образом, чтобы обеспечить присвоение (т. е. реальное перемещение в папку обмена) всех этих данных.
procedure TCiipboard.Assign(Source: TPersistent);
begin
if Source is TPicture
then AssignPicture(TPicture(Source))
else
if Source is TGraphic
then AssignGraphic(TGraphic(Source))
else inherited Assign(Source);
end;
Для обеспечения взаимодействия потомков класса
TPersistent со средой разработки предназначен метод
Он возвращает имя объекта для передачи его в Инспектор объектов.
Для взаимодействия с потоками при загрузке и сохранении компонентов предназначен следующий метод:
Класс TPersistent никогда не используется напрямую, от него порождаются потомки, которые должны уметь передавать другим объектам значения своих свойств, но не являться при этом компонентами.
Назад | Оглавление | Вперёд
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|