- •Лабораторная работа по uml n2 «Работа со связями»
- •1. Ассоциации
- •2. Ограничения ассоциаций
- •В этом примере ограничение ассоциации Обслуживает указывает на то, что БанковскийСлужащий обслуживает клиентов в порядке очереди
- •3. Классы ассоциаций
- •4. Связи
- •5. Кратность
- •8. Наследование и обобщение
- •6. Квалификатор ассоциации
- •7. Рефлексивные ассоциации
- •9. Изучение наследования
- •10. Абстрактные классы
- •11. Зависимости
- •12. Объекты-агрегаты
- •17. Ограничения агрегаций
- •18. Композитные объекты
- •19. Контексты
- •20. Интерфейсы и реализации
- •Класс связан с интерфейсом отношением реализации, которое обозначается пунктирной линией с незакрашенным треугольником, примыкающим к интерфейсу и указывающим на него
- •21. Области видимости
- •Общедоступные и защищенные операции для автомобиля
- •22. Статические и динамические классы
- •Вопросы и ответы
- •Задание
20. Интерфейсы и реализации
После создания нескольких классов можно обнаружить, что они не связаны с отдельным родителем, но их поведение может характеризоваться некоторыми одинаковыми операциями с одинаковыми сигнатурами. Можно запрограммировать эти операции для одного из классов и повторно использовать этот код для других. Можно также разработать набор операций для классов в одной системе и повторно использовать их для классов другой системы.
В любом случае, можно выделить набор повторно используемых операций. Это осуществляют с помощью специальной конструкции UML — интерфейса, представляющего собой набор операций, которые задают некоторые аспекты поведения класса и представляют его для других классов.
Рассмотрим пример, проясняющий концепцию интерфейса. Клавиатура, которая используется для обмена информацией с компьютером, является повторно используемым интерфейсом. Ее операции нажатия клавиш позаимствованы от печатающей машинки. Размещение клавиш точно соответствует прототипу, но главное — из одной системы в другую перенесена операция нажатия клавиши. Другие операции интерфейса — переключение регистра, фиксация регистра прописных букв и табуляция — тоже перенесены с печатающей машинки.
Конечно, клавиатура компьютера обеспечивает выполнение и других операций: на ней имеются управляющие клавиши и др. Следовательно, интерфейс может задавать некий базовый набор операций класса, но не обязательно исчерпывающий.
Изображение интерфейса аналогично изображению класса — он тоже представляется прямоугольником. Отличие состоит в том, что интерфейс как набор операций не имеет атрибутов. В то же время, из изображения класса можно исключать атрибуты. Как же безошибочно отличить интерфейс от класса, у которого просто не показаны атрибуты? Во-первых, можно использовать конструкцию стереотипа и поместить надпись «интерфейс» над именем интерфейса. Во-вторых, имя любого интерфейса можно начинать с буквы "I".
Клавиатура компьютера частично "реализует" поведение пишущей машинки. Соответственно, взаимосвязь между классом и интерфейсом называется реализацией. Она изображается пунктирной линией с полым треугольником, примыкающим к интерфейсу и указывающим на него. На рис. 21 показано изображение интерфейса.
Рис. 21. Интерфейс — это набор операции, реализуемых классом.
Класс связан с интерфейсом отношением реализации, которое обозначается пунктирной линией с незакрашенным треугольником, примыкающим к интерфейсу и указывающим на него
Существует еще один способ представления класса и интерфейса — с помощью небольшого кружочка, соединенного линией с классом, как показано на рис. 22.
Рис. 22. Редко используемый способ изображения класса, реализующего интерфейс
Отметим сходство символов реализации и наследования. Между ними есть только одно отличие: реализация представляется пунктирной линией, а наследование — сплошной. Условное обозначение подчеркивает сходство и отличие между двумя типами взаимосвязи. Наследование можно рассматривать как взаимосвязь между родителем и ребенком. Родитель передает физические атрибуты (цвет глаз, цвет волос и т.д.) ребенку, поведение которого тоже совпадает с родительским. Реализация напоминает взаимосвязь учителя и ребенка: учитель не передает физические атрибуты ребенку, но ребенок перенимает поведение и образ действий от учителя.
Класс может реализовывать несколько интерфейсов, а интерфейс, в свою очередь, может быть реализован несколькими классами.
