- •Цели создания языка uml. Средства языка uml.
- •Диаграммы вариантов использования.
- •Действующее лицо (actor)
- •Описание
- •Предусловия
- •Основной и альтернативный потоки событий
- •Постусловия
- •Диаграммы взаимодействия
- •Диаграммы последовательности
- •Кооперативные диаграммы
- •Сравнение диаграмм последовательности и кооперативных диаграмм
- •Двухэтапный подход к разработке диаграмм взаимодействия
- •Диаграммы классов.
- •Общие сведения.
- •Атрибуты
- •Операции
- •Операции реализации
- •Операции управления
- •Операции доступа
- •Вспомогательные операции
- •Ассоциации
- •Зависимости
- •Агрегации
- •Обобщения
- •Множественность
- •Имена связей
- •Классы ассоциаций
- •Выявление связей
- •Диаграммы состояний
- •Деятельность
- •Входное действие
- •Выходное действие
- •События
- •Ограждающие условия
- •Действие
- •Диаграммы деятельностей
- •Диаграммы компонентов
- •Диаграммы размещения
Вспомогательные операции
Вспомогательными (helper operations) называются такие операции класса, которые необходимы ему для выполнения его ответственности, но о которых другие классы не должны ничего знать. Это закрытые и защищенные операции класса.
Как и операции реализации, вспомогательные операции можно обнаружить на диаграммах последовательности и кооперативных диаграммах. Часто такие операции являются рефлексивными сообщениями на этих диаграммах.
Чтобы идентифицировать операции, выполните следующие действия:
1. Изучите диаграммы последовательности и кооперативные диаграммы. Большая часть сообщений на этих диаграммах является операциями реализации. Рефлексивные сообщения будут вспомогательными операциями.
2. Рассмотрите управляющие операции. Может потребоваться добавить конструкторы и деструкторы.
3. Рассмотрите операции доступа. Для каждого атрибута класса, с которым должны будут работать другие классы, надо создать операции Get и Set.
Связи
Связь представляет собой семантическую взаимосвязь между классами. Она дает классу возможность узнавать об атрибутах, операциях и связях другого класса. Иными словами, чтобы один класс мог послать сообщение другому на диаграмме последовательности или кооперативной диаграмме, между ними должна существовать связь.
Существуют четыре типа связей, которые могут быть установлены между классами: ассоциации, зависимости, агрегации и обобщения.
Ассоциации
Ассоциация (association) - это семантическая связь между классами. Их рисуют на диаграмме классов в виде обыкновенной линии.
CIass4
|
|
Class5
|
|
||
|
|
|
|
|
После того, как классы связали ассоциацией, они могут передавать друг другу сообщения на диаграмме последовательности или кооперативной диаграмме. Ассоциации могут быть двунаправленными, как в примере, однонаправленными. На языке UML двунаправленные ассоциации рисуют в виде простой линии без стрелок или со стрелками с обеих ее сторон. На однонаправленной ассоциации изображают только одну стрелку, показывающую ее направление.
После определения ассоциации в классы помещаются соответствующие дополнительные атрибуты. Например, если между классом Дом и классом Жилец установлена связь ассоциации, класс Дом получит атрибут "жилец", чтобы он мог знать, кто его владелец, а класс Жилец - атрибут "дом", чтобы он мог определить, каким домом он владеет.
Ассоциация дает классу возможность знать об общих атрибутах и операциях другого класса. Например, в случае двунаправленной ассоциации между классами Дом и Жилец класс Жилец знает об общих атрибутах и операциях Дома, а Дом - о Жильце. Таким образом, на диаграммах последовательности Дом может посылать сообщения Жильцу и наоборот.
Ассоциации можно сделать и однонаправленными. Такие связи легче создавать, ими легче управлять, и с их помощью можно найти классы, допускающие повторное использование. Допустим, что ассоциация направлена от Жильца к Дому. В этом случае Жилец знает об общих атрибутах и операциях Дома, но Дом не знает об атрибутах и операциях Жильца. Сообщения на диаграммах последовательности и кооперативных диаграммах могут отправляться Жильцом и приниматься Домом, но не наоборот.
Направление ассоциации можно определить, изучая диаграммы последовательности и кооперативные диаграммы. Если все сообщения на них отправляются только Жильцом и принимаются только Домом, но не наоборот, между этими классами имеет место однонаправленная связь. Если хотя бы одно сообщение отправляется в обратную сторону, ассоциация должна быть двунаправленной.
Однонаправленные связи позволяют определить классы, являющиеся кандидатами на повторное использование. Если ассоциация двунаправлена, каждый класс-участник должен знать о другом, и потому ни один из них не может использоваться без другого Допустим, однако, что имеется однонаправленная ассоциация между Жильцом и Домом. Жилец должен знать о Доме, и потому не может использоваться без него. Однако, Дом не должен знать о Жильце и потому допускает самостоятельное повторное использование. Класс с большим количеством исходящих однонаправленных связей повторно использовать трудно, а класс, все связи которого входящие, чрезвычайно легко.
Ассоциации могут быть рефлексивными. Рефлексивная ассоциация предполагает, что один экземпляр класса взаимодействует с другими экземплярами этого же класса. Рассмотрим, например, класс Жилец. Один человек может быть родителем нескольких других людей. Поскольку все они являются взаимодействующими друг с другом экземплярами класса Жилец, мы получаем рефлексивную ассоциацию.
