
- •9. Проектирование классов
- •9.1. Проектирование классов, скрывающих информацию
- •9.2. Проектирование операций классов
- •9.3. Классы абстрагирования данных
- •9.4. Классы интерфейса устройства
- •9.5. Классы, зависящие от состояния
- •9.6. Классы, скрывающие алгоритмы
- •9.7. Классы интерфейса пользователя
- •9.8. Классы бизнес-логики
- •9.9. Классы-обертки базы данных
- •9.10. Внутренние программные классы
- •9.11. Применение наследования при проектировании
- •9.12. Примеры наследования
- •9.13. Спецификация интерфейса класса
Какую работу нужно написать?
9.6. Классы, скрывающие алгоритмы
Такие классы скрывают алгоритмы, применяемые в предметной области; они типичны в системах реального времени, а также в научных и инженерных приложениях. Как правило, такой класс скрывает не только алгоритм, но и локальные данные, необходимые для его работы.
Пример скрывающего алгоритм класса – это класс Средняя Скорость (рис.9.6), который скрывает алгоритм вычисления средней скорости автомобиля в системе круиз-контроля и мониторинга. В нем есть операция сброс для обнуления внутренних данных и операция вычислить для расчета средней скорости движения. Обе эти операции вызывают операцию вывести объекта Интерфейс Маршрутного Дисплея, передавая среднюю Скорость в качестве параметра (рис.9.6б). Диаграмма класса изображена на рис.9.6в.
.
Рис.9.6. Пример класса-алгоритма: а – аналитическая модель (диаграмма кооперации); б – проектная модель (диаграмма кооперации); в –проектная модель (диаграмма классов)
9.7. Классы интерфейса пользователя
Класс интерфейса пользователя скрывает от других классов детали человеко-машинного интерфейса. В зависимости от приложения интерфейс пользователя может быть очень простым (например, в виде командной строки) или весьма сложным (графический интерфейс пользователя – ГИП). Чтобы реализовать интерфейс командной строки, достаточно одного класса, а для графического интерфейса требуется, как правило, несколько. Низкоуровневые классы интерфейса пользователя – это элементы управления, находящиеся в библиотеках компонентов: окна, меню, кнопки и диалоги. Высокоуровневые классы пользовательского интерфейса часто составляются из таких классов.
В аналитической модели акцент делается на идентификации составных классов пользовательского интерфейса и сборе информации о том, какие данные пользователь должен вводить, а какие ему надо показать. На этой же стадии можно проектировать выводимые формы. В проектной модели приложения с графическим интерфейсом нужно определить классы для каждой экранной формы В качестве примера рассмотрим класс Интерфейс Клиента (рис.9.7а). Это основной интерфейс клиента банкомата. В классе Интерфейс Клиента есть операции для каждого окна, используемого для диалога с пользователем: вывести ОкноПИН-кода, вывестиОкноСнятияДенёг, вывестиОкноПеревода Денег и вывестиОкноСправки – а также для вывода меню: вывестиМеню. Имеется операция для работы с маленьким окном, предназначенным для вывода приглашений и сообщений пользователю, но не для ввода данных. Параметром такой операции служит идентификатор выводимого сообщения. Каждое окно показывает некоторую информацию, а затем, возможно, ожидает ввода данных, которые возвращаются в виде выходного параметра.
Класс Интерфейс Клиента – это составной класс, включающий несколько низкоуровневых классов, как показано на рис.9.76. В него входят классы для каждого окна, необходимого при организации интерфейса с клиентом: окно Главного Меню, Окно ПИН-кода, Окно Снятия Денег, Окно Перевода Денег, Окно Справки и Окно Приглашения.
Рис.9.7. Пример класса интерфейса пользователя:
а – класс интерфейса пользователя с операциями;
б – структура составного класса пользовательского интерфейса