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

Глава 11. Интерфейсы, типы и роли

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

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

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

Введение

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

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

Успехи строительной практики не ограничиваются возможностью совершен­ствовать дома после их постройки; существует множество стандартных интерфей­сов, с помощью которых можно составлять здание из готовых компонентов. Напри­мер, имеются стандарты на размеры пиломатериалов, и это облегчает возведении стен, размеры которых кратны стандартным. Есть также стандарты на размеры окон и дверей, а значит, не требуется вручную делать все проемы в стенах. Существуют даже стандарты для электрических и телефонных розеток (хотя в разных странах они различны), что позволяет использовать электрооборудование от разных про­изводителей.

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

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

Почти все современные языки программирования, в том числе Java и CORBA IDL, поддерживают концепцию интерфейсов. Интерфейсы важны не только для отделения спецификации от реализации класса или компонента, но и для внеш­него описания пакета (см. главу 12) или подсистемы (см. главу 31) в случае уве­личения размеров системы.

Графическое представление интерфейсов в языке UML показано на рис. 11.1. Такая нотация позволяет раздельно визуализировать описание абстракции и ее реализацию.

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