Вопрос 26 Отношения между классами: ассоциация, агрегация и композиция. 5-7 Отношения между типами и особенности разработки
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Отношения между классами

n Агрегация

n Композиция

n Ассоциация

 

Ассоциация

 

Особенности

n Семантическая связь классов

n Мощность

l Один к одному

l Один ко многим

l Многие к одному

l Многие ко многим

 

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

n У класса есть поле типа другого класса

n Мощность

l «К одному» – поле имеет просто тип класса

l «Ко многим» – поле имеет тип массива или коллекции класса

 

Агрегация

Особенности

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

n Образуется отношение «целое-часть» между объектами

n Агрегат (контейнер) – большой внешний объект

n Строгая направленность

 

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

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

n Ссылки между объектами не могут образовывать циклы

 

Композиция

 

Особенности

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

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

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

 

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

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

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

 

Вопрос 27 Дизайн в ООП и его характеристики. 9-11, 18-19 Отношения между типами и особенности разработки

 

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

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

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

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

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

n Проблема

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

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

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

 

Object-oriented design

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

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

n Инкапсуляция разделяет ответственности (responsibility) между классами

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

 

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

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

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

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

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

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

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

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

 

Плохой дизайн

n Высокая связанность

l Эффект кругов по воде (или снежной лавины) при внесении изменений

l Сборка модулей требует большего времени и/или затрат из-за связей между модулями

l Конкретный модуль может быть тяжело тестировать и/или повторно использовать

n Слабая сфокусированность

l Сложности с пониманием модулей

l Сложности с поддержкой системы, т.к. логически согласованные изменения могут потребовать изменения многих модулей

l Сложности с повторным использованием модуля, поскольку большинству приложений именно такой модуль не нужен

 

Хороший дизайн       

Loose coupling

High cohesion

n Правда, эти требования друг другу противоречат

n И следует это из самой природы ООП

n Так что придётся искать компромисс

Вопрос 28 Связанность в ООП и её виды. 12-15

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

 

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

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

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

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

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

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

 

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

 

n Связанность через внешнее
(external coupling)

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

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

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

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

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

 


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

 

n Связанность по структурированным данным
(data-structured coupling, stamp coupling)

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

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

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

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

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

 


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

 

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

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

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

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

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

 

 


Дата: 2019-07-30, просмотров: 235.