Объектная декомпозиция.
При использовании ООП решение задачи представляется в виде результата взаимодействия отдельных функциональных элементов (объектов) некоторой системы, имитирующей процессы, происходящие в предметной области задач.
Объектная декомпозиция – процесс представления предметной области задачи в виде совокупности объектов, обменивающихся сообщениями.
Черновой план процесса объектной декомпозиции:
Ø Выделить классы и объекты
Ø Определить, что они означают
Ø Выявить связь между классами и объектами
Ø Описать интерфейс и реализацию
Пример. Простейший графический редактор
o Рисование круга и квадрата
o Возможность изменения цвета, размера и координат центра.
активизировать
Круг ß (нарисовать) управляющий блок à (нарисовать) квадрат
(изменить цвет) (изменить цвет)
(изменить размер) (изменить размер)
( Изменить координаты) (изменить координаты)
Пример. Адресная книга
Требуется написать программу, в которой можно:
o Открывать адресную книгу
o Добавлять записи о контактах
o Вести поиск записей
Составим диаграмму состояний интерфейса
Меню
Режим открытия книги режим добавления записей режим поиска записей
«некорректное имя файла» нет информации о контакте
Диаграмма объектов
Активизировать
Меню
Активизировать активизировать активизировать
Форма открытия файла форма «добавления записей» Форма «поиск записей»
Поиск записей
Активизировать Активизировать
Сообщение «некорректное имя файла» Файл Сообщение «нет информации о контакте»
Объектная декомпозиция может быть многоуровневой.
Пример. Объектная декомпозиция меню, форма, файл.
Пример: Фермер
Управление
Фермер
Корова 3 Овца 3 курица 3
Корова 2 Овца 2 курица 2
Корова 1 Овца 1 курица 3
Алгоритм построения диаграммы классов:
Ø Составить варианты использования
Ø Выделить понятия-кандидаты на роль классов
Ø Определить, какие из кандидатов действительно являются классами
Ø Описать взаимосвязи классов
Ø Установить атрибуты классов.
Варианты использования:
Для определения понятий-кандидатов на роли классов составляют варианты использования – описания того, каким образом разрабатываемая система может применятся пользователем.
Понятие-кандидат не подходит на роль класса, если:
· Понятию соответствуют единственное число, переменная или простая структура в программе
· Понятие строго соответствует более сложному понятию, например, входя в его состав.
В этом случае понятие скорее всего является атрибутом другого класса.
Пример:
o понятие «возраст» описывается одной переменной и является атрибутом класса «студент»
o Можно ли понять «дисциплина» назначить атрибутом класса преподаватель? (в целом может быть отдельным классом))
Обозначение классов:
Основным элементом диаграммы классов являются классы:
имя класса
Имя класса Атрибуты
Методы
Типы связей между классами:
· Ассоциация
· Обобщение (наследие)
· Агрегация (композиция)
· Использование
Ассоциация
ü Означает наличие сематической связи между 2мя классами.
ü Остальные отношения уточняют тип связи
ü Ассоциации могут иметь имя и направление, объектом ассоциации могут быть составлены роли.
ü Для ассоциации можно определить характеристики множественности, определяющие, сколько объектов может участвовать в одной связи с каждой стороны.
ü Обозначения
* | От 0 до бесконечности |
<целое>..* | От заданного числа до бесконечности |
<целое> | Точно определенное количество объектов |
<целое1>, <целое2> | Несколько вариантов точного количества |
<целое1>..<целое2> | Диапазон объектов |
Обобщение (наследование)
· Обобщение - это отношение между понятиями вида «общее-частное»
· Обобщающее понятие называется супертипом (родителем, предком)
Агрегация (композиция)
Ø Агрегация – отношение между понятиями вида «целое-часть» (факультетß кафедра)
Использование
ü Использование – отношение между понятиями вида «клиент-сервер» (студент 0---- отдел кадров)