(*~\Глагол\ПриложенияТесты\ПредмОписПодход\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                                 ОТДЕЛ Пример_ООП+;
(*============================================================================*)

ИСПОЛЬЗУЕТ 
  НаЭкран ИЗ "..\..\Отделы\Обмен\ВводВывод\";

ВИД
          ДкКлассу = ДОСТУП К Класс;
                              Класс = НАБОР (* описание вида Класс (предмета) = дискриптор [КлассDisc] *)

                   _цел:ЦЕЛ;                (*  атрибут вида Класс (предмета) *)
(*
                   Сохр:ЗАДАЧА (SELF:Класс)    Метод (ц:ЦЕЛ); - неверное задание свойства - вида ЗАДАЧА
                   Сохр:ЗАДАЧА (SELF:ДкКлассу) Метод2(ц:ЦЕЛ); - неверное задание свойства - вида ЗАДАЧА
            или 
                   Сохр:ЗАДАЧА(объект+ :  Класс;  ц:ЦЕЛ);  (* свойство Класса (поле-задача) *)

                 Метод :ЗАДАЧА(объект+ :  Класс;  ц:ЦЕЛ);
                 Метод2:ЗАДАЧА(объектД+:ДкКлассу; ц:ЦЕЛ);
*)
                                      КОН; (* набора Класс *)

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА         Сохр(объект+:Класс; ц:ЦЕЛ);
УКАЗ
             объект._цел:=ц;     

  НаЭкран.Цел4числа("^ Значение поля в наборе\объекте   в задаче    Сохр()  объект._цел = %2d ",
                                                                            объект._цел,0,0,0);
КОН Сохр;
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА (*(Класс)*) Метод(объект+:Класс; ц:ЦЕЛ);
УКАЗ
             объект._цел:=ц;     

  НаЭкран.Цел4числа("^ Значение поля в наборе\объекте в свойстве  Метод()  объект._цел = %2d ",
                                                                           объект._цел,0,0,0);
КОН Метод;
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА (*(Класс)*) Метод2(объектД+:ДкКлассу; ц:ЦЕЛ);
УКАЗ
             объектД._цел:=ц;     

  НаЭкран.Цел4числа("^ Значение поля в наборе\объекте в свойстве Метод2() объектД._цел = %2d ^",
                                                                          объектД._цел,0,0,0);
КОН Метод2;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА Главная;
ПЕР
  объектД:ДкКлассу;
  объект :Класс;
                               (*-+++++++++++++++++++++++++++++++++++++++++++-*)
УКАЗ
(*- Проверка работы НАБОРа-класса нПредмет -*)

  НаЭкран.ВсяЦепь("^ Проверка Предметно-Описательного Подхода (ПоП - аналог ООП) с предметами^ (т.е. экземплярами) вида нПредмет в рус.ЯП Глагол.^");
  НаЭкран.ВсяЦепь("^ ООП - это подход с акцентом на классы (class-centered),");
  НаЭкран.ВсяЦепь("^ ПоП - это подход с акцентом на экземпляры вида нПредмет (instance-centred),^ при котором одно и тоже 'свойство предмета' может иметь разные реализации у одного^ экземпляра предмета или отличаться у разных экземпляров одного предмета.^");

  объект._цел:=9;

  НаЭкран.Цел4числа("^ Значение поля набора\объекта объект._цел = %2d ^",
                                                    объект._цел,0,0,0);
(*
        объект.Сохр(объект,10); - такой вызов свойства приводит к зависанию ОС
 *)
(*Пример_ООП.*)Сохр(объект,10);
(*
        объект.Метод(объект,11); - свойство не определено в наборе
 *)
(*Пример_ООП.*)Метод(объект,11);

(* --- *)

  СОЗДАТЬ(объектД);

  объектД._цел:=29;

  НаЭкран.Цел4числа("^^ Значение поля набора\объекта объектД._цел = %2d ^",
                                                     объектД._цел,0,0,0);
(*Пример_ООП.*)Сохр(объектД^,30);
(*
       объектД.Сохр(объектД^,30); - значение доступа "ПУСТО", т.е. в Глаголе,
                                  как и в предметическом Обероне-1 (1988-1990гг.) [в Предметно-описательном Подходе]
                               Свойство набора (или Метод() класса) не вызывается
                                  как в Обероне-2 через точку после переменной вида набор или вида доступ к набору, (т.е. Метод() НЕ связан с ВИДом\классом)
                               а только как параметр источник-приёмник в задаче

      объектД^.Метод2(объектД,32); - значение доступа "ПУСТО"
 *)
(*Пример_ООП.*)Метод (объектД^,31);
(*Пример_ООП.*)Метод2(объектД,32);
(*
      объектД^.Метод2(объектД,32); - свойство не определено в наборе
 *)
КОН Главная;

(*+ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+*)
УКАЗ
  Главная
КОН Пример_ООП.
