Реализация свойств Назад В начало Вперед

Поскольку реальная реализация объектных интерфейсов находится в 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.

Оглавление раздела

Использование свойств

Связывание свойств и полей