Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции - Часть 9.doc
Скачиваний:
35
Добавлен:
02.05.2014
Размер:
5.57 Mб
Скачать

9.8. Классы бизнес-логики

Класс бизнес-логики определяет логику принятия решения при обработке за­проса клиента, специфичную для данного приложения. Он предназначен для ин­капсуляции бизнес-правил, которые способны изменяться независимо друг от друга. Обычно во время выполнения объект бизнес-логики обращается к различ­ным сущностным объектам.

Примером такого класса может служить класс Менеджер Транзакций Снятия (рис.9.8), где инкапсулированы правила обработки запроса на снятие денег.

Рис.9.8. Пример класса бизнес-логики: а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма кооперации); в – проектная модель (диаграмма классов)

В нем есть операции инициализировать, снять, подтвердить, и отменить. Операция инициализировать вызывается на этапе инициализации, операция снять – для снятия денег со счета клиента, операция подтвердить – для под­тверждения факта успешного проведения транзакции, а операция отменить – в случае, когда транзакция закончилась неудачно, в частности если банкомат не выдал наличные. При определении операций необходимо тщательно проанализи­ровать диаграмму кооперации Банковский Сервер из аналитической модели (рис.9.8а) и описание последовательности сообщений, где приведены детальные сведения о каждом сообщении. По результатам такого анализа стро­ится диаграмма кооперации для проектной модели (рис.9.86) и диаграмма клас­сов (рис.9.8в).

9.9. Классы-обертки базы данных

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

На сегодняшний день наиболее широко распространены реляционные базы данных, так что класс-обертка предоставляет объектно-ориентированный интер­фейс к такой базе. При этом необходимо отобразить сущностные классы из стати­ческой модели на структуры базы данных.

Атрибуты сущностного класса становятся отношениями в базе, а операции доступа к атрибутам встраиваются в класс-обертку. Для отображения сущностных классов на отношения требуется систематический подход, поскольку отно­шения – это плоские структуры, а сущностные классы необязательно являются таковыми. Необходимо определить первичные ключи, а ассоциации, явно пред­ставленные в диаграмме классов, следует отобразить на внешние ключи.

Класс-обертка скрывает детали доступа к данным, хранящимся в таблицах базы, а значит, и все операторы языка SQL. Обычно один класс соотносится с од­ной таблицей, но возможны также классы-обертки и для представлений, то есть соединения двух или более таблиц.

Рис.9.9. Пример класса-обертки базы данных:

а – аналитическая модель; б – проектная модель

Пример класса-обертки базы данных приведен на рис.9.9. В банковской сис­теме все устойчивые данные хранятся в базе, поэтому сущностные классы Бан­ковского Сервера отображаются как на отношение базы данных, так и на класс-обертку. Рассмотрим, к примеру, сущностный класс Дебетовая Карточка из аналитической модели (рис.9.9а). Поскольку информация с карточки хранится в реляционной базе данных, этому классу соответствует отношение в базе. Атри­буты класса отображаются на атрибуты отношения. Кроме того, надо указать пер­вичный ключ; мы выбрали атрибут идентификатор Карточки, так как он одно­значно определяет строку отношения (рис.9.96). Требуется также внешний ключ для представления ассоциации Клиент владеет Дебетовой Карточкой.

Внеш­ний ключ является первичным в таблице, связанной с данной. Он соответствует ассоциации между классами и используется для навигации между таблицами. Первичный ключ для отношения Клиент – это НСС Клиента (номер социально­го страхования), так что именно он становится внешним в отношении Дебето­вая Карточка.

Необходимо спроектировать класс-обертку Дебетовая Карточка (рис.9.96), в котором будут следующие операции: создать, проверить, проверитьСуточныйЛимит, обнулитьИтог, обновить, читать и удалить. Эти операции инкапсулируют операторы SQL для доступа к отношению Дебетовая Карточ­ка. Обратите внимание, что атрибуты класса разрешается обновлять независимо, поэтому для каждого атрибута имеется своя операция обновить. Вызов любой операции приводит к выполнению некоторого оператора SQL.

Соседние файлы в предмете Системы реального времени