Концепция визуального программирования в
IBM VisualAge Smalltalk
В.Орлов, IBM
VisualAge - это мощная среда для разработки приложений для архитектуры клиент-сервер. Она
ориентирована, прежде всего, на разработки бизнес-приложений, включая системы для
онлайновой обработки транзакций и системы поддержки решений. VisualAge позволяет
профессиональным разработчикам строить клиентские части прикладных систем со сложным
графическим интерфейсом, проектировать деловую логику работы приложений с доступом к
локальным и удаленным ресурсам. VisualAge представляет собой чисто обьектно-
ориентированное средство разработки, включающее набор визуальных интерактивных
инструментов, библиотеку готовых компонент и набор средств для построения клиент-
серверной среды. Поддержка графического интерфейса, предоставляемая готовыми
компонентами, отвечает CUA (Common User Access) спецификациям и содержит ряд
расширений для организации гибкого ввода-вывода в сложных формах и таблицах. Библиотека
готовых компонент предоставляет также поддержку устройств
мультимедиа, коммуникаций через протоколы APPC, TCP/IP, NetBIOS, программных
интерфейсов CICS External Call Interface, EHLLAPI, Message Queue Interface (MQI), работу с
реляционными базами данных семейств DB2, Oracle, Sybase и многое другое. Прежде чем
перейти к описанию визуального построения приложений, отметим ряд замечательных качеств
VisualAge, таких как повторное использование кода, поддержка моделей SOM и DSOM,
возможности групповой разработки приложений с использованием центрального репозитория.
Средства визуального программирования обычно решают задачи построения
пользовательского интерфейса и упрощения разработки приложения путем замены метода
'написания программы на метод конструирования.
Визуальное программирование бесспорно обладает достоинством наглядного представления
информации и гораздо лучше соответствует природе человеческого восприятия, чем методы
традиционного, текстового программирования. Однако практически все визуальные средства
нуждаются в дополнении функциями, которые не могут быть представлены в виде графических
конструкций и требуют текстового выражения. Визуальные средства дополняются
специальными скриптами, написанными на различных языках программирования.
Для VisualAge таким языком является чисто обьектно-ориентированный язык IBM Smalltalk.
Сама среда разработки VisualAge создана на Smalltalk. Среди разнообразных средств
визуального программирования VisualAge интересен именно максимально продвинутой и
последовательно реализованной концепцией обьекто-ориентированной технологии.
Приложения написанные на Smalltalk соответствуют схеме MVC (Model-View-Controller). Model
является набором объектов, выражающих бизнес-логику приложения, View представляет
объекты из пользовательского интерфейса, Controller состоит из объектов преобразующих
действия пользователя с View в запросы к Model.
При этом средства визуального программирования могут быть использованы по разному.
Просто для визуального определения пользовательского интерфейса, который затем
встраивается в традиционную программную среду. Более глубоко, для визуального задания и
интерфейса и контролирующих интерфейс объектов с одновременным программированием
бизнес-логики традиционными методами. Наконец, для полного визуального построения
приложения.
VisualAge реализует концепцию построения приложений из готовых компонент - деталей (parts).
Это означает, что вы создаете программу, соединяя и связывая детали между собой.
Точно так же, как на заводе из радиодеталей собираются платы, а из них компьютеры, так и
программные компоненты могут образовывать составные детали (сборочные единицы), а они, в
свою очередь, готовое приложение.
Чтобы из деталей можно было что-нибудь собрать, необходимо установить каким образом они
должны стыковаться друг с другом. В VisualAge деталь - это законченный программный объект
с описанным внешним интерфейсом, устанавливающим свойства детали. Существует два вида
деталей, с которыми вы можете работать в VisualAge:
- деталь, имеющая видимое представление во
время исполнения программы. Видимые детали, такие как окна, кнопки, поля
ввода и тому подобное, составляют пользовательский интерфейс приложения.
Они, в свою очередь, могут состоять из других видимых деталей, невидимых
деталей и соединений между ними.
Невидимая деталь - деталь, имеющая видимого представления во
время исполнения программы. Невидимые детали обычно представляют
поведение данных в приложении. Они могут состоять из других невидимых
деталей и соединений.
Внешний интерфейс детали определяет то, как она может взаимодействовать с другими
деталями в приложении. Он состоит из следующих свойств:
- данные, к которым имеют доступ другие детали.
Эти данные представляют сущность и состояние детали. Например, это может
быть остаток на банковском счете, имя человека, метка на кнопке ввода.
События - сигналы, посылаемые деталью для уведомления об
изменении ее состояния: например об открытии окна или изменении значения
какого-либо атрибута.
Действия - операции или функции, которые деталь может выполнять.
Действия могут быть инициированы другими деталями посредством
соответствующих связей.
Связи определяют то, как детали взаимодействуют друг с другом. Можно установить связи
между деталями, встроенными программами(scripts) и другими связями. Введено четыре типа
связей:
- Атрибут - Атрибут соединяет два значения данных таким образом, что
при изменении одного из них так же изменяется и другое.
- Событие - Действие вызывает выполнение действия при возникновении
события.
- Событие - Встроенная программа запускает выполнение встроенной
программы при возникновении события.
- Атрибут - Встроенная программа запускает выполнение встроенной
программы когда значение атрибута должно быть вычислено.
Такое представление о деталях в системе VisualAge позволяет реализовать концепцию
визуального объекно-ориентированного программирования. Объекно-ориентированного -
потому что детали являются полноценными программными объектами со свойствами сокрытия
данных, многообразности и наследования.
Для иллюстрации построим несколько простых приложений.
Список сотрудников. Построим приложение, позволяющее добавлять и удалять
сотрудников из списка.
Очевидно, что для создания такого приложения необходимы следующие детали: поле ввода,
список, две кнопки и что-нибудь для запоминания списка. В соответствие с принципом
визуального программирования поместим необходимые детали из палитры деталей
на рабочую область.
Для запоминания списка выбрана невидимая деталь Ordered Collection (Упорядоченная
коллекция), которая позволяет добавлять и удалять объекты любого типа. Логику
взаимодействия деталей можно описать следующим предложением: "При нажатии кнопки Add
добавить содержимое поля ввода в Упорядоченную коллекцию и отображать находящееся в
ней в Списке; при нажатии кнопки Remove удалить выделенный элемент Списка из
Упорядоченной коллекции". В соответствии с этим установим связи между деталями. При
нажатии кнопка генерирует событие 'clicked'
.Свяжем
это событие с действием 'add' (добавить), выполняемым Упорядоченной коллекцией
.
Штриховая линия говорит о том, что параметр для вызываемого действия не указан. Так как в
коллекцию добавляется содержимое поля ввода, свяжем атрибут 'object' поля ввода с
атрибутом 'anObject' связи Кнопка-Упорядоченная Коллекция.
Для того, чтобы содержимое Колекции отображалось в Списке, соединим атрибуты 'items'
Списка и 'self' Коллекции. С кнопкой "Remove" поступим аналогично кнопке "Add", только
вызываемым действием Коллекции будет теперь 'remove', а его параметром - атрибут 'selected
item' Списка.
Мы создали законченное приложение, не написав ни единой строки программы, а всего лишь
визуально задав логику взаимодействия его компонент. Выполняется оно немедленно,
благодаря тому что базовым языком программирования системы является Smalltalk, который не
требует компиляции. Очевидно, что успех реальной разработки напрямую зависит от качества
и количества доступных деталей. Они могут быть созданы как визуальным построением,
программированием на языке Smalltalk, так и наследованием от уже существующих.
Если в предыдущем примере список сотрудников необходимо хранить в какой-либо базе
данных, задача несколько усложнится, но подход к созданию приложения не изменится. Мы
только возьмем другую деталь вместо 'Упорядоченной коллекции' - 'Запрос к базе данных'. Она
обладает более широким набором свойств, среди которых нас больше всего интересует
действие 'выполнить запрос' ('executeQuery') и атрибут 'результирующая таблица' ('resultTable').
Действие выполняет заданное SQL выражение, а деталь 'результирующая таблица' позволяет
работать с полученным результатом. Внешне программа изменилась не существенно
Результатом изложенной концепции программирования является переход к новому стилю
ведения проекта. Если раньше компьютерное сообщество делилось на программистов и
пользователей (не всегда способных понять друг друга), то теперь коллектив разработчиков
может состоять из фабрикантов - создателей деталей и сборщиков - специалистов в
предметной области, которые, оперируя более близкими им понятиями, будут быстро создавать
надежные приложения.
[Назад]
[Содержание]
[Вперед]