(*~\Глагол\Отделы\Иное~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                             ОТДЕЛ Агенты;
(*============================================================================*)
(* НАЗНАЧЕНИЕ: опорные виды для геометрических Фигур и доступа к ним
//             при Предметно-описательном Подходе (ПоП) на Глаголе
      Шаблон-1\Pattern-1.
  Динамическая рассылка осуществляется путём переопределения
    абстрактных методов-задач\процедур
  из отдела\модуля Агенты.отд в реальные методы расширенной записи (у потомка). *)
(*============================================================================*)

ВИД
     (*- Абстрактный ВИД: Агенты.нФигура  -          абстрактный  набор  Агенты.нФигура и
                          Агенты.ДкФигуре - ДОСТУП К абстрактному набору Агенты.нФигура
         Абстрактный ВИД: Агенты.нПульт   -          абстрактный  набор  Агенты.нПульт  и
                     ВИД  Агенты.ДкПульту - ДОСТУП К абстрактному набору Агенты.нПульт
      -*)
  ДкФигуре- = ДОСТУП К нФигура;          (* доступ к абстрактному набору Агенты.нФигура *)
  ДкПульту- = ДОСТУП К нПульт;           (* доступ к абстрактному набору Агенты.нПульт  *)

                       нФигура- =
  НАБОР                       (* свойство - доступ к пульту управления фигурой) *)
    пультУправД+:ДкПульту;
  КОН;                                     (* предок (опора) любого ВИДа Агенты.нФигура *)

             (* набор - пульт управления фигурой) *)
                       нПульт- =
  НАБОР                                (* изменяемых/полиморфных методов-задач*)
    нарисовать+:ЗАДАЧА(фигД+:ДкФигуре);
(*  нарисовать - поле-ЗАДАЧА, но   вызов:
 уД.нарисовать(фигД);
                                             возможен только после присвоения:
 уД.нарисовать:=Рисуем;         (* инициализация поля-метода
        задачей Рисуем()     у доступа к пульту управления фигурой "уД" ВИДа ДкПульту *)
*)
      очистить+:ЗАДАЧА(фигД+:ДкФигуре);
(*    очистить - поле-ЗАДАЧА, но   вызов:
   уД.очистить(фигД);
                                             возможен только после присвоения:
   уД.очистить:=Очищаем;        (* инициализация поля-метода
        задачей Очищаем()    у доступа к пульту управления фигурой "уД" ВИДа ДкПульту *)
*)
   переместить+:ЗАДАЧА(фигД+:ДкФигуре;
(* переместить - поле-ЗАДАЧА, но   вызов:
уД.переместить(фигД);
                                             возможен только после присвоения:
уД.переместить:=Перемещаем;     (* инициализация поля-метода
        задачей Перемещаем() у доступа к пульту управления фигурой "уД" ВИДа ДкПульту *)
*)
                       dx,dy:ЦЕЛ
                      );
  КОН;                                     (* предок (опора) любого ВИДа Агенты.нПульт *)

(*-------------------- Абстрактные методы для НАБОРа "нФигура" ---------------*)
  ЗАДАЧА                                                           (*(нФигура)*)
         Инит-(фигД+:ДкФигуре;ПуД+:ДкПульту);
  УКАЗ
               фигД.пультУправД:=ПуД;
 
                (* свойство\поле данных - доступ к пульту управления фигурой *)
  КОН Инит;

(*-------------------- Абстрактные методы для НАБОРа "нПульт" ----------------*)
  ЗАДАЧА                                                            (*(нПульт)*)
         Рисуем-(фигД+:ДкФигуре);
  УКАЗ
                 фигД.пультУправД.нарисовать(фигД)

                                (* вызов свойства\поля-задачи -  нарисовать() *)
  КОН Рисуем;
  ЗАДАЧА                                                            (*(нПульт)*)
         Очищаем-(фигД+:ДкФигуре);
  УКАЗ
                  фигД.пультУправД.очистить(фигД)

                                (* вызов свойства\поля-задачи -    очистить() *)
  КОН Очищаем;
  ЗАДАЧА                                                            (*(нПульт)*)
         Перемещаем-(фигД+:ДкФигуре; dx,dy:ЦЕЛ);
  УКАЗ
                     фигД.пультУправД.переместить(фигД,dx,dy)

                                (* вызов свойства\поля-задачи - переместить() *)
  КОН Перемещаем;

КОН Агенты.
