Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование, страница 40
Описание файла
PDF-файл из архива "Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование", который расположен в категории "". Всё это находится в предмете "объектно-ориентированный анализ и проектирование" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 40 страницы из PDF
Сообщения могут проходить только в том направлении,куда указывает стрелка.Спецификация UML 2 допускает три разных способа отображения возможности навигации, которые подробно обсуждаются в разделе 9.4.3.В данной книге используется самое распространенное обозначение:••все кресты опускаются;двунаправленные ассоциации изображаются без стрелок;•однонаправленные ассоциации изображаются с одной стрелкой.Единственным настоящим недостатком этого способа отображения является отсутствие возможности показать, что решение о навигацииеще не принято, потому что отсутствие символов навигации подразумевает, что связь «не допускает навигации».Например, на рис. 9.3 показано, что связь между :PersonDetails и :Addressоднонаправленная. Это значит, что у объекта :PersonDetails есть объектная ссылка на объект :Address, но не наоборот.
Сообщения могут пересылаться только от :PersonDetails к :Address.9.3.2. ПутиОбозначения UML, такие как пиктограмма объекта, пиктограмма прецедента и пиктограмма класса, соединяются с другими обозначениями путями. Путь – это «связанные последовательности графическихсегментов» (другими словами, линия!), объединяющие два или болееобозначений. Существует три стиля представления путей:• прямоугольный – путь состоит из ряда горизонтальных и вертикальных сегментов;•наклонный – путь является последовательностью одной или болеенаклонных линий;•кривой – путь является кривой линией.Какой стиль пути использовать, вопрос личных предпочтений.
Стилимогут даже смешиваться на одной диаграмме, если это делает ее более204Глава 9. ОтношенияBookClubbookClub:Clubchairpersonsecretaryila:Personerica:Personnaomi:PersonmemberРис. 9.4. Прямоугольный стиль отображения путейясной и понятной. Мы, как и многие разработчики моделей, обычноиспользуем прямоугольный стиль.На рис. 9.4 использован прямоугольный стиль, и пути объединеныв дерево. Объединять можно только пути, имеющие одинаковые свойства. В данном случае все пути представляют связи, поэтому вполнезаконно могут быть объединены.Визуальная четкость, легкость прочтения и общая привлекательностьдиаграмм имеют огромное значение.
Необходимо всегда помнить, чтоосновная масса диаграмм создается для когото. Таким образом, неважно, какой стиль используется, важны четкость и ясность.9.4. Что такое ассоциация?Ассоциации – это отношения между классами. Аналогично связям,соединяющим объекты, ассоциации соединяют классы. Самое главное: для того чтобы между двумя объектами была связь, между классами этих объектов должна существовать ассоциация. Потому чтосвязь – это экземпляр ассоциации. Так же как объект – экземпляркласса.Ассоциации – это соединения между классами.На рис.
9.5 показаны отношения между классами и объектами и между связями и ассоциациями. Поскольку не может быть связи без ассоциации, очевидно, что связи зависят от ассоциаций. Это можно смоделировать как отношение зависимости (пунктирная стрелка), котороеболее подробно рассматривается в разделе 9.5. Чтобы явно обозначитьсемантику зависимости между ассоциациями и связями, зависимостьпомечается стереотипом «instantiate».Объекты – это экземпляры классов, а связи – экземпляры ассоциаций.2059.4.
Что такое ассоциация?ассоциацияClubPerson«instantiate»«instantiate»«instantiate»chairpersonbookClub:Clubila:PersoncвязьРис. 9.5. Отношения между классами и объектами и между связямии ассоциациямиСемантика базовой, неуточненной ассоциации чрезвычайно проста: ассоциация между классами указывает на то, что между объектами этихклассов могут устанавливаться связи. Существуют другие, более конкретные формы ассоциаций (агрегация и композиция), которые рассматриваются в разделе 18.3 при обсуждении процесса проектирования.9.4.1. Синтаксис ассоциацииАссоциации могут иметь:• имя ассоциации• имена ролей• кратность• возможность навигацииПоскольку ассоциации обозначают действие, производимое исходнымобъектом над целевым объектом, в качестве их имен должны использоваться глагольные группы.
Перед именем или после него может применяться маленькая черная стрелка, указывающая направление, в котором должно читаться имя ассоциации. Имя ассоциации записывается в стиле lowerCamelCase.В примере на рис. 9.6 ассоциация читается следующим образом:«Компания (Company) нанимает много Человек (Persons)». Хотя стрелкауказывает направление чтения ассоциации, всегда можно прочитатьее в обратном направлении.
Таким образом, в примере на рис. 9.6 можимя ассоциацииCompanyвозможность навигацииemploys1*PersonкратностьРис. 9.6. Отображение ассоциации с использованием ее имени206Глава 9. Отношенияимя ролиCompanyemployer1возможность навигацииemployee*PersonкратностьРис.
9.7. Отображение ассоциации с использованием имен ролейно сказать, что в любой момент времени «каждый Человек (Person) нанят только одной Компанией (Company)».Имена ассоциаций – это глагольные группы, указывающие на семантикуассоциации.Альтернативный вариант – классам на обоих концах ассоциации могут быть присвоены имена ролей. Эти имена указывают на роли, исполняемые объектами классов, когда они связаны экземплярами данной ассоциации.
На рис. 9.7 можно видеть, что объект Company будетиграть роль employer (работодатель), а объекты Person – роль employee(служащие), если они связаны экземплярами этой ассоциации. Именаролей называют роль, которую могут играть объекты, поэтому онидолжны быть существительными или именными группами.Ассоциация может иметь или имя ассоциации, или имя роли. Указание и имени роли, и имени ассоциации для одной и той же ассоциациитеоретически допустимо, но считается очень плохим стилем.
Это ужеперебор!Признак хороших имен ассоциаций и ролей – они должны легко читаться. На рис. 9.6 ассоциация «Company employs many Persons» (Компания нанимает много Человек) звучит на самом деле замечательно. Если прочитать ассоциацию в обратном направлении, получается «Personis employed by exactly one Company at any point in time» (Человек наняттолько одной Компанией в любой момент времени).
Тоже звучит неплохо. Аналогичным образом имена на рис. 9.7 ясно указывают роли,которые будут играть объекты этих классов, связанные именно такимобразом.Имена ролей – это именные группы, указывающие на роли, исполняемые объектами, связанными экземплярами этой ассоциации.9.4.2. КратностьОграничения – один из трех механизмов расширения UML, и кратность – первый из рассматриваемых нами типов ограничений. Это также самый распространенный тип ограничений. Кратность ограничивает число объектов класса, которые могут быть вовлечены в конкрет2079.4. Что такое ассоциация?Компания нанимает много ЧеловекCompanyemployer1employeePerson*Каждый Человек работает на одну КомпаниюРис.
9.8. Отображение кратности на диаграмменое отношение в любой момент времени. Фраза «в любой момент времени» – решающая для понимания кратностей. На рис. 9.8 можноувидеть, что в любой момент времени объект Person нанят только одним объектом Company. Однако с течением времени объект Person может быть нанят несколькими объектами Company.На рис.
9.8 можно найти еще коекакие любопытные вещи. ОбъектPerson не может быть безработным, он всегда нанят только одним объектом Company. Таким образом, ограничение включает в себя два бизнесправила данной модели:• объекты Person в данный момент времени могут быть наняты толькоодним объектом Company;• объекты Person не могут быть безработными.Не важно, зависят или нет эти допустимые ограничения всецело оттребований, предъявляемых к моделируемой системе, но это именното, что выражает модель.Как видим, ограничения кратности имеют большое значение, в нихмогут быть закодированы ключевые бизнесправила модели. Однакоэти правила «скрыты» в деталях модели. Грамотные разработчики моделей называют такое сокрытие ключевых бизнесправил и требований «тривиализацией» (trivialization).
Намного более глубокое обсуждение этого феномена можно найти в книге [Arlow 1].Кратность задается в виде разделенного запятыми списка интервалов,в котором каждый интервал представлен в форме:минимум..максимумгде минимум и максимум – целые числа или любое выражение, возвращающее целое число.Если кратность не задана явно, значит, решение о ней еще не принято.Если кратность не задана явно, значит, решение о ней еще не принято.В UML нет «применяемой по умолчанию» кратности. В моделировании широко распространена ошибка, состоящая в том, что незаданная208Глава 9.
Отношениякратность по умолчанию предполагается равной 1. Некоторые примеры синтаксиса кратности приведены в табл. 9.1.Кратность задает число объектов, которые могут принимать участиев отношении в любой момент времени.Таблица 9.1ДополнениеСемантика0..1Нуль или 11Ровно 10..*Нуль или более*Нуль или более1..*1 или более1..6От 1 до 61..3, 7..10, 15, 19..*От 1 до 3, или от 7 до 10, или ровно 15, или от 19до множестваМодель всегда необходимо читать так, как написано.Пример на рис. 9.9 иллюстрирует, что кратность действительно является мощным ограничением, которое часто имеет огромное влияниена бизнессемантику модели.Если прочитать пример внимательно, можно увидеть, что:• у Company может быть ровно семь employee;• Person может быть нанят только одной Company (т.
е. в данной моделиPerson не может одновременно иметь больше одной должности);• у BankAccount может быть только один owner (владелец);• у BankAccount может быть один или много operator (операторов);• у Person может быть от нуля до множества BankAccount;• Person может управлять от нуля до множества BankAccount.При прочтении UMLмодели крайне важно понять, что именно выражает модель, а не прибегать к предположениям или догадкам.