Отношение зависимости между классами, отношение реализации.



Зависимость (dependency) – отношение между классами, при котором изменения в одном классе приводят к изменениям в другом классе (наследование, ассоциация и реализация – частные случаи отношения зависимости, имеющие особое назначение и специальную нотацию).

 Зависимости между классами являются двусторонними: все классы в зависимости равноправны. Это так даже в тех случаях, когда имя зависимости как бы вносит направление в эту зависимость.

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

Стереотипы отношения зависимости:

- <<bind>> – назначение параметров шаблонному классу для получения нового конкретного класса

- <<call>> – метод одного класса вызывает операцию другого класса

- <<create>> – один класс создает экземпляр другого класса

- <<permit>> или <<friend>> – разрешение одному классу использовать реализацию другого класса

- <<use>> - общее обозначение

Понятие зависимости перенесено в объектно-ориентированную технологию проектирования программных систем из технологии проектирования (и моделирования) баз данных, где зависимости используются с давних пор. Языки программирования, как правило, не поддерживают явного описания зависимостей. Тем не менее описание зависимостей очень полезно при разработке программных систем.

Реализация (implementation) – отношение между интерфейсом и классом, его реализующим. Изображается реализация в виде пунктирной линии с большой незакрашенной стрелкой, указывающей на интерфейс, который определяет класс (каноническая форма) или в виде кружочка-интерфейса, соединенного с классом (свернутая форма).

Реализации настолько отличаются от зависимостей, обобщений и ассоциаций, что выделяются в отдельный тип отношений. Семантически реализация - это нечто среднее между обобщением и зависимостью, и нотация для нее несет в себе черты того и другого.

Чаще всего реализации используют для определения отношений между интерфейсом и классом или компонентом, который предоставляет объявленные в интерфейсе операции или услуга.

Пример: реализация интерфейса Список (имеющего абстрактные методы вставки, удаления) классами Связный и Двусвязный список (различные поля и реализация методов)

Отношение использования между классами.

Отношение использования между классами - отношение между классами, при котором один класс использует описание другого класса. Фактически при этом отношении один класс «знает» о существовании второго и «знает», по крайней мере, его интерфейс.

Возникает в случае: 1) методу данного класса передается объект используемого класса в качестве параметра; 2) если поле данного класса является объектом используемого класса (или указа­телем); 3) в методе данного класса создаются локальные объекты используемого класса; 4) метод данного класса выполняет дейст­вия над глобальным объектом используемого класса. Измене­ния в классах связанных между собой ведут к изменениям в других классах.

Пример.

class TemperatureController {

public:

TemperatureController(Location);

~TemperatureController();

void process(const TemperatureRamp&);

Minute schedule(const TemperatureRamp&) const;

private:

Heater h;

};

Класс TemperatureRamp упомянут как часть сигнатуры функции-члена process; это дает нам основания сказать, что класс TemperatureController пользуется услугами класса TemperatureRamp.

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

Рис. Отношение использования.

 


Дата добавления: 2018-06-01; просмотров: 302; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!