
Диаграмма Use Case
Рис. 3
1.2. Диаграмма классов
Диаграмма классов описывает типы объектов системы и различного рода статические отношения, которые существуют между ними.
Класс – это описание набора объектов, которые имеют одинаковые атрибуты, операции, отношения и семантику. Изображение класса показано на рис. 4.
Класс
Имя |
Атрибуты |
Операции |
Дополнительные свойства |
Рис. 4.
У класса обязательно указывать только имя. Остальные характеристики (атрибуты, операции) можно не указывать, если это не затрудняет понимание диаграммы. Часто на диаграммах показывают только существенные в текущем контексте атрибуты и операции. Отдельные секции могут быть пустыми.
Структурная функциональность класса определяется свойствами. В первом приближении их можно рассматривать как поля класса. Свойства представляют единое понятие, которое воплощается в атрибутах и ассоциациях.
Формат задания атрибутов следующий:
<видимость> <имя> : <тип> <кратность> = <значение по умолчанию> {<строка свойств>}.
Например:
+ model: String[1] = “ВАЗ-2101” {ReadOnly}
Обязательно только имя. Атрибуты и операции класса могут следующую область видимости:
+ – все объекты (public);
- – только внутри данного класса (private);
# – только потомки данного класса (protected);
~ – только внутри данного пакта (package).
Имя атрибута – это способ ссылки класса на атрибут – приблизительно соответствует имени поля в языке программирования. Тип атрибута накладывает ограничение на вид объекта, который может быть размещен в атрибуте. Можно считать его аналогом типа поля в языке программирования. Кратность обозначает количество объектов, которые могут заполнять данное свойство. Значение по умолчанию представляет собой значение для вновь создаваемых объектов, если атрибут не определен в процессе создания. Строка свойств позволяет указать дополнительные свойства атрибута. Например, ReadOnly говорит о том, что значение атрибута нельзя изменить.
Ассоциация – это другая разновидность свойства. Она описывает отдельные связи между объектами. Ассоциация является «клеем», который связывает систему воедино. Без ассоциаций мы имели бы некоторое количество классов, неспособных взаимодействовать друг с другом. На концах линии ассоциации может указываться кратность. Она показывает, сколько объектов может участвовать в связи с соответствующей стороны. В языке программирования ассоциацию можно реализовать как отдельный класс, содержащий поля, указывающие на связываемые объекты. В другом способе реализации поля для ссылок на объекты могут быть в классах участвующих в ассоциации.
На рис. 5 показаны два представления свойств (атрибут и ассоциация).
Представление свойств класса
Рис. 5
На конце ассоциации могут указываться стрелки, которые указывают на целевой класс ассоциации. Целевой класс – это класс, который является типом свойства. Бывают двунаправленные ассоциации – это пара свойств, связанных в противоположных направлениях.
С помощью атрибутов обычно указывают небольшие элементы, такие как даты или логические значения, а ассоциации используются для более значимых классов, таких как клиенты или заказы.
Операции представляют собой действия, реализуемые некоторым классом. Формат задания операций следующий:
<видимость> <имя> (<список параметров>) : <тип возвращаемого значения> {< строка свойств >}.
Параметры в списке параметров обозначаются таким же образом, что и для атрибутов:
<направление> <имя> : <тип> = <значение по умолчанию>
Направление обозначает, является ли параметр входным (in), выходным (out) или тем и другим (inout). Если направление не указано, то предполагается in.
Кроме ассоциации между элементами диаграммы классов могут существовать следующие виды отношений (см. рис. 6):