Диаграммы классов служат для представления статической структуры модели системы в терминологии объектно-ориентированного подхода.
Основные элементы и понятия, связанные с диаграммами классов, представлены в таблице.
Класс (Class) служит для обозначения множества объектов с одинаковой структурой, поведением и отношениями с объектами других классов и может быть в UML представлен следующими значками.
Односекционный значок класса содержит необязательный стереотип класса, обязательное имя класса.
Двухсекционный значок класса дополнительно к предыдущему содержит атрибуты класса, каждый из которых может быть представлен строкой вида:
<Квантор видимости> <Имя атрибута> [Кратность]: <Тип атрибута> = <Исходное значение> {Строка-свойство}.
Трехсекционный значок класса дополнительно к предыдущему содержит операции класса, каждая из которых может быть представлена строкой вида:
<Квантор видимости> <Имя операции> (Список параметров): <Тип возвращаемого значения> {Строка-свойство}.
Четырехсекционный значок класса дополнительно к предыдущему содержит исключения.
Параметризованный класс (Parametrized class) предназначен для обозначения такого класса, который имеет один или более нефиксированных формальных параметров.
Граничный класс (Boundary class) порождает объекты, с которыми взаимодействует актер.
Управляющий класс (Control class) порождает объекты, управляющие взаимодействием объектов.
Класс-сущность (Entity class) порождает объекты для долговременного хранения информации.
Отношение зависимости имеет место тогда, когда некоторое изменение источника зависимости (например, класс_B) может потребовать изменения другого, зависимого от него, клиента зависимости (например, класс_A).
Отношение ассоциации имеет место при наличии некоторого отношения межу классами – классом «Фирма» и классом «Сотрудник» (например, менеджер может вести несколько проектов).
Любая ассоциация обладает двумя ролями. Например - ассоциация между Исполнителем и Отчетом содержит две роли: одна от Исполнителя к Отчету; другая - от Отчета к Исполнителю. Роль также обладает множественностью. Пример - символ "0..*" над ассоциацией между Менеджером и Контрактом показывает, что с одним Менеджером связано много Контрактов. 0 - показывает, что Менеджер может не управлять контрактом; 1 - показывает, что любой Контракт может управляться только одним Менеджером.
Для ассоциации может указываться направление навигации, если направление не указывается, то ассоциация двунаправленная или ее направление неизвестно.
Отношение агрегации представляет системные взаимосвязи типа «часть – целое».
Отношение композиции представляет специальные системные взаимосвязи типа «часть – целое», когда части не могут выступать в отрыве от целого.
Отношение обобщения (наследование) является отношением между более общим элементом (предком) и более частным элементом (потомком).
Отношение зависимости
Является наиболее общей формой отношения в языке UML. Все другие типы отношений можно считать частным случаем данного отношения. Отношение зависимости показывает, что изменение одного класса влечет изменение другого класса. Чаще всего применяется, когда один класс использует другой в качестве аргумента. Изображается пунктирной линией со стрелкой, направленной от зависимого класса к независимому.
Отношение ассоциации, агрегации и композиции
Поскольку отношения ассоциации, агрегации и композиции отличаются очень незначительно, то рассмотрим работу с ними в общем.
Отношение ассоциации показывает, что один класс каким-то образом связан с другим классом (аналог связи в диаграмме «Сущность-Связь»). Изображается сплошной линией, соединяющей классы.
Отношение агрегации - частный случай ассоциации. Представляет собой отношение типа «целое/часть». Изображается в виде простой ассоциации с незакрашенным ромбом со стороны «целого». Агрегация не является наследованием, поскольку все классы-«части» в агрегации являются вполне самостоятельными, со своими атрибутами и операциями, отличающимися от атрибутов и операций класса-«целое».
Отношение композиции - частный случай агрегации. Служит для выделения специальной формы отношения «целое-часть», при которой составляющие части в некотором смысле находятся внутри целого. Специфика взаимосвязи между ними заключается в том, что части не могут выступать в отрыве от целого, т.е. с уничтожением целого уничтожаются и все его составные части. Изображается в виде сплошной линии с закрашенным ромбом возле класса «целое».
Отношение обобщения
Это отношение между общей сущностью (суперклассом, или родителем) и ее конкретным воплощением (субклассом, или потомком). Обобщения иногда называют отношениями типа "является", имея в виду, что одна сущность является частным выражением другой, более общей. Обобщение означает, что объекты класса-потомка могут использоваться всюду, где встречаются объекты класса-родителя, но не наоборот. Изображается в виде линии с большой незакрашенной стрелкой.
Отношение реализации
Это отношение между двумя элементами модели, при котором один элемент (клиент) реализует поведение, заданное другим (поставщиком). Изображается в виде пунктирной линии с большой незакрашенной стрелкой, указывающей на поставщика. Чаще всего реализации используют для определения отношений между интерфейсом и классом или компонентом, который предоставляет объявленные в интерфейсе операции или услуги.
Контрольные вопросы
1. Назначение диаграммы классов.
2. Для чего используется диаграмма классов на стадии анализа?
3. Назовите основные компоненты диаграммы классов.
4. Что собой представляет ассоциация?
5. В чем смысл множественной ассоциации?
6. Как описывается класс?
7. Что входит в описание атрибута?
8. Что представляет собой операция класса?