OneScript icon indicating copy to clipboard operation
OneScript copied to clipboard

Методы для контроля установки/записи атрибутов классов

Open JohnyDeath opened this issue 9 years ago • 5 comments

Хотелось бы иметь методы для контроля установки/записи атрибутов. По аналогии с http://www.1cpp.ru/docum/html/classes.html . Выдержка:

Для контроля установки/записи атрибутов необходимо определить предопределенные методы (Процедура) в модуле реализации КОП (слово Экспорт к данным методам применять не обязательно):

  • При чтении атрибута класса вызывается метод ПриПолучении_ИмяАтрибута (ЗначениеАтрибута) англ. OnGet_, где ИмяАтрибута - имя атрибута, определенного в модуле КОП, из которого выполняют считывание, в переменную ЗначениеАтрибута нужно вернуть текущее значение атрибута. Данный метод не изменяет состояние самого атрибута по умолчанию.
  • При записи в атрибут класса вызывается метод ПриЗаписи_ИмяАтрибута (ЗначениеДляУст) англ. OnWrite_, где ИмяАтрибута - имя атрибута, определенного в модуле КОП, для которого устанавливают значение, передаваемое в параметре ЗначениеДляУст. Атрибут доступен в коде данного метода, и для его установки необходимо присвоить атрибуту полученный параметр метода. Данный метод не изменяет состояние самого атрибута по умолчанию.

JohnyDeath avatar May 23 '16 07:05 JohnyDeath

Сеттеры и геттеры?

nixel2007 avatar May 23 '16 08:05 nixel2007

ес, ит из

JohnyDeath avatar May 23 '16 09:05 JohnyDeath

Были такие мысли. А еще обработчик несуществующих свойств возможен. Например, когда мы обращаемся как-бы к свойству, но в самом объекте вызывается метод "ПолучитьСвойство(ЗапрошенноеИмя)"; Много вариантов. И через Аннотации переменных модуля еще можно. Я думал над этим всем, тут нужен мозгоштурм и четкая прикладная цель - для чего это. Сценарий применения.

EvilBeaver avatar May 23 '16 11:05 EvilBeaver

У меня точно были два случая:

  1. Нужно было реализовать read-only свойство
  2. При изменении одного свойства, надо было перерасчитывать другие

JohnyDeath avatar May 23 '16 12:05 JohnyDeath

Есть ещё и Write only свойства. Например для имени пользователя и пароля в v8runner или вообще для всей строки соединения.

nixel2007 avatar May 23 '16 13:05 nixel2007