Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 20:05, реферат
UML прекрасно зарекомендовал себя на множестве успешных программных проектов. Средства автоматической кодогенерации позволяют переводить модели на языке UML в исходный код объектно-ориентированных языков программирования, что еще более ускоряет процесс разработки. Диаграммы дают возможность представить систему (как деловую, так и программную) в таком виде, чтобы ее можно было легко перевести в программный код. Они повышают сопровождаемость проекта и облегчают разработку документации к программной системе. Кроме того, UML специально создавался для оптимизации процесса разработки программных систем, что позволяет увеличить эффективность реализации программных систем в несколько раз и заметно улучшить качество конечного продукта.
<нижняя граница>..<верхняя граница>
Если для верхней границы стоит символ ' * ', то это символизирует, что она (верхняя граница) бесконечна. Если указывается одно конкретное число, то это означает, что количество объектов фиксировано. А если элементы списка кратности разделены запятыми, то запятая символизирует ЛОГИЧЕСКОЕ ИЛИ.
Например: 0..1 - 0 или 1
0..* - 0 или более
* - любое количество
10 - 10
2, 4 - 2 или 4
3..5,10..20,100,200..* - (от 3 до 5) или (от 10 до 20) или 100 или 200 и более
Ограничения ассоциации. Ограничения расширяют UML-блоков, позволяя добавлять новые правила или модифицировать уже существующие. Ограничение показывают как текстовую строку, заключенную в фигурные скобки и располагающуюся рядом с соответствующими элементами. На рис 5. показано ограничение на две ассоциации, располагающееся на пунктирной линии, соединяющей эти элементы (возможно размещение ограничения возле этой линии).
Иногда ассоциация между двумя классами должна удовлетворять некоторому правилу. С помощью нотации ограничений можно изобразить некоторые свойства ассоциации, например, порядок и изменчивость. на рис 6. показан пример, который определяет обслуживание покупателей продавцом по очереди.
Квалификатор. Если кратность ассоциации описывается отношением "один ко многим", то выполнения отведенной ему в ассоциации роли должен выбрать конкретный объект другого класса. Он может это сделать на основе некоторого заданного атрибута, представляющего собой идентификатор (чаще всего - некоторый числовой идентификатор). Например, среди множества студентов (* или конкретное число, например, 10 000) вуза (1) можно выбрать конкретного студента по номеру его студенческого билета (:Word), который является уникальным. В UML идентифицирующая информация называется квалификатором. Он обозначается небольшим прямоугольником, который прилегает к обозначению класса, выполняющего поиск. Такой подход позволяет эффективно свести кратность "один ко многим" к случаю "один к одному". Пример использования нечислового квалификатора в отношении ассоциации показан на рис.7
Рефлексивные ассоциации. Иногда класс может находиться в ассоциации с самим собой. Этот вариант носит название рефлексивной ассоциации и возникает в том случае, если объекты класса выполняют несколько ролей. Например, сотрудник организации может быть одновременно и подчиненным и руководителем. Например, в университете декан подчиняется ректору, но руководит сотрудниками факультета (заведующими кафедр, преподавателями и т. п.). А человек находящийся в машине, может быть или пассажиром или водителем. Если он водитель, то он везет одного или нескольких пассажиров, или не везет ни одного.
На диаграмме этот вариант ассоциации отображается с помощью маршрута ассоциации, ведущей от прямоугольника класса к этому же прямоугольнику (рис 9.)
Классы ассоциаций. Ассоциация, в свою очередь может иметь атрибуты и операции, т. е. в свою очередь являться классом. Поэтому в этом случае говорят о классе ассоциаций. Для его отображения используется обычное обозначение класса, к которому добавляется пунктирная линия, соединяющая этот класс с маршрутом (линией) ассоциации (рис. 10). При необходимости, класс ассоциации может связываться с другими классами.
Возможность навигации указывает, можно ли с помощью выражений, описывающих класс, получить объект или множество объектов, ассоциированных с данным классом. Направление навигации определяется тем, что какой класс предоставляет операцию, а какой - пользуется ею. Иными словами, навигация происходит от класса-потребителя к классу-производителю (рис. 10).
Тернарная ассоциация и ассоциации более высокой арности в общем случае называются N-арной ассоциацией. Такая ассоциация связывает некоторым отношением 3 и более классов, при этом один класс может участвовать в ассоциации более чем один раз. Класс ассоциации имеет определенную роль в соответствующем отношении, что может быть явно указано на диаграмме. Каждый экземпляр N-арной ассоциации представляет собой N-арный кортеж значений объектов из соответствующих классов. Бинарная ассоциация является частным случаем N-арной ассоциации, когда значение N=2, и имеет свое собственное обозначение.
N-арная ассоциация графически обозначается ромбом, от которого ведут линии к символам классов данной ассоциации. В этом случае ромб соединяется с символами соответствующих классов сплошными линиями. Обычно линии проводятся от вершин ромба или от середины его сторон. Имя N-арной ассоциации записывается рядом с ромбом соответствующей ассоциации.
Порядок классов в N-арной ассоциации, в отличие от порядка множеств в отношении, на диаграмме не фиксируется. Некоторый класс может быть присоединен к ромбу пунктирной линией. Это означает, что данный класс обеспечивает поддержку свойств соответствующей N-арной ассоциации, а сама N-арная ассоциация имеет атрибуты, операции и/или ассоциации. Другими словами, такая ассоциация, в свою очередь, является классом с соответствующим обозначением в виде прямоугольника и является самостоятельным элементом языка UML - ассоциацией-классом (Association Class), как показано на рис. 10. N-арная ассоциация не может содержать символ агрегации ни для какой из своих ролей.
Интервал записывается рядом с концом ассоциации и для N-арной ассоциации означает потенциальное число отдельных экземпляров или значений кортежей этой ассоциации, которые могут иметь место, когда остальные N-1 экземпляров или значений классов фиксированы.
3.2 Отношение обобщения
Обобщение - отношение специализации/обобщения, в котором объекты специализированного элемента (потомка, ребенка) могут заменять (наследовать) объекты обобщенного элемента (предка, родителя). Иначе говоря, потомок разделяет структуру и поведение родителя. Как показано в табл. 2, обобщение изображается в виде сплошной стрелки с полым наконечником, указывающим на родителя.
Класс может не иметь родителя.
В этом случае он называется базовым или корневы
3.3 Отношение реализации
Реализация - семантическое отношение между классификаторами, где один классификатор определяет контракт, который другой классификатор обязуется выполнять (к классификаторам относят классы, интерфейсы, компоненты, элементы Use Case, кооперации). Отношения реализации применяют в двух случаях: между интерфейсами и классами (или компонентами), реализующими их; между элементами Use Case и кооперациями, которые реализуют их. Как показано в табл. 3, реализация изображается в виде пунктирной стрелки с треугольным незакрашенным наконечником, который располагается у элемента, предоставляющего спецификацию. Хвост стрелки находится у элемента, который предоставляет программную реализацию.
3.4 Отношение зависимости
Зависимость -- семантическое отношение между двумя предметами, в котором изменение в одном предмете (независимом предмете или поставщике) может влиять на семантику другого предмета (зависимого предмета или клиента). Другими словами, зависимость применяется тогда, когда необходимо показать, что одна сущность использует другую. Как показано в табл. 3 зависимость изображается в виде пунктирной стрелки, которая связывает два элемента модели. Тот элемент модели, который находится у хвоста стрелки (клиент) зависит от элемента, который находится у ее наконечника (поставщик). У стрелки может находиться одно из ключевых слов, приведенных в табл. 1. , указывающее на вид данной зависимости, а также имя этой зависимости.
Класс Заказ зависит от класса Книга, так как класс Книга используется в операциях класса Заказ. Класс Просмотр заказа использует класс Заказ, причем, классЗаказ ничего не знает о Просмотре заказа. Таким образом, зависимость между этими классами может быть помечена стереотипом «friend» (быть дружественным), который расширяет простую зависимость, определенную в языке. Другие возможные виды зависимостей и соответствующие им стереотипы приведены в таблице 3.
Таблица 3.
Виды зависимостей
Зависимость |
Функция |
Ключевое слово |
|
Доступ (Access) |
Пакет имеет доступ к содержимому другого пакета |
«access» |
|
Связывание (Binding) |
Присваивание значений параметрам шаблона для создания нового элемента модели |
«bind» |
|
Вызов (Call) |
Метод одного класса вызывает операцию другого класса |
«call» |
|
Вывод (Derivation) |
Один экземпляр может быть вычислен на основе информации, предоставленной другим экземпляром |
«derive» |
|
Дружественность (Friend) |
Элемент имеет доступ к содержимому другого элемента, вне зависимости от его видимости |
«friend» |
|
Импорт (Import) |
Пакет имеет доступ к содержимому другого пакета и добавляет имена из пространства имен этого пакета в пространство имен импортера |
«import» |
|
Создание экземпляра (Instantiation) |
Метод одного класса создает экземпляры другого класса |
«instantiate» |
|
Параметр (Parameter) |
Отношение между операцией и ее параметрами |
«parameter» |
|
Реализация (Realization) |
Соотнесение спецификации и ее реализации |
«realize» |
|
Уточнение (Refinement) |
Соотнесение элементов, находящихся на разных семантических уровнях |
«refine» |
|
Отправка (Send) |
Отношение между объектом, принимающим сигнал, и объектом, который этот сигнал отправляет |
«send» |
|
Трассировка (Trace) |
Существование связи между элементами различных моделей (менее точной, чем прямое отображение) |
«trace» |
|
Использование (Usage) |
Одному элементу для правильного функционирования необходимы услуги другого элемента (сюда входят вызов, конкретизация, параметр, оправка, другие зависимости) |
«use» |
|
Еще одним примером отношения
зависимости может служить
Следует заметить, что тип связи может зависеть от конкретного контекста. Например, между указанными выше классами может быть и ассоциация "Жилец Проживает в Доме".