2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 32
Текст из файла (страница 32)
Изображается пунктирной линией с большойнезакрашенной стрелкой, указывающей на классификатор, который специфицирует контракт.Реализация существенно отличается от связей зависимости,обобщения и ассоциации, а потому трактуется как отдельный типсвязи. Семантически она являет собой нечто среднее между зависимостью и обобщением, и ее нотация представляет собой сочетаниенотаций зависимости и обобщения. Реализацию используют в двухслучаях: в контексте интерфейсов и в контексте коопераций.В основном вы будете применять реализацию для описания связимежду интерфейсом и классом (или же компонентом, который предоставляет операцию либо сервис для него).
Интерфейс – это наборопераций, используемых для спецификации сервиса класса или компонента. Таким образом, интерфейс описывает контракт, которыйкласс или компонент обязаны исполнять. Интерфейс может бытьреализован многими такими классами или компонентами, и напротив,класс или компонент может реализовывать множество интерфейсов.Расширенные связи164Типичные приемы моделированияВозможно, самое интересное в интерфейсах то, что они позволяют вам отделить спецификацию контракта (то есть сам интерфейс)от его реализации классом или компонентом. Более того, интерфейсы связывают логическую и физическую части архитектуры системы. Например, как показано на рис. 10.8, класс AccountBusinessRules(БизнесПравилаБанковскогоСчета) в системе ввода заказов в представлении дизайна системы может реализовывать такой интерфейс,как IruleAgent (IАгентПравила).
Тот же самый интерфейс можетбыть реализован компонентом (в данном случае – acctrule.dll)в представлении реализации системы.Отметим, что вы можете представить реализацию двумя способами: в канонической форме (применяя стереотип interface и пунктирную линию с большой незакрашенной стрелкой) или в сокращенной форме (используя нотацию «леденца» (lollipop notation)для предоставляемого интерфейса).предоставляемый интерфейсРис.
10.8. Реализация интерфейсаВариантыиспользования обсуждаютсяв главе 17.На заметку. Когда класс или компонент реализует интерфейс, это означает, что клиенты могут полагаться на данныйкласс/компонент в том, что он позаботится о поведении, специфицированном в интерфейсе. То есть класс или компонентреализует все операции интерфейса, будет отвечать на всеего сигналы и во всем следовать протоколу, установленномуинтерфейсом для клиентов, которые используют эти операции или посылают эти сигналы.Типичные приемы моделированияМоделирование систем связейПри моделировании словаря сложной системы вы можете столкнуться с дюжинами, если не с сотнями и тысячами классов, интерфейсов, компонентов, узлов и вариантов использования.
Трудноустановить четкие границы между всеми этими абстракциями. Ещесложнее описать мириады связей между ними. Это потребует от вассбалансированного распределения обязанностей в системе в целом,с применением индивидуальных абстракций, которые обладают высокой согласованностью, выразительностью и слабой связностью.Когда вы моделируете эти системы связей, пользуйтесь следующими рекомендациями: не начинайте этот процесс в отрыве от остальных.
ПримеВариантыняйте варианты использования и сценарии для исследоваиспользования связей среди множества абстракций;ния обсужвообще, начинайте моделирование с реально существующихдаютсяструктурных связей. Это дает статическое представление о сисв главе 17.теме, в достаточной мере ее проясняя; далее идентифицируйте возможности связей обобщения/Пять предспециализации.
Осторожно применяйте множественное наставленийследование;архитекту только по завершении предыдущих действий обратите вниры обсужмание на зависимости. Обычно они представляют более тондаютсякую форму семантических связей. описывая каждый вид связей, начинайте с его базовой форв главе 2.мы и добавляйте расширенные средства, только если без нихТехнологияне обойтись для выражения ваших намерений;Rational Uni помните, что не обязательно и даже нежелательно демонстриfied Processровать все существующие связи в наборе абстракций на единсописываетсятвенной диаграмме или в одном представлении. Вместо этогов приложевыстройте связи внутри проектируемой системы, показываянии 2.Моделирование словарясистемыи распределения обязанностейв системеобсуждается в главе 4.«interface»Реализацию следует применять также для изображения связимежду вариантом использования и кооперацией, которая его реализует (см.
рис. 10.9). В этом случае почти всегда рисуется пунктирная линия со стрелкой.Рис. 10.9. Реализация варианта использования165Расширенные связи166их в разных ее представлениях. Наборы связей, которые могутвызвать особый интерес, выносите в отдельные диаграммы.Ключ к успешному моделированию сложных систем связейлежит в пошаговом подходе. Занимайтесь построением связей помере того, как усложняете структуру системной архитектуры. Упрощайте эти отношения, исследуя альтернативы общепринятым механизмам. В процессе разработки оценивайте связи между ключевыми абстракциями вашей системы в каждой версии.Глава 11. Интерфейсы, типы и ролиНа заметку. На практике (особенно если вы следуете правилам пошагового и итерационного процесса разработки)связи в ваших моделях будут зависеть от решений, принятыхразработчиком моделей, а также от обратного проектирования вашей реализации.В этой главе:Советы и подсказкиКогда вы моделируете расширенные связи в UML, помнитео том, что вам предоставлен широкий выбор строительных блоков, –от простых ассоциаций до более детализированных свойств навигации, квалификации, агрегации и т.п.
Вы должны выбирать такиесвязи и их детали, которые наилучшим образом подходят для ваших абстракций. Хорошо структурированная связь: раскрывает только те средства, которые необходимо использовать клиентам, и скрывает остальные; недвусмысленна по назначению и семантике; не настолько конкретизирована, чтобы ограничить степеньсвободы в ее реализации; не настолько абстрактна, чтобы допустить неоднозначноетолкование.Когда вы изображаете связь в UML: показывайте только те свойства связи, которые важны дляпонимания абстракции в ее контексте; выбирайте версию состереотипом, наилучшим образом выражающую назначениесвязи визуально.Интерфейсы, типы, роли и реализацияМоделирование соединений в системеМоделирование статических и динамических типовОбеспечение понятности и доступности интерфейсовИнтерфейсы очерчивают границу между выражением того, что делает абстракция, и реализацией того, как она это делает.
Интерфейс –это набор операций, применяемый для описания сервиса классаили компонента.Интерфейсы используются для визуализации, специфицирования, конструирования и документирования соединений внутрисистемы. Типы и роли представляют механизм моделирования статического и динамического согласования абстракции с интерфейсом в определенном контексте.Хорошо структурированный интерфейс представляет четкоеразделение внешнего и внутреннего представлений абстракции,обеспечивая понятность и доступность без необходимости погружаться в детали его реализации.ВведениеПроектированиена примерестроительствадома обсуждаетсяв главе 1.Не слишком разумно проектировать дом так, чтобы всякий раз,когда вы захотите перекрасить стены, потребовалось бы разрушатьфундамент. И вряд ли вы захотите жить в доме, где для замены светильника пришлось бы менять всю электропроводку.
Домовладелецне придет в восторг от необходимости замены всех электрическихи телефонных розеток при каждой смене квартиросъемщика.Столетия строительного опыта позволили выработать множество прагматичных конструктивных приемов, позволяющих строителям избежать этих – иногда очевидных, иногда не слишком очевидных – проблем, возникающих в процессе строительства и ремонта.В терминах программного обеспечения мы назовем это дизайном с четким разделением составляющих компонентов. Например,168Каркасы(frameworks)обсуждаются в главе 29.Классыобсуждаютсяв главах 4 и 9,компоненты –в главе 15.Пакетыобсуждаютсявглаве 12, подсистемы –в главе 32.Компонентыобсуждаются в главе 15.Интерфейсы, типы и ролив хорошо структурированном доме внешний вид фасада всей конструкции можно изменить или заменить, не заботясь об остальнойчасти дома. Аналогичным образом смена меблировки не должна глобально влиять на интерьер. Коммуникации, проложенныев стенах для электроF, теплоF и водоснабжения, а также канализации, не получится провести заново без особых трудозатрат, но всеже вам не придется обращаться с этой целью в домостроительныйкомбинат.Но не только стандартная практика строительства помогаетстроить дома, поддающиеся перепланировке.
Этому способствуети множество стандартных интерфейсов строительства, позволяющих использовать общие готовые компоненты, применение которыхсущественно снижает затраты на строительство и эксплуатацию.Например, деревянные строительные конструкции имеют стандартные размеры, что позволяет строить стены, длина и ширина которыхкратна известному числу. Предусмотрены стандартные размеры дверей и окон, обеспечивающие относительную легкость их открытия.Наконец, существуют стандарты на электрические и телефонные розетки (хотя они и отличаются в разных странах), что позволит вамлегко переставить электроприборы в случае необходимости.В программном обеспечении важно строить системы с четкимразделением аспектов, чтобы по мере их эволюции изменения в однойчасти системы не затрагивали и не повреждали остальные ее части.Один из главных способов достижения этой цели – указание четкихсоединений (швов) между частями, которые могут изменяться независимо друг от друга.