Объектная декомпозиция.

При использовании ООП решение задачи представляется в виде результата взаимодействия отдельных функциональных элементов (объектов) некоторой системы, имитирующей процессы, происходящие в предметной области задач.

Объектная декомпозиция – процесс представления предметной области задачи в виде совокупности объектов, обменивающихся сообщениями.

Черновой план процесса объектной декомпозиции:

Ø Выделить классы и объекты

Ø Определить, что они означают

Ø Выявить связь между классами и объектами

Ø Описать интерфейс и реализацию

Пример. Простейший графический редактор

o Рисование круга и квадрата

o Возможность изменения цвета, размера и координат центра.

 

активизировать

Круг ß (нарисовать) управляющий блок à (нарисовать) квадрат

(изменить цвет) (изменить цвет)

(изменить размер) (изменить размер)

( Изменить координаты) (изменить координаты)

 

Пример. Адресная книга

Требуется написать программу, в которой можно:

o Открывать адресную книгу

o Добавлять записи о контактах

o Вести поиск записей

Составим диаграмму состояний интерфейса

 

 

 

 

 

 


Меню

 

 

 


Режим открытия книги режим добавления записей режим поиска записей

 

 

 


«некорректное имя файла» нет информации о контакте

 

Диаграмма объектов

Активизировать

 

Меню

 


Активизировать активизировать активизировать

Форма открытия файла форма «добавления записей» Форма «поиск записей»

 


Поиск записей

Активизировать Активизировать

Сообщение «некорректное имя файла» Файл Сообщение «нет информации о контакте»

 

Объектная декомпозиция может быть многоуровневой.

Пример. Объектная декомпозиция меню, форма, файл.

Пример: Фермер

Управление

 

 


Фермер

 

 


Корова 3 Овца 3 курица 3

Корова 2 Овца 2 курица 2

Корова 1 Овца 1 курица 3

 

Алгоритм построения диаграммы классов:

Ø Составить варианты использования

Ø Выделить понятия-кандидаты на роль классов

Ø Определить, какие из кандидатов действительно являются классами

Ø Описать взаимосвязи классов

Ø Установить атрибуты классов.

Варианты использования:

Для определения понятий-кандидатов на роли классов составляют варианты использования – описания того, каким образом разрабатываемая система может применятся пользователем.

Понятие-кандидат не подходит на роль класса, если:

· Понятию соответствуют единственное число, переменная или простая структура в программе

· Понятие строго соответствует более сложному понятию, например, входя в его состав.

В этом случае понятие скорее всего является атрибутом другого класса.

Пример:

o понятие «возраст» описывается одной переменной и является атрибутом класса «студент»

o Можно ли понять «дисциплина» назначить атрибутом класса преподаватель? (в целом может быть отдельным классом))

Обозначение классов:

Основным элементом диаграммы классов являются классы:

имя класса

Имя класса Атрибуты

Методы

Типы связей между классами:

· Ассоциация

· Обобщение (наследие)

· Агрегация (композиция)

· Использование

Ассоциация

ü Означает наличие сематической связи между 2мя классами.

ü Остальные отношения уточняют тип связи

ü Ассоциации могут иметь имя и направление, объектом ассоциации могут быть составлены роли.

ü Для ассоциации можно определить характеристики множественности, определяющие, сколько объектов может участвовать в одной связи с каждой стороны.

ü Обозначения

* От 0 до бесконечности
<целое>..* От заданного числа до бесконечности
<целое> Точно определенное количество объектов
<целое1>, <целое2> Несколько вариантов точного количества
<целое1>..<целое2> Диапазон объектов

 

Обобщение (наследование)

· Обобщение - это отношение между понятиями вида «общее-частное»

· Обобщающее понятие называется супертипом (родителем, предком)

Агрегация (композиция)

Ø Агрегация – отношение между понятиями вида «целое-часть» (факультетß кафедра)

Использование

ü Использование – отношение между понятиями вида «клиент-сервер» (студент 0---- отдел кадров)