Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции Java / 03. Типы, их отношения и особенности разработки.pptx

.pdf
Скачиваний:
131
Добавлен:
16.03.2015
Размер:
168.74 Кб
Скачать

Композиция

Особенности

nМожно считать частным случаем агрегации

nВремя жизни объектовчастей определяется объектом-контейнером и не может превышать время жизни объектаконтейнера

nОбъект-часть не существует самостоятельно

Реализация на практике

nВсё почти так же, как в случае агрегации

nСоздание и уничтожение объектов-частей происходит только в ходе выполнения операций объекта-контейнера

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

21

Метакласс

Особенности

nМетакласс – это класс, объектами которого являются классы

nКорневой метакласс – единственный объект, являющийся своим собственным классом

Реализация на практике

nОчень сильно зависит от языка

nВ некоторых языках существует только один метакласс – корневой

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

22

Ещё одна проблема разработки программ в ООП

n Этапы разработки (условно)

Определение модели данных

Определение алгоритма в виде последовательности операций

Реализация на языке программирования

n Проблема

Структурной единицей программы является класс

Из-за инкапсуляции модель данных связана с алгоритмом

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

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

23

Object-oriented design

nОбъектно-ориентированное проектирование

– планирование системы как совокупности взаимодействующих объектов с целью решения программной задачи

nДля решения задачи необходимо разделить её на части и выбрать ответственных за них

nИнкапсуляция разделяет ответственности

(responsibility) между классами

nРезультат проектирования – распределение ответственностей и активностей по классам

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

24

Характеристики дизайна

nCoupling

(связанность, зависимость)

Характеристика взаимосвязи модулей

Степень того, насколько модуль зависит от других модулей

Мера ресурсов, требующихся при внесении изменений

nCohesion

(связность, сцепленность, сфокусированность, сосредоточенность)

Степень того, насколько модуль сфокусирован на решение одной задачи

Степень того, насколько элементы модуля гармонизированы, подходят друг другу

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

25

Виды связанности

n Связанность содержимого (content coupling)

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

Изменение работы второго модуля приведёт к переписыванию первого

n Связность через общее (common coupling)

Два модуля работают с общими данными (например, глобальной переменной)

Изменение разделяемого ресурса приведёт к изменению всех работающих с ним модулей

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

26

Виды связанности

n Связанность через внешнее

(external coupling)

Два модуля используют навязанный извне формат данных, протокол связи и т.д.

Обычно возникает из-за внешних сущностей (инструментов, устройств и т.д.)

n Связанность по управлению (control coupling)

Один модуль управляет поведением другого

Присутствует передача информации о том, что и как делать

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

27

Виды связанности

nСвязанность по структурированным данным

(data-structured coupling, stamp coupling)

Модули используют одну и ту же структуру, но каждый использует только её часть (части могут и не совпадать)

Изменение структуры может привести к изменению модуля, который изменённую часть даже не использует

n Связанность через данные (data coupling)

Модули совместно используют данные, например, через параметры

Элементарные фрагменты маленькие и только они используются модулями совместно

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

28

Виды связанности

n Связанность по сообщениям

(message coupling)

Модули общаются только через передачу параметров или сообщений

Состояние децентрализовано

n Отсутствие связанности (no coupling)

Модули вообще никак не взаимодействуют

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

29

Виды сфокусированности

n Случайная (coincidental cohesion)

Части модуля сгруппированы «от фонаря»

Единственное, что их объединяет – сам модуль

n Логическая (logical cohesion)

Части модуля логически относятся к одной проблеме При этом части могут различаться по своей природе

n ВременнАя (temporal cohesion)

Части модуля обычно используются в программе в одно время, рядом

n Процедурная (procedural cohesion)

Части модуля всегда используются в определённом порядке

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

30