домашняя библиотека
Поиск в библиотеке
Навигация по предметам
Последние добавленные новости
Реклама

Объектно-Ориентированное программированиеЛекции по Объектно-Ориентированному программированию

У векторных свойств есть еще одна важная особенность. Если векторное свойство описано с ключевым словом default, то предполагается, что этот класс «построен» вокруг основного векторного свойства. Основной метод такого класса дает доступ к некоторому массиву, а все остальные методы являются как бы вспомогательными. Если у объекта есть такое свойство, то можно его не упоминать, а ставить индекс в квадратных скобках сразу после имени объекта:

Type

TMyObject = class;

property Strings [ Index : Integer ]: string read Get write Put; default;

end;

var

AMyObject : TMyObject;

begin

. . .

AMyObject. Strings [1] := 'First method'; {первый способ}

AMyObject [2] := ‘Second method’; {второй способ}

End

Следует быть внимательными, применяя зарезервированное слово default - для обычных и векторных свойств оно употребляется в разных случаях и с разным синтаксисом.

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

Лекции по Объектно-Ориентированному программированию

О роли свойств красноречиво говорит следующий факт. В Borland Delphi у всех имеющихся в распоряжении программиста стандартных классов все поля недоступны и заменены базирующимися на них свойствами. Рекомендуется при разработке собственных классов придерживаться этого же правила.

Конструкторы объектов

Рассмотрим, когда и каким образом объекты создаются, то есть когда под них распределяется память и происходят начальное присваивание. Когда мы имеем дело с обычными переменными возможны два варианта: статическая и динамическая переменные. Если переменная статическая, то память под нее распределяется автоматически перед началом выполнения соответствующего блока - при запуске программы для глобальных переменных и при вызове процедуры для локальных. Если переменная динамическая, то память под нее должна быть распределена вручную вызовом оператора new. Переменные типа класс в Object Pascal описываются как статические:

Var AMyObject:TMyObject;

но именно в этом языке они могут быть только динамическими. Это означает, что переменная AMyObject является указателем, содержащим адрес объекта и должна быть распределена вручную. Хотя обращение к полям и методам производится без использования символа (^), как было бы правильно для указателей на структуру. В других объектно-ориентированных языках, например С++, это не так. В них могут быть как статические так и динамические объекты, хотя используются чаще динамические. Статические объекты создаются автоматически, динамические - в ручную. Создание объекта осуществляется путем вызова специального метода, который инициализирует объект - конструктора, Созданный экземпляр уничтожается другим методом - деструктором.

   
 
  • Добавлен: 7-06-2011, 23:13 | Просмотров: 33036

    support: admin@sdb.su