Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по циклу лабораторных работ Технологии разработки программного обеспечения .doc
Скачиваний:
204
Добавлен:
06.03.2016
Размер:
3.8 Mб
Скачать
    1. Использование шаблонаHighCohesion

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

В качестве примера возьмем процесс выдачи книг и возврата их от студентов. Нам необходимо:

  • отображать список книг выданных студенту;

  • выдавать студенту новые книги;

  • возвращать от студента книги.

Если мы добавим эту функциональность классу TStudentsили классуTBookто тогда мы их нагрузим лишними функциями. Поскольку эти классы могут существовать без этого процесса. Например, есть книги, которые не выдают студентам, и есть студенты, которые не берут книги в библиотеке. Оптимальным решением данной проблемы является созданием нового класса, в функциональность которого входит эти функции. Создадим новый классTStudentBook, в функциональность которого будет входить реализация этих функций. Данные необходимые для процесса выдачи или возврата книг нужно брать у классовTStudentsиTBook. Таким образом, у нас появилось три класса, каждый из которых нагружен только ему присущей функциональностью.

    1. Применение шаблонаController

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

Согласно шаблону Создатель класс TControllerдолжен создавать и уничтожать объекты слоя бизнес-логики. Поэтому необходимо в этом классе создать поля представленные в таблице 7.1.

Таблица 7.45

Поля класса TController

Название

Описание

fStudents: TStudents

Класс по работе со студентами

fBooks: TBook;

Класс по работе с книгами

fStudentBook: TStudentBook

Класс, выдающий и забирающий книги у студентов

Эти классы имеют высокое зацепление согласно шаблону HighCohesionпоскольку каждый класс работает только с одним объектом в БД.

Для обработки входных системных событий необходимо создать методы, каждый из которых будет обрабатывать только одно системное событие (см. Таблица 7.46).

Таблица 7.46

Методы класса TController

Название

Описание

AddStudent (num: integer; family,name,secondname,group: string)

Метод добавляет студента

AddBook (Author,Name: string)

Метод добавляет книгу

AddStudentBook

Метод выдает книгу студенту

UpdateStudent (num: integer; family,name,secondname,group: string)

Метод изменяет выбранного студента

UpdateBook (Author,Name: string)

Метод изменяет выбранную книгу

DeleteStudent

Метод удаляет выбранного студента

DeleteBook

Метод удаляет выбранную книгу

DeleteStudentBook

Метод возвращает книгу от студента

StudentParams:tParams

Функция возвращает параметры текущего студента

BookParams:tParams

Функция возвращает параметры текущей книги

GroupList: TStringList

Функция возвращает список групп студентов

StudentsAfterScroll(DataSet: TDataSet)

Событие происходящее при перемещении по набору данных отображающих студентов

Для обеспечения отображения данных необходимо создать свойства возвращающие ссылки на источники наборов данных (Таблица 7.47).

Таблица 7.47

Свойства TController

Название

Описание

StudentDataSource: TDataSource

Источник данных набора отображающих студентов

BookDataSource: TDataSource

Источник данных набора отображающих книги

StudentBookDataSource: TDataSource

Источник данных отображающий выданные книги

В результате диаграмма класса примет следующий вид (см. Рисунок 7 .44).

Рисунок 7.44 – Диаграмма классов слоя бизнес-логики