Ada_Ru форум

Обсуждение языка Ада

UI: сменные панельки и язык описания

Оставить новое сообщение

Сообщения

Vadim Godunko
UI: сменные панельки и язык описания
2005-08-15 09:20:26

Добрый день!

 

Идея сменных панелек - реализаций UI разными способами - мне понравилать. Не уверен, что делать это на лету будет так уж легко и просто и удасться во всех случаях жизни, однако рассматриваемый подход даёт все необходимые предпосылки.

 

Одна из полезных идей - разделение реализации UI от реализации программы.

 

Изначально предполагалось создать некоторый язык, позволяющий формально описать грань между этими двумя элементами программы.

 

С точки зрения программы язык должен описывать:

 

- компоненты UI, их свойства (но не структуру виджетов, состав подпрограмм обратного вызова и т.п.) и операции над ними (в самом общем виде, ни в коем разе не "переместить окно на пять пикселей вправо)

 

- фабрики для создания компонент.

 

С точки зрения UI язык должен описывать:

 

- импортируемые из программы типы данных, их операции (доступные для использования в реализации UI);

 

- импортируемые из программы подпрограммы, вызов которых допускается из реализации (можно сказать, что это своеобразные callback-и).

 

По этому описанию и должны строиться базовые спецификации Ada модулей.

 

Поскольку создание такого языка и его компилятора достаточно сложная задача, то мы пошли по пути её некоторого упрощения - использования в качестве спецификации UI настраиваемого Ada пакета. Он может содержать тип данных для компонента (в моём предложении это просто умный указатель), подпрограммы над этип типом (это будут доступные приложению операции и свойства). Типы данных и подпрограммы (доступные для использования из реализации UI) передаются как параметры generic.

 

Обрабатывать такую спецификацию можно с помощью ASIS программы, по результатам генерировать необходимую реализацию.

 

 

-- Vadim Godunko

 

Technoserv A/S

Rostov-on-Don, Russia

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти