Главная » Delphi » Delphi 2006 – Технология создания модели ECO на основе существующей базы данных

0

Технология ЕСО позволяет сохранять в базе данных копию объектного пространства ЕСО, построенного на основе модели UML. Она также способна выполнять обратную задачу — формировать модель приложения на языке UML. Эта модель строится автоматически, путем анализа существующей базы данных. Процесс формирования модели выполняется специальным Мастером, который становится доступен после настройки объектного пространства проекта на связь с конкретной СУБД.

Создадим пустое приложение ЕСО. На закладке пространства ЕСО (окно ProjectlEcoSpace) разместим компонент связи с СУБД BdpConnection и компонент объектно-реляционной раскладки PersistenceMapperBdp. Настроим их на выбранную СУБД и свяжем друг с другом, как было описано выше.

Puc. 9.20. Выбор таблиц и полей для построения модели

 

Puc. 9.21. Модель, автоматически построенная на основе базы данных

Рис. 9.22. Средство просмотра всей модели

Нажмем на кнопку Wrap Existing Database with Eco (Построить модель ECO на основе существующей базы данных) в нижней части окна Projectl EcoSpace. На экране появится Мастер формирования модели ЕСО. Выберем, например, демонстрационную базу данных employee.gdb из поставки СУБД Interbase, которой мы уже неоднократно пользовались в других примерах. Тогда вариант преобразования базы будет выглядеть в Мастере примерно так, как показано на рис. 9.20.

Флажками в окне Мастера помечены таблицы, описания которых будут использованы при построении модели. Нажмем на кнопку Next — Мастер сгенерирует файл XML, в который запишется описание анализируемой базы данных. Каждой таблице в этом описании отведен свой класс, а между ними будут установлены правильные взаимосвязи. Новое модельное пространство доступно в проекте в виде пакета, имя которого вводилось на первом шаге работы Мастера.

«Сырая» модель, извлеченная из базы данных, обычно выглядит не очень приглядно. В частности, образы таблиц из базы данных и линии связей между ними располагаются на диаграмме хаотически. Команда контекстного меню диаграммы Layout > Do Full Layout (Раскладка > Выполнить полную раскладку) автоматически упорядочит расположение элементов и взаимосвязей (рис. 9.21).

В нижнем правом углу окна модели имеется поле Overview. Если на нем щелкнуть, то откроется окно, представляющее всю модель целиком. Желаемую область просмотра можно задать с помощью мыши (рис. 9.23).

Мастер преобразования базы данных по вышеописанной технологии формирует готовую модель некоторой понятийной области. На основе этой автоматически созданной модели не представляет труда создать полноценное приложение ЕСО.

1 Разработчикам .NET-приложений доступен большой набор стандартных классов, через которые организуется взаимодействие программы с CLR.

Часто конкретные классы, в которых должна быть реализована функциональность Одиночки, формируются непосредственно в рамках класса TSingleton. Добавим, например, ему новое поле field: integer, после чего организуем работу следующим образом.

var sg: TSingleton;

// первое обращение – экземпляр класса создастся автоматически

sg := TSingleton.Getlnstance;

sg.field := 5;

labell.Text := sg.field.ToString;

(* следующее обращение снова выполняется с помощью

Getlnstance – но работа происходит с одним и тем же объектом!

*)

sg := TSingleton.Getlnstance;

// будет показано число "5": labell.Text := sg.field.ToString;

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

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

I Flyweight.

IFlyweight = interface

function SampleOperation: String; end;

Этот интерфейс реализуется классом TConcreteFlyweight.

TConcreteFlyweight = class(TObject, IFlyweight) public

st: Strings-

function SampleOperation: Strings- constructor Create(AKey :TObject);

end;

На его основе и создаются множественные объекты, доступ к которым формируется на базе их состояний.

Допустим, объект создается на основе ключа, определяющего нужное нам состояние, по которому к нему в дальнейшем будет организован доступ.

constructor TConcreteFlyweight.Create(AKey :TObject);

begin

inherited Create,-

// инициализируем внутреннее состояние: st := AKey.ToString;

end;

Прикладной метод реализуется, например, так:

function TConcreteFlyweight. SampleOperation: Strings-

begin

 

 

Бобровский С. И. Технологии Delphi 2006. Новые возможности. — СПб.: Питер, 2006. — 288 е.: ил.

По теме:

  • Комментарии