Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.



interface specifier (спецификатор интерфейса)

Спецификация поведения, необходимого классу, участвующему и ассоциации для удовлетворения цели этой ассоциации. Состоит из ссылки на интерфейс, класс или другой классификатор, описывающий нужное поведение.
См. association role; rolename; type.

Семантика

Зачастую, класс, участвующий в какой-либо ассоциации, имеет большую функциональность, чем необходимо для нее. Например, есть классы, участвующие в нескольких различных ассоциациях. В целом, поведение таких классов должно давать возможность поддерживать все эти ассоциации. Иногда требуется более точно определить функциональность, необходимую данной ассоциации. Для этой цели служит спецификатор интерфейса - классификатор, прикрепленный к полюсу ассоциации, который указывает на функциональность, необходимую для данной ассоциации. При этом использование этого класса в других ассоциациях во внимание не принимается.
Спецификатор интерфейса не является необходимым элементом. Во многих случаях класс, участвующий в ассоциации, имеет только ту функциональность, которая для нее необходима. Если спецификатор интерфейса отсутствует, то при помощи ассоциации, в которой он участвует, можно получить полный доступ к функциональности класса.
Спецификатор интерфейса может представлять собой множество классификаторов, каждый из которых указывает на поведение, которое должен поддерживать целевой класс. Целевой класс должен поддерживать как минимум все эти виды поведения. Однако он может делать и не только это.

Нотация

Для обозначения спецификатора интерфейса вместо простого имени роли используется синтаксис
имя роли : имя интерфейсасписок
Имя интерфейса здесь представляет собой имя интерфейса или другого классификатора. Если существует несколько спецификаторов, то их имена даются в виде списка, элементы которого разделяются запятыми.

Пример

На рис. 114 изображено, как класс Server (Сервер) помещает запросы в класс Array (Массив). Для этого ему необходима только функциональность класса Queue (Очередь). Произвольной выборкой информации из массива он не занимается. Реальный класс Array отвечает требованиям спецификатора интерфейса Queue, так как массив включает в себя функциональность очереди. При этом у класса Monitor (Монитор) есть класс Array, с помощью которого он изображает статус запросов. Класс Monitor использует всю функциональность класса Array,

Рис. 114. Спецификатор интерфейса

Обсуждение

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

Алфавитный указатель