Создание программ с помощью Optima++
Работа с базами данных
Приложения Internet
Управляющие элементы ActiveX
Средства коллективной работы
Сравнение с другими системами RAD
Заключение
Литература

Основные черты семейства Optima++


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

А так как создание приложений в кратчайшие сроки было и остается насущной потребностью любого разработчика, программисты переходили к использованию языков четвертого поколения (4GL - 4 Generation Language), часто жертвуя при этом быстродействием и гибкостью систем.

Фирма Sybase (Powersoft Business Group), выпустившая первую, основанную на языке С++ систему быстрой разработки приложений (RAD - Rapid Application Development) Optima++, несомненно открыла новые перспективы использования этого языка. Эта система объединяет преимущества технологии быстрой разработки приложений с быстродействием и гибкостью С++.

В первую очередь, Optima++ отличается от других систем RAD (Sybase PowerBuilder, Microsoft Visual Basic, Borland Delphi и т. д.) использованием стандартного языка С++, широко применяемого для разработки сложных приложений.

В основу системы Optima++ заложены технологии, давно и успешно применяющиеся в таких известных продуктах фирмы Sybase, как Watcom C/C++, PowerBuilder, Sybase SQL Anywhere (ранее Watcom SQL).

Основными частями Optima++ являются:

  • оболочка, предназначенная для визуальной разработки приложений;
  • библиотека компонентов;
  • средства редактирования исходного кода на языке С++, его компиляции и отладки;
  • реляционная СУБД Sybase SQL Anywhere.
  • Оболочка связывает все составные части системы в единое целое. Она позволяет легко создавать все элементы пользовательского интерфейса, задавать их свойства и взаимодействие. В любой момент можно переключаться на работу с соответствующим фрагментом исходного кода.

    Optima++ предоставляет разработчику большой набор готовых компонентов и классов С++ (220), называемый библиотекой компонентов. Большинство объектов в этой библиотеке связаны с объектами и структурами данных Windows, образуя удобный интерфейс к ним на языке С++. Библиотека легко может дополняться готовыми компонентами.

    Сформированный исходный код на языке С++ компилируется и отлаживается с помощью мощных встроенных средств, базирующихся на технологии Watcom C/C++.

    Для разработки и отладки приложений, использующих базы данных, предназначена реляционная СУБД Sybase SQL Anywhere. В модификацию Optima++ Developer включен однопользовательский вариант СУБД, а в модификации Professional и Enterprise - трехпользовательский, что позволяет создавать и отлаживать многопользовательские приложения, использующие архитектуру клиент-сервер.

    Сейчас выпущена версия 1.5 системы в трех редакциях - Developer, Professional и Enterprise. Основные отличия этих редакций будут рассмотрены ниже.

    Создание программ с помощью Optima++

    Рассмотрим кратко основные этапы создания программ с помощью Optima++.

    В основе программирования в среде Optima++ (как, впрочем, и в основе любой другой системы быстрой разработки приложений) лежит понятие формы. Под формой понимается любое окно, которое создается в процессе работы программы. Обычно создание программы в Optima++ сводится к созданию совокупности форм. При этом, конечно, из одной формы может вызываться другая. Общее количество форм в проекте не ограничено.

    В Optima++ форма определяется как класс на языке С++. Соответственно, перед выводом формы на экран создается объект этого класса. Можно создавать несколько объектов одной и той же формы для просмотра, например, нескольких документов одновременно.

    Процесс создания формы включает три основных шага:

  • создание формы и размещение на ней управляющих объектов (кнопок, полей редактирования и т. д.);
  • определение свойств каждого объекта;
  • написание кода на языке С++ для обработки возникающих событий (например, нажатия кнопки пользователем).
  • На первом шаге на палитре компонентов (Component palette) выбирается нужный элемент и щелчком мыши помещается в нужном месте формы. Optima++ при этом создает объект выбранного типа с именем имя_n (например, Menu_1). Имени соответствует указатель C++ на тип данных. Этот объект, конечно, может быть в дальнейшем переименован.

    На втором шаге указываются свойства, определяющие внешний вид и поведение объектов. В процессе работы программы свойства могут быть изменены с помощью вызовов соответствующих методов.

    Наиболее содержательным шагом при разработке программ с помощью Optima++ является написание на языке С++ функций обработки возникающих при работе программы событий. Так как общая структура программы при работе с Optima++ создается автоматически, основной работой программиста становится написание кода для обработки событий.

    Связанное с объектом меню (вызываемое нажатием правой кнопки мыши) содержит пункт "События" (Events), разворачивающий, в свою очередь, список основных событий и пункт "Больше" (More). При выборе пункта "Больше" на экране появляется инспектор объекта (Object Inspector), включающий список всех возможных для этого объекта событий.

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

    Для облегчения написания кода обработки события на языке С++ можно использовать мощные средства программирования методом буксировки объектов мышью (drag-and-drop). Для этого нужно перетащить объект, метод которого должен быть вызван, из окна формы в окно редактора кода. После выбора в диалоге метода и его параметров автоматически генерируется исходный код.

    В процессе уточняющего диалога используются справочная карта (Reference Card) со списком свойств и методов выбранного объекта и мастер параметров (Parameter Wizard), упрощающий задание всех необходимых параметров.

    Работа с базами данных

    Сегодня уже трудно представить себе приложения для автоматизации деятельности предприятия, не использующие в том или ином виде базы данных. Optima++ включает в себя мощные средства для разработки приложений, активно работающих с базами данных.

    Основными компонентами, ответственными за работу с базами данных, являются классы WTransaction и WQuery. Класс WTransaction отвечает за соединение и работу с конкретной базой данных. В свойствах этого метода указываются все основные параметры соединения: имя источника данных, имя пользователя, пароль, вид доступа (только на чтение, на чтение и запись), вид курсора, уровень изоляции и т. д.

    Класс WQuery определяет запрос к базе данных, его выполнение и работу с полученным результатом. Запрос может задаваться текстовой строкой или формироваться с помощью программы Visual Query Editor (визуальный редактор запросов).

    Для выборки данных из базы вызывается метод Open объекта WQuery. Имеется два основных способа работы с полученным результатом.

    В первом случае производится связывание объекта WQuery c одним из управляющих элементов (например, Combo box, List box или List view). Связанный управляющий элемент (bound control) автоматически обновляется при выполнении операций запроса. Например, можно связать запрос с текстовым полем так, что в этом поле будет отображаться содержимое одного из столбцов для текущей строки выборки. При движении курсора на следующую строку информация в текстовом поле будет автоматически обновляться.

    Во втором случае результат сохраняется в одном или нескольких массивах. Операция определения соответствия между столбцами полученной выборки и полями массивов называется связыванием столбцов (binding columns) и осуществляется с помощью метода BindColumn.

    В версии Optima++ Professional и Enterprise включена возможность работы с объектами DataWindow. DataWindow OCX - это мощный управляющий элемент для работы с информацией, полученной из базы данных. Объекты DataWindow позволяют легко извлекать данные и представлять их в удобном для пользователя виде. Технология DataWindow первоначально была отработана в системе PowerBuilder и является общей для этих двух систем.

    Для работы с DataWindow нужно поместить объект DataWindow на форму, описать извлекаемую информацию и ее представление с помощью программы DataWindow Builder и связать объект с его описанием.

    Если Optima++ Professional поддерживает работу объектов DataWindow с СУБД через ODBC, то Optima++ Enterprise также позволяет работать с оптимизированными собственными драйверами СУБД.

    Приложения Internet

    Версии Optima++ Professional и Enterprise позволяют разрабатывать приложения, использующие Internet. Поддерживаются два основных класса таких приложений - для работы с World Wide Web (WWW) и через Windows Sockets.

    При создании приложений для работы с Internet через WWW поддерживается три основных интерфейса - CGI (Common Gateway Interface), NSAPI (Netscape Web Server Plug-in API) и ISAPI (Microsoft Internet Information Server API). Тип проекта задается при его создании с помощью Target Wizard. Выбор CGI определяет создание выполняемого модуля (EXE-файла), вызываемого Web-сервером. Выбор NSAPI или ISAPI определяет создание соответствующей загружаемой Web-сервером DLL.

    Реализация всех трех интерфейсов базируется на одном классе Optima++ - WebService, что позволяет использовать практически один и тот же код при разработке версий программ, использующих разные интерфейсы.

    Приложения, основанные на стандарте Windows Sockets, позволяют организовать двустороннее взаимодействие между двумя программами через Internet. Для разработки таких приложений в Optima++ используется класс WSocket.

    Кроме того, в комплект также включены следующие управляющие элементы ActiveX для работы с Internet от фирмы NetManage (NEWT IntraNet Toolkit): FTP Client, HTTP Client, HTML, NNTP Client, POP Client, SMTP Client, WinSock TCP, WinSock UDP.

    Управляющие элементы ActiveX

    Управляющие элементы ActiveX (ActiveX controls, OLE controls, OCX) могут использоваться в Optima++ так же, как и стандартные компоненты. При добавлении элемента в палитру компонентов Optima++ создает "родной" интерфейс для этого элемента, занося все свойства и методы в справочную карту и делая их доступными для программирования методом буксировки мышью. Если для элемента определена оперативная (on-line) помощь, она будет напрямую доступна из справочной карты.

    Единственное отличие добавленного управляющего элемента от "родного" элемента Optima++ состоит в том, что установка свойств осуществляется через список свойств (property sheet), предоставляемый самим элементом.

    Серверы OLE Automation (ActiveX Auto-mation) могут быть добавлены к палитре компонентов точно так же, как и управляющие элементы ActiveX.

    Средства коллективной работы

    В Optima++ Professional и Enterprise включены простейшие средства контроля версий для обеспечения коллективной работы. Для решения более сложных задач имеются интерфейсы с целым рядом мощных систем управления версиями:

  • INTERSOLV PVCS (начиная с версии 5.1);
  • MKS RCS (начиная с версии 5.2);
  • MKS Source Integrity (начиная с версии 3.2);
  • ObjectCycle (начиная с версии 1.0);
  • любая система, поддерживающая интерфейс Microsoft Source Code Control (SCC), включая Microsoft Visual SourceSafe (начиная с версии 4.0) и MKS Source Integrity (версии 7.2).
  • В Optima++ Enterprise входит также и сама система ObjectCycle.

    Сравнение с другими системами RAD

    Как уже отмечалось, Optima++ является первой системой RAD, использующей стандартный язык - С++. Все остальные существующие системы применяют либо свой язык 4GL, либо какое-либо нестандартное расширение языка (например, ObjectPascal фирмы Borland в Delphi). Хотя, конечно, скоро появятся и уже появляются другие подобные системы (первая из которых - Borland C++Builder).

    Высокую оценку получило быстродействие приложений, разработанных с помощью Optima++. По данным тестирования PC Week Labs [1], Optima++ показала лучший результат по операциям с целыми переменными и уступила только Microsoft Visual C++ 4.2 по операциям с вещественными переменными. При работе с базами данных приложения Optima++ работают напрямую с собственными драйверами или драйверами ODBC, что в ряде случаев позволяет повысить быстродействие (в Delphi, например, используется дополнительный слой - Borland Database Engine).

    Все обозреватели отмечают удобную интегрированную среду разработки. Тестовый центр PC Week Labs, например, считает Optima++ лучшей оболочкой среди всех работающих с функциями управления OLE и ActiveX [1].

    Но тем не менее не следует полагать, что Optima++ (и в будущем другие подобные продукты) вытеснит средства RAD, основанные на 4GL (PowerBuilder, VisualBasic и т. д.). Можно отметить, например, что фирма Sybase не считает Optima++ конкурентом другой их системы RAD - PowerBuilder. Наоборот, обе эти технологии рассматриваются как взаимно дополняющие друг друга.

    Раньше для разных классов задач часто применялись разные комплекты средств разработки: 4GL для проектов, где важны скорость разработки и быстрое создание рабочего прототипа, и 3GL для проектов, где важны производительность и доступ к системным ресурсам. Было сложно использовать одни и те же наработки в обоих случаях.

    Сейчас предлагаемая фирмой Sybase комбинация Optima++ (как дальнейшего развития линии 3GL) и PowerBuilder (как одного из мощнейших пакетов 4GL) устраняет барьеры между двумя этими подходами, позволяя совместно использовать DataWindow, отчеты и компоненты ActiveX. Кроме того, обе эти среды поддерживают такие общие технологии, как утилита для перекачки данных Data Pipeline, средство для управления версиями ObjectCycle, генератор отчетов InfoMaker, СУБД SQL Anywhere.

    Среди ограничений Optima++ следует отметить разработку приложений только для платформы Win32 (хотя поддерживается Win32s, что позволяет использовать разработанные приложения в Windows 3.х). Многоплатформенность другого продукта фирмы Sybase - PowerBuilder, который поддерживает разработку приложений для Windows (16- и 32-разрядных), Alpha NT, Unix и Macintosh, позволяет надеяться, что в следующих версиях Optima++ список поддерживаемых платформ будет расширен.

    Использование собственной библиотеки компонентов также вряд ли порадует программистов, применяющих библиотеки MFC и OWL. Чтобы включить в приложение модуль, использующий MFC, необходимо сделать из него либо элемент ActiveX, либо DLL с интерфейсом на языке С. Это, к сожалению, затруднит переход к Optima++ от существующих технологий разработки приложений на С++.

    Заключение

    Как видно из вышеизложенного, применение Optima++ позволяет автоматизировать большинство рутинных операций и значительно сокращает сроки создания программ на языке С++. Компонентный подход, программирование методом буксировки объектов мышью, мощные средства интеграции с базами данных и Internet позволяют быстро создавать сложные приложения на С++, не ограничивая возможностей разработчика.

    Таким образом, Optima++ является удачным выбором для создания новых приложений для платформы Win32, предъявляющих высокие требования к быстродействию, гибкости или доступу к системным ресурсам.


    Литература

    1. Коффи П. Powersoft Optima++ демонстрирует правильный подход к разработчикам. - PC WEEK/RE, # 50, 1996, стр. 40-42.


    Александр Поделько, "Родник Софт"*),
    тел.: 113-7001, Е-mail: pode@rodnik.msk.su


    *) На момент поступления статьи в редакцию.

    Основные черты семейства Optima++

    Интегрирующая оболочка
    Dev
    Pro
    Ent
    Х
    Х
    Х
    Оптимизирующий 32-разрядный компилятор
    Х
    Х
    Х
    Более 150 компонентов и классов
    Х
    Х
    Х
    Создание DLL-, LIB- и отдельных EXE-файлов
    Х
    Х
    Х
    Интеграция компонентов ActiveX
    Х
    Х
    Х
    Драйверы ODBC для настольных СУБД и Sybase SQL Anywhere
    X
    X
    X
    Встроенная однопользовательская СУБД SQL Anywhere
    X
    X
    X
    Компоненты DataWindow и DataWindow Builder для доступа к данным, их анализа и представления, формирования отчетов
    -
    Х
    Х
    Утилита для перекачки данных Data Pipeline
    -
    X
    X
    Сервер SQL Anywhere на 3 пользователей
    Х
    Х
    Более 220 компонентов и классов
    Х
    Х
    Интерфейс для коллективной работы
    -
    Х
    Х
    Построение серверов приложений с использованием CGI, NSAPI, ISAPI
    -
    X
    X
    Компоненты для протоколов и служб Internet
    -
    X
    X
    Специальная версия InstallShield
    -
    X
    Х
    Visual Components, включающие таблицы и диаграммы
    -
    Х
    Х
    Оптимизированные собственные драйверы для Sybase SQL Server, Oracle, Informix, Microsoft SQL Server, MDI Database Gateway Interface for DB2
    -
    -
    X
    Средство для управления версиями ObjectCycle
    -
    -
    X
    Средство для создания запросов и отчетов InfoMaker
    -
    -
    X