Реализация свойств |
Поскольку реальная реализация объектных интерфейсов находится в vip-интерфейсе, то в реализации vip-интерфейса необходимо добавить реализацию свойств. Реализация свойств описывается там же, где и реализация public-функций, и имеет следующий синтаксис:
<реализация-свойств> = property [<имя-obj-интерфейса>.]<имя-свойства> : <тип-свойства> [ read <чтение> ] [ write <запись> ] ;
<имя-obj-интерфейса> - obj-интерфейс, в котором описано свойство.
<имя-свойства> - произвольный идентификатор Атлантиса, уникальный в данном vip-интерфейсе.
<тип-свойства> - любой легальный тип Атлантиса. Массивы не поддерживаются.
<чтение> - любое вычисляемое выражение соответствующего типа.
<запись> - любой оператор (в т.ч. составной), где вместо записываемого значения указан идентификатор result.
Конструкция implementation позволяет задать одинаковую реализацию нескольким свойствам.
<одинаковая-реализация-свойств> = implementation <имя-obj-интерфейса>.<имя-свойства> [, <имя-OBJ-интерфейса>.<имя-свойства> ] : <тип-свойства> [ read <чтение> ] [ write <запись> ] ;
Возможность одинаковой реализации нескольких свойств работает только для свойств, имеющих одинаковые прототипы (имена и типы совпадают).
vipInterface vExample implements example; interface vExample; create view as; var str : string; t : integer; curFlag : byte; procedure SetP2 ( aStr : string ); { t := t + 1; // счётчик обращений Message (aStr); } procedure SetS ( aFlag : byte; aStr : string ); { str := aStr; } property p1 : integer read t; property p2 : string write SetP2 (result); property s : string read str write SetS (curFlag, result); property s1 : string read str write str := result; end.