Цель работы:
– научиться проектировать архитектуру клиент-серверных приложений;
– научиться разрабатывать системы на примере трёхслойной архитектуры с использованием объектно-реляционного отображения;
– получить навыки работы в Borland Developer Studio 2006;
Введение
6.1.1. Трёхслойная архитектура на базе объектно-реляционного отображения с типизированными объектами
Трехслойная архитектура реализуется на стороне клиента и имеет следующие слои: графический пользовательский интерфейс; бизнес-логика, объектно-реляционное отображение (Рисунок 6.1). Взаимодействие слоёв осуществляется посредством интерфейса и только в одностороннем порядке, т.е. классы верхнего слоя могут посылать сообщения классам нижнего слоя, но не наоборот.
Рисунок 6.1 – Трехслойная архитектура
В слое графического пользовательского интерфейса содержаться классы интерфейсных объектов и классы управления интерфейсом пользователя. В слое бизнес-логики содержаться классы, управляющие логикой приложения и реализующие всю функциональность, связанную с обработкой данных и вычислениями. В слое объектно-реляционного отображения находятся классы, выполняющие функции преобразования данных из реляционного вида в объектный и наоборот, а также функции по работе с реляционной базой данных.
Понятие «типизированные объекты» связано со слоем графического интерфейса. Классы этого слоя напрямую могут работать с объектами предметной области, ссылки на которые они получают от классов бизнес-логики. В интерфейсе таким образом может выполняться привязка компонентов формы к атрибутам класса предметной области.
Бизнес-логика
Данный слой должен содержать классы, реализующие функциональность по обработке данных и вычислениям. Ниже приведён пример базового (основного) класса, который может создаваться в этом слое.
Назовем этот класс «TDataPrepare». Он должен быть порожден от класса «TDBObject», поскольку должен уметь работать с соединениями и транзакциями. Атрибуты класса представлены в таблице 6.1.
Таблица 6.1
Поля класса TDataPrepare
Название | Описание |
fExecute: TExecuteObject | Объект, используемый для выполнения запросов, не возвращающих набор данных. |
fSelect: TExecuteObject; | Объект, используемый для выполнения запросов, возвращающих набор данных. |
Свойства класса представлены в таблице 6.2.
Таблица 6.2
Свойства класса TDataPrepare
Название | Описание |
DataSource: TDataSource | Источник данных, используемый для отображения списка объектов. |
id: integer | Идентификатор объекта (совпадает с Id записи в таблице базы данных). Используется для хранения идентификатора текущего объекта. |
Виртуальные методы класса (Таблица 6.3).
Таблица 6.3
Методы класса TDataPrepare
Название | Описание |
Add() | Добавляет объект в БД |
Update() | Изменяет атрибуты объекта в БД |
Delete() | Удаляет объект из БД |
Select() | Выбирает список объектов для отображения |
LoadCurrent() | Загружает в поля класса атрибуты текущего объекта |
Refresh() | Обновляет список объектов |
Create(Connection: TConnection; Transaction: TTransactionObject=nil) | Конструктор класса |