визуальные объектно-ориентированные системы управления

advertisement
1
ВИЗУАЛЬНЫЕ ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ СИСТЕМЫ
УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ.
ПРИНЦИПЫ ПРОГРАММИРОВАНИЯ И АНАЛИЗ ПРИЛОЖЕНИЙ
А.И. Еникеев, И. А. Еникеев
Казанский госуниверситет
Цель статьи - довести до широкого круга программистов и пользователей
возможности эффективного программирования в визуальной среде объектноориентированных систем управления базами данных (СУБД) и специфику применения
этих систем для автоматизации решения так называемых
информационновычислительных задач, к числу которых относятся бухгалтерский учет, анализ
финансово-хозяйственной деятельности предприятий, информационно-поисковые
задачи и т.п. Кроме этого для программистов, уже вкусивших “прелести” объектноориентированных визуальных средств, авторами статьи приводятся некоторые тонкие
аспекты стиля разработки приложений на основе практического опыта, накопленного
при программировании информационно-вычислительных задач в среде СУБД Visual
FoxPro.
Авторы не претендуют на полноту изложения материала и будут весьма
признательны
к замечаниям и критическим откликам опытных специалистов,
работающих в упомянутой выше области.
ВВЕДЕНИЕ
В отличие от традиционного процедурно ориентированного программирования при
объектно-ориентированном подходе основная роль отводится объектам обработки
программ (входным, выходным и промежуточным структурным элементам данных), в
описании каждого из которых на соответствующем языке программирования хранятся
свойства объекта (размеры, цвет, связи с другими объектами и т.п.) вместе с
программами (методами ) их обработки.
Объектно-ориентированное программирование основывается на следующих
основных принципах:
- каждый объект может иметь иерархическую структуру, предусматривающую
включение в него других дочерних объектов с наследованием свойств главного объекта
;
- обеспечивается автоматический контроль целостности объектов, позволяющий
избегать нарушений структурных связей объектов при внесении каких-либо изменений
в обрабатываемые объекты;
- имеется возможность определения классов объектов при работе с различными
однотипными объектами ; класс объектов представляет из себя некий абстрактный
объект, обобщающий свойства соответствующих однотипных объектов и
позволяющий эффективно вводить новый объект (экземпляр класса), наследующий
свойства класса, путем конкретизации абстрактного объекта.
Идея объектно-ориентированного программирования появилась еще в 60-х годах и
нашла свою реализацию в разработке системы компьютерного моделирования
SIMULA 67 [1], в которой на уровне языка программирования было введено понятие
классов. Дальнейшее развитие объектно-ориентированного подхода можно
охарактеризовать как симбиоз таких разделов разработки программного обеспечения,
как параметрическое программирование, абстрактные типы данных, структурное
программирование, языки спецификаций и программный синтез, CASE технологии,
функциональный и декларативный стили программирования. Важно отметить, что
несмотря на появление этого подхода в программировании достаточно давно, более
или менее совершенная реализация объектно-ориентированных средств с точки зрения
2
“индустриального программирования” оказалась возможной только в последнее
десятилетие за счет интенсивного развития уровня компьютерной техники и
программного обеспечения. Классическим примером современной системы объектноориентированного программирования является система Borland C++ [ 2 ]. Однако,
несмотря на большие возможности языка C++, для большинства разработчиков этот
язык представляется достаточно трудным и громоздким в освоении. В первую очередь
это объясняется излишней универсализацией системы C++. Стремление к менее
болезненному способу создания качественных программ привело к разработке целой
серии визуальных объектно-ориентированных систем управления базами данных
(СУБД) - DELPHI [ 3 ], ORACLE [ 4 ] и Visual FoxPro [ 5 ], в которых средства
объектно-ориентированного программирования удачно сочетаются с мощными
средствами визуального представления объектов с адекватными средствами сетевой
поддержки. Наибольшей популярностью в западных странах и США пользуется
система ORACLE, обладающая более совершенными средствами по сравнению с
другими аналогичными СУБД, особенно с точки зрения сетевой поддержки. В нашей
стране большее распространение получили системы DELPHI и Visual FoxPro,
благодаря их сравнительно дешевой стоимости. Здесь мы собираемся ограничиться
анализом средств и возможностей
современных визуальных объектноориентированных СУБД на примере системы Visual FoxPro, предполагая, что в
принципиальном аспекте все эти системы ненамного отличаются друг от друга.
1. ОСНОВНЫЕ ТРЕБОВАНИЯ К ПРОГРАММНОМУ И АППАРАТНОМУ
ОБЕСПЕЧЕНИЯМ
Visual FoxPro представляет собой принципиально новую версию широко известной
СУБД Microsoft FoxPro, которая функционирует в операционной среде Windows 3.1,
Windows 95 и Windows NT . Visual
FoxPro обеспечивает совместимость с
предыдущими версиями FoxPro, позволяя сравнительно просто переносить ранее
созданные приложения в среду Windows 95. Эта СУБД разработана в полном
соответствии со стандартами фирмы Microsoft, что позволяет сравнительно легко
обмениваться данными с другими приложениями Windows. Кроме этого
поддерживается доступ к наиболее популярным SQL-серверам баз данных - Microsoft
SQL Server, ORACLE, INFORMIX и к другим, используя стандарт ODBC. В настоящее
время широко используются две версии Visual FoxPro 3.0 и 5.0, последняя из которых
безусловно является более совершенной.
Наличие объемной интегрированной объектно-ориентированной визуальной среды
программирования требует достаточно большой оперативной и внешней памяти, а
также может существенно замедлять функционирование разрабатываемых
приложений. Опыт эксплуатации системы Visual
FoxPro показывает, что для
нормального функционирования большинства приложений требуется как минимум 16
Мбайт оперативной памяти и 200 Мбайт на жестком диске.
2. ПРИНЦИПЫ ПРОГРАММИРОВАНИЯ
В отличие от предыдущих версий система Visual FoxPro предлагает новый
подход
к
программированию,
известный
как
событийно-управляемое
программирование (Event-Driven Programming), суть которого сводится к определению
некоторого множества событий (Click-нажатие левой кнопки мышки, Load- момент
загрузки объекта и т.п.), каждое из которых может быть связано с соответствующим
программным модулем (методом), запускаемым при активизации соответствующего
события. Основные принципы событийно-управляемого программирования наиболее
3
полно реализуются при использовании объектно-ориентированной среды, когда
элемент на экране, которым манипулирует пользователь, имеет связь с объектом,
созданным программистом. Событийно-управляемая программа достаточно хорошо
приспособлена к изменению внешней ситуации и позволяет программисту
сравнительно просто добавлять новые средства обработки событий.
Другой важной особенностью объектно-ориентированной визуальной среды
является возможность одновременного проектирования, разработки и реализации
приложений, обеспечиваемая за счет соединения информационных, логических и
алгоритмических связей в единое целое в рамках определяемого объекта обработки,
успешно избегая многих ошибок, возникающих при нарушении принципов
адекватности между проектом и его реализацией. Более того, этот принцип позволяет
успешно описывать постановку (спецификацию)
задачи на программирование
средствами СУБД.
Создание разветвленной и достаточно объемной интегрированной среды,
обеспечивающей объектно-ориентированное, визуальное и событийно-управляемые
возможности программирования, безусловно является дорогим “удовольствием”, за
которое приходится расплачиваться большим расходом памяти, замедлением времени
работы приложений и, наконец, громоздкостью системы в смысле ее освоения.
Последнее
является наиболее уязвимым объектом критики
сторонников
традиционного
процедурно-ориентированного
программирования.
Однако,
необходимо иметь в виду, что грамотное использование всех перечисленных выше
возможностей, позволяет существенным образом повысить производительность
разработки программ и создавать в итоге высококачественный программный продукт,
удовлетворяющий соответствующим стандартам. Об этом свидетельствует богатый
опыт разработки многих приложений, в частности авторам статьи удалось буквально в
течении 2-х дней полностью переписать практически заново достаточно емкую
систему компьютерного учета автомобильного транспорта для одного из Министерств
Республики Татарстан, тогда как на разработку предыдущей версии этой системы
традиционными процедурно-ориентированными средствами (СУБД FoxPro 2.5 ) было
затрачено около 2-месяцев. С другой стороны переход от процедурно-ориентированной
модели мышления к объектно-ориентированной - процесс достаточно длинный и
болезненный. Поэтому часто многие программисты долгое время при переходе от
процедурного способа программирования к объектно-ориентированному продолжают
по инерции программировать по старому, не используя преимуществ объектноориентированного стиля
в новой среде, теряя в результате много времени на
программирование и не получая взамен ничего хорошего в этом случае. В частности
эту болезненную стадию перехода пришлось пройти и авторам данной статьи, причем
этот процесс занял достаточно длительное время (около года изнурительной работы ).
3. ТЕХНОЛОГИЯ И ОСНОВНЫЕ ОБЪЕКТЫ ПРОГРАММИРОВАНИЯ
Технология проектирования и разработки приложений в среде СУБД Visual FoxPro
начинается с создания проекта (Project), являющегося главным объектом. Механизм
развертывания последующих этапов разработки (детализация) проекта определяется
следующей структурой :
PROJECT
DATA
DOCUMENTS
FORMS
REPORTS
(
(
(
(
(
проект )
базы данных )
документы )
экранные формы )
формы вывода на печать )
4
CLASSES
CODE
PROGRAMS
APPLICATIONS
OTHER
MENU
TEXT FILES
OTHER FILES
( классы )
( программы и приложения
( программы )
( приложения )
(
другие объекты)
( меню )
( текстовые
файлы )
( другие файлы )
)
3.1. Базы данных
Создание баз данных определяется структурой :
DATA
DCB-файлы
( контейнеры
данных )
DBF - файлы (таблицы), входящие в состав
соответствующих контейнеров
FREE TABLES ( свободные таблицы : DBF-файлы,
не входящие в состав ни одного из контейнеров )
В отличие от предыдущих версий в СУБД Visual FoxPro введено понятие
контейнера данных (или базы данных), представляемого в виде структурированного
DCB -файла, который включает в себя множество так -называемых таблиц (DBF файлов ). Кроме этого важным новшеством является введение механизма защиты
целостности баз данных, позволяющего автоматически контролировать и
предотвращать нарушения структурных связей в базах данных при выполнении
операций над базами данных. Этот механизм основывается
на средствах,
позволяющих устанавливать структурно-логические отношения между таблицами базы
данных и определять специальные функции проверки (триггеры) для разрешения или
запрета операций удаления, вставки и модификации записей таблиц в зависимости от
определяемых условий.
3.2. Документы
В понятие документов включаются экранные формы ( FORMS ) и формы для
вывода на печать (REPORTS). Создание каждого нового документа предусматривает
как правило установление связи документа с соответствующими базами данных
(DATA ENVIRONMENT) и заполнение документа различными объектами (командные
окна, окна для ввода и редактирования данных, объекты типа меню и т.п. ), которые
строятся на основе стандартной или определяемой библиотеки классов. Для каждого из
объектов устанавливаются свойства (Properties), определяющие различные
характеристики объекта (связи с полями таблиц, способ размещения на экране, и т.п.).
Кроме этого с каждым объектом можно связать некоторое множество событий и
запланировать вызов соответствующих
подпрограмм (методов), запускаемых
автоматически при возникновении тех или иных запланированных событий. Такая
возможность
позволяет
реализовать
принцип
событийно-управляемого
программирования (Event-Driven Programming), обеспечивающего существенное
повышение эффективности технологии производства программ.
3.3. Классы
Класс объектов представляет из себя некий абстрактный объект,
обобщающий
свойства соответствующих однотипных объектов и позволяющий эффективно вводить
5
новый объект (экземпляр класса), наследующий свойства класса, путем конкретизации
абстрактного объекта.
Предоставляя в распоряжение программиста библиотеку встроенных
классов,
Visual FoxPro позволяет вводить новые классы и создавать новые библиотеки классов.
3.4. Программы и приложения
В Visual FoxPro предоставлена возможность гибкого сочетания объектноориентированного стиля программирования с процедурно-ориентированным,
предусматривающая создание программных и процедурных файлов (PRG - файлов) на
языке FoxPro. Причем один из этих файлов выбирается в качестве главного
“запускного” модуля, активизирующего соответствующие объекты, каждый из
которых активизирует другие и т.д.
В результате компиляции проекта имеется возможность получения как EXE файла, так и специального APP - файла (Application), представляющего из себя
промежуточный результат компиляции и выполняемого интерпретатором Visual
FoxPro. Такие APP - файлы, называемые приложениями, являются более компактными
по сравнению с соответствующими EXE - файлами, однако могут выполняться только
при наличии среды Visual FoxPro.
3.5. Другие объекты
Сюда включаются меню, текстовые и другие файлы, необходимые для разработки
программ. В Visual FoxPro представлены средства генерации меню-диалога,
аналогичные предыдущим версиям.
4. ОБЛАСТЬ ПРИМЕНЕНИЯ
Универсальность СУБД Visual FoxPro обеспечивает автоматизацию решения
достаточно широкого класса задач, однако наиболее очевидный эффект достигается
для информационно-вычислительных задач, характерной особенностью которых
является
сочетание
обработки
больших
информационных
массивов
с
вычислительными задачами. Это - бухгалтерский
учет, анализ финансовохозяйственной деятельности предприятий, информационно-поисковые задачи и т.п.
Для эффективной разработки и создания качественного программного продукта,
ориентированного на решение перечисленных задач, очень важное значение имеет
концептуальный подход к разработкам.
Это - достаточно емкое понятие,
предусматривающее в первую очередь строгую математическую формализацию
модели разработки, с помощью которой можно было бы наиболее просто и компактно
описать и в дальнейшем эффективно реализовать сложные структурные связи между
объектами и алгоритмами их обработки, четко отделяя второстепенные моменты от
главных.
Например, разработка компьютерной бухгалтерии предусматривает создание
комплекса подсистем: расчет заработной платы, касса, банк, материально складской
учет, учет основных средств, работа с подотчетными лицами, поставщики-подрядчики
и т.п. Каждая из подсистем должна включать в себя средства для получения огромного
числа различных отчетных документов с учетом различных бухгалтерских операций и
специфики бухгалтерской отчетности для разных типов организаций. Кроме этого
необходимо обеспечить возможности обмена данными между этими подсистемами и
экспорта результатов работы подсистем в автоматизированное рабочее место главного
бухгалтера с целью получения конечных бухгалтерских документов (баланс, главная
книга и т.д.). Все это представляет из себя достаточно сложную и трудоемкую задачу,
“лобовое” решение которой как правило не приносит ожидаемых результатов. С
6
другой стороны концептуальный анализ этой проблемы показывает, что основная часть
перечисленных подсистем имеет одну и ту же общую основу, сводящуюся к расчету
остатков на текущий период из оборотов и остатков предыдущего периода.
Следовательно, разработку необходимо начинать с создания средств расчета остатков,
которые
в последующем могут существенно облегчить задачу разработки и
реализации упомянутых подсистем. Другим важным аспектом разработки
бухгалтерской системы является создание единых справочников, представляющих из
себя источники первичной информации для всех соответствующих подсистем (план
счетов, справочник финансовых операций с бухгалтерскими проводками, справочник
источников финансирования, справочник подразделений предприятия и т.п.),
правильная организация которых обеспечивает универсальность и хорошую
адаптируемость системы к изменениям.
Объектно-ориентированные средства, позволяя абстрагирование (обобщения)
объектов разработки приложений с последующей их конкретизацией, представляют
наиболее адекватный инструмент для создания различных информационно-расчетных
систем и удачно “провоцируют” разработчиков этих систем на выбор концептуальных
решений.
ЗАКЛЮЧЕНИЕ
Переход от традиционного процедурного стиля программирования к объектноориентированному, который успешно преодолели многие программисты ведущих
индустриальных государств и преодолевают в России,
представляет принципиально новый шаг
в направлении концептуального
программирования, сопоставимый по своей важности с переходом от машинноориентированного программирования к языкам высокого уровня. За время своего
развития этот современный стиль программирования обогатился средствами обработки
баз данных и визуального представления обрабатываемой информации. Существенное
продвижение по пути к стандартизации, повышение производительности труда
программистов, возможность одновременного проектирования, разработки и
реализации приложений - все это далеко не полный перечень преимуществ,
предоставляемых объектно-ориентированными системами.
БЛАГОДАРНОСТИ
Мы выражаем благодарность всем нашим коллегам, с которыми вместе делили
тяготы упорного и далеко не всегда благодарного программисткого труда при
разработке целого ряда компьютерных систем на Visual FoxPro. Особенно
признательны Александру Михайловичу Гусенкову за создание великолепной
библиотеки классов, а также Галине Аркадьевне Киселевой и Юлии Ленаровне
Музафаровой за их неоценимый вклад в дело разработки компьютерных бухгалтерских
систем.
ЛИТЕРАТУРА
1.
А. Дал, Мюрхауг, Ньюгорд,
программирования. -М.: Мир, 1969.
СИМУЛА
67.
Универсальный
язык
2. Тед Фейсон, Объектно-ориентированное программирование в Borland C++ 4.5, 4-ое
издание, SAMS, 1995 г.
7
3. Том Сван, Основы программирования DELPHI для WINDOWS 95, Киев: Изд-во
“ДИАЛЕКТИКА”,1996 г.
4. Д. Холмс-Кинселла, А. Брюзгин, Разработка приложений для СУБД ORACLE с
помощью SQLWINDOWS фирмы Gupta, “Системы управления базами данных”, N
2, 1996 г.
5. Пинтер Лес, Пинтер Джон, Visual FoxPro : Уроки программирования, Mc Graw-Hill
(пер. с англ.), 1996 г.
Download