- •Теоретические основы объектно-ориентированного программирования
- •Объектная декомпозиция
- •Диаграмма обслуживания автомашин на бензоколонке
- •Диаграмма объектов имитационной модели бензоколонки
- •Объектная декомпозиция Блока колонок: 1 - когда освободится колонка? 3 - колонка свободна? 2 - освободить колонку 4 - занять колонку
- •Диаграмма объектов графического редактора
- •Диаграмма состояний интерфейса пользователя программы «Записная книжка»
- •Диаграмма объектов предметной области программы «Записная книжка»
- •Обозначение ассоциации: а - с указанием имени ассоциации и ее направления; б - с указанием имен ролей; в - с указанием множественности
- •Контекстная диаграмма классов программы «Записная книжка»
- •Объекты и сообщения
- •Типы отношений между объектами
- •Соответствие объекта-абстракции классу и объектам-переменным
- •Основные средства разработки классов
- •Иерархии классов при различных видах наследования
- •Иерархия классов Окно и Окно_меняющее_цвет
- •Иерархия классов Окно и Окно_с_текстом
- •Иерархия классов при сложном полиморфизме
- •Необходимость позднего связывания
- •Реализация механизма позднего связывания
- •Необходимость явного указания типа объекта, адресуемого указателем родительского класса
- •Вид окна сообщения
- •Структура полей класса Сообщение
- •Дополнительные средства и приемы разработки классов
- •Организация стека вызовов
- •Определение класса
- •Организация списка объектов с использованием статических компонентов класса
- •Конструкторы и деструкторы
- •Наследование
- •Иерархия классов Целое число - Вещественное число
- •Диаграмма классов с наследованием от двух классов и объектным полем
- •Иерархия с многократным наследованием
- •Исключения
- •1. Динамическая проверка типа объекта:
- •2. Динамическое переопределение типа объекта:
- •3. Динамическое определение типа объекта:
-
Диаграмма объектов графического редактора
Фигуры получают следующие сообщения: «Нарисовать», «Изменить цвет контура», «Изменить размер», «Изменить координаты». Все эти сообщения инициируются Монитором в соответствии с командой пользователя. Получив от пользователя команду «Завершить», Монитор прекращает выполнение программы.
На первый взгляд объектный подход по сравнению с процедурным кажется искусственным, особенно тем программистам, которые имеют большой опыт программирования с использованием процедурного и структурного подходов, но те преимущества, которые мы при этом получаем, безусловно, окупают затраченные усилия.
Следующий пример возьмем посложнее. Попробуем выполнить объектную декомпозицию для программы «Записная книжка».
-
Объектная декомпозиция (программа «Записная книжка», вариант 1). Как уже констатировалось ранее, работу с программами типа «Записной книжки» пользователю удобнее осуществлять через меню. Значит, при запуске программы на экране должно появиться меню, содержащее набор возможных операций. В зависимости от выбора пользователя далее будут активизироваться части программы, ответственные за открытие «книжки», добавление записей или поиск записей.
-
Диаграмма состояний интерфейса пользователя программы «Записная книжка»
На Рис. 1.6. представлена диаграмма состояний интерфейса в процессе работы программы, учитывающая, что режим меню активизирует в процессе работы с программой режимы выполнения требуемых операций.
На этом этапе анализа мы уже можем выделить четыре части программы, которые обеспечивают функционирование программы в различных режимах: Меню, Открытие книжки, Ввод записей, Поиск записей. Эти части сравнительно независимы, обладают состоянием и поведением, а потому могут рассматриваться как объекты предметной области.
Дальнейший анализ показывает, что необходимо предусмотреть еще два состояния интерфейса - состояния вывода сообщений пользователю. Эти сообщения будут появляться на экране при обнаружении несоответствий в процессе работы. Сообщение «Некорректное имя файла» будет активизироваться в режиме открытия книжки при вводе имени файла, недопустимого в конкретной операционной системе, а сообщение «Нет информации об абоненте» - в режиме поиска записей при отсутствии записей с указанными именем и/или фамилией. Части программы, ответственные за вывод этих сообщений, также могут представляться в программе объектами.
Объекты Меню, Открытие книжки, Ввод записей, Поиск записей и объекты сообщений в процессе работы должны получать информацию от пользователя и выдавать ему результаты работы, и соответственно должны иметь некоторое экранное представление. Совокупность таких экранных представлений (форм) образует объектный интерфейс с пользователем.
Помимо объектов интерфейса программа должна содержать еще, по крайней мере, один объект - Файл записей, используемый для хранения введенной информации. Этот объект должен получать от Открытия, Ввода и Поиска сообщения-команды, соответственно, открытия файла, добавления информации и поиска. Причем команда открытия должна сопровождаться именем файла, команда добавления информации - идентификационным заголовком и телефоном, а команда поиска - идентификационным заголовком.