Объектная модель NewEra
Язык NewEra поддерживает основные возможности объектно-ориентированного
программирования, в частности, наследование и полиморфизм. В языке явно выделены и имеют
специальное синтаксическое оформление понятия "событие в объекте", "обработчик
события".
Объектная модель NewEra допускает более гибкий по сравнению, например, с С++, подход к
проектированию и применению классов, поскольку функциональность объектов может частично
определяться непосредственно в программах, использующих данный класс, причем,
индивидуально для каждого объекта.
Класс объектов NewEra характеризуется
- именем
- набором констант
- набором переменных
- набором функций
- набором событий
ЗАМЕЧАНИЕ. Во всех последующих примерах программ знаки -- обозначают комментарий до
конца строки.
Пример декларации класса:
CLASS music -- ИМЯ КЛАССА
-- КОНСТАНТЫ:
CONSTANT unknown SMALLINT=0
CONSTANT folk SMALLINT=1
CONSTANT classic SMALLINT=2
CONSTANT pop SMALLINT=4
CONSTANT hard_rock SMALLINT=8
-- ПЕРЕМЕННЫЕ:
PUBLIC VARIABLE music_type SMALLINT
PRIVATE VARIABLE music_title CHAR (32) -- название
PRIVATE VARIABLE music_code BYTE -- внутреннее представление мелодии
-- ФУНКЦИИ:
-- инициализация нового объекта класса music:
FUNCTION music (music_type SMALLINT: unknown,
music_title CHAR(32): NULL)
-- установка названия:
FUNCTION set_title (title CHAR(32))
-- опрос названия:
FUNCTION get_title () RETURNING CHAR(32)
-- установка кода (внутреннего представления) мелодии:
FUNCTION set_code (file_name CHAR(*))
-- СОБЫТИЯ:
-- воспроизведение мелодии
EVENT play ()
END CLASS
Объекты класса создаются при помощи операторов NEW и COPY, примеры:
VARIABLE my_melody MUSIC = NEW music(music::folk, "Калинка")
VARIABLE your_melody MUSIC = COPY my_melody
Допускается определение нескольких различных функций-обработчиков для одного и того же
события данного класса. Обработчики могут присваиваться индивидуальным объектам
динамически.