Реферат: Объектно-ориентированный подход к программированию
Property MyList[Index: Integer]: Pointer read GetMyList write SetMyList; // Объявлениеиндексированногосвойства
End;
Здесь мы видим, что свойство MyList индексированно - это элемент списка указателей. В квадратных скобках Вам нужно указать список индексов и их типов. В общем случае, индексом может быть даже строка символов. Далее идет тип свойства и методы записи и чтения. Функция чтения должна иметь список формальных параметров со всеми индексами свойства и возвращать значение того же типа, что и свойство. Процедура записи должна иметь список формальных параметров со всеми индексами свойства и параметр для передачи устанавливаемого значения того же типа что и свойство. Большое значение имеет последовательность указания индексов и обязательность передачи значения свойства в процедуре записи последним в списке формальных параметров. Если индексированное свойство является основным и обращение именно к нему производится чаще остальных, то можно объявить его как default, тогда не нужно указывать имя свойство для доступа к нему, например:
Type
TmyClass = class(TObject);
private
AmyList: Tlist; // Контейнеруказателей
Protected
Function GetMyList(Index: Integer): Pointer; // Функциядоступапочтению
Procedure SetMyList(Index: Integer; Val: Pointer); // Процедурадоступапозаписи
Public
…
Property MyList[Index: Integer]: Pointer read GetMyList write SetMyList; default; // Объявлениеиндексированногосвойствапоумолчанию
End;
…
Var
MyClass: TmyClass;
Begin
MyClass:= TmyClass.Create;
…
MyClass [3]:=AnyObject; // Аналогично MyClass.MyList[3] ]:=AnyObject;
…
End;
Значение инкапсуляции в объектно-ориентированном программировании трудно переоценить. Чего стоит хотя бы то, что в Delphi к 100% полей классов доступ организован через свойства.
Наследование
Если Вы хотите изменить или дополнить поведение уже существующего класса, то нет никакой необходимости переписывать класс заново. Вам стоит воспользоваться наследованием. Вы должны объявить, что новый класс является потомком уже существующего и добавить в новый класс свойства и методы, которые Вам необходимы или перекрыть существующие методы и свойства:
Type
TmyFirstClass = class(TObject)
Private
Protected