Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Термины и понятия

Интерфейсом (Interface) называется набор операций, используемый для специфицирования услуг, предоставляемых классом или компонентом. Типом (Type называют стереотип класса, используемый для определения области значений объектов вместе с применимыми к ним операциями (но не методами). Роль (Role) -это поведение сущности в данном контексте. Графически интерфейс изображает­ся в виде кружочка; в развернутой форме его можно представить как стереотип­ный класс, чтобы раскрыть операции и другие свойства.

Примечание С помощью интерфейсов можно также специфицировать кон­тракт, который обязуется выполнять прецедент (см. главу 16) или подсистема (см. главу 31).

Имена

У любого интерфейса должно быть имя, отличающее его от остальных. Имя интерфейса представляет собой текстовую строку. Взятое само по себе, оно назы­вается простым. Составное имя образуется путем добавления в его начало имени пакета, в который входит данный интерфейс. Имя интерфейса должно быть уни­кальным внутри объемлющего пакета (см. главу 12). При изображении интерфей­са можно ограничиться только его именем, как показано на рис. 11.2.

Применение Имя интерфейса может состоять из любого числа букв, цифр и не­которых знаков препинания (за исключением таких, как двоеточия, которые применяются для отделения имени интерфейса от имени объемлющего пакета). Имя может занимать несколько строк. Обычно для именования интерфейсов используют одно или несколь­ко коротких существительных, взятых из словаря моделируемой системы. Чтобы отличить интерфейс от класса, принято добав­лять к его имени начальную букву I, например IUnknown или ISpelling. Те же правила применяются и к типам. Чтобы отли­чить тип от интерфейса или класса, принято начинать его имя с буквы Т, например TNatural или TCharacter.

Операции

Как уже отмечалось выше, интерфейс - это именованный набор операций (см. главы 4 и 9) для специфицирования сервиса, предоставляемого классом или ком­понентом. В отличие от классов и типов, интерфейсы не описывают структуры

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

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

Примечание С интерфейсом можно ассоциировать и сигналы (см. главу 20).

Отношения

Подобно классам, интерфейсы могут принимать участие в отношениях обобще­ния, ассоциации и зависимости (см. главы 5 и 10). Кроме того, для них определено еще и отношение реализации, представляющее собой семантическое отношение между двумя классификаторами, один из которых определяет ряд обязательств (контракт), а другой обеспечивает их выполнение.

Интерфейс специфицирует контракт класса или компонента, но не наклады­вает никаких ограничений на реализацию. Класс или компонент могут реализо­вывать несколько интерфейсов. При этом они обязуются выполнить все свои кон­тракты, то есть должны содержать методы, корректно реализующие объявленные интерфейсом операции. Точно так же класс или компонент может зависеть от не­скольких интерфейсов. При этом он ожидает, что объявленные контракты будут выполнены каким-то набором реализующих их компонентов. Именно поэтому говорят, что интерфейс представляет собой стыковочный узел в системе. Он опре­деляет условия контракта, после чего обе стороны - клиент и поставщик - могут Действовать независимо друг от друга, полностью полагаясь на взаимные обязательства.

Как видно из рис. 11.4, связь интерфейса с реализующим его элементом можно фактически представить двумя способами. Во-первых, существует простая форма отношения между интерфейсом и его реализацией изображаются кружочком с од­ной стороны класса или компонента. Этот способ удобен, когда требуется показать

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

В обоих случаях класс или компонент, использующий интерфейс, соедини ют с ним отношением зависимости.

Примечание Интерфейсы напоминают абстрактные классы (см. главу 4), в част­ности потому, что ни у тех, ни у других нет непосредственных экземпляров. Но все же между ними имеется достаточно различии, чтобы, считать их отдельными элементами моделирования. У аб­страктного класса могут быть атрибуты, а у интерфейса - нет. Кроме того, интерфейсы пересекают границы модели. Например. один и тот же интерфейс может быть реализован как классом (ло­гическая абстракция), так и компонентом (физическая абстрак­ция, материализующая класс, - см. главу 25).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]