Диаграммы классов

Диаграммы классов — самый распространённый тип диаграмм UML, используемый для моделирования статической структуры системы путём отображения классов, их атрибутов, операций и связей.

Создание классов

Использование инструмента «Класс»

На странице UML Class Diagram нажмите U или выберите Класс в меню UML на панели инструментов. Щёлкните на холсте, чтобы разместить блок класса, или перетащите, чтобы задать его размер. Нажмите Return при выделенном классе, чтобы переименовать его.

Структура блока класса

Блок класса UML состоит из трёх секций:

  1. Секция имени — содержит имя класса и необязательный стереотип
  2. Секция атрибутов — список свойств/полей класса
  3. Секция операций — список методов/функций класса

Свойства класса

Выделите класс и используйте вкладку Инспектора Arrange → раздел UML для настройки его свойств:

Имя

Имя класса отображается жирным шрифтом в верхней секции. По соглашению используется PascalCase (например, CustomerOrder).

Стереотип

Необязательный классификатор, отображаемый над именем класса в кавычках-ёлочках:

  • <<interface>> — для определений интерфейсов
  • <<abstract>> — для абстрактных классов
  • <<enumeration>> — для типов перечислений
  • <<entity>> — для доменных сущностей
  • Также поддерживаются пользовательские стереотипы

Abstract

Переключатель для отображения имени класса курсивом, обозначающий абстрактный класс.

Constrained resize

Когда включено (по умолчанию), изменение размера сохраняет пропорции блока класса.

Атрибуты

Атрибуты представляют данные/свойства класса.

Добавление атрибутов

  1. Выделите класс
  2. В разделе UML найдите поле Attributes — многострочный редактор с одним атрибутом на строку
  3. Нажмите + (или Cmd+L), чтобы добавить новый атрибут, затем введите его детали

Синтаксис атрибутов

Атрибуты соответствуют формату: видимость имя : тип

Модификаторы видимости:

СимволЗначениеОписание
+PublicДоступен отовсюду
-PrivateДоступен только внутри класса
#ProtectedДоступен внутри класса и его подклассов
~PackageДоступен внутри того же пакета

Примеры:

  • -id: Int — приватный целочисленный идентификатор
  • +name: String — публичное строковое имя
  • #createdAt: Date — защищённое поле даты
  • ~cache: Map<String, Any> — пакетный кеш

Операции

Операции представляют поведение/методы класса.

Добавление операций

  1. Выделите класс
  2. В разделе UML найдите поле Operations — многострочный редактор с одной операцией на строку
  3. Нажмите + (или Shift+Cmd+L), чтобы добавить новую операцию, затем введите её детали

Синтаксис операций

Операции соответствуют формату: видимость имя(параметры) : типВозврата

Примеры:

  • +getName(): String — публичный геттер, возвращающий String
  • -validate(input: String): Boolean — приватный метод валидации
  • +process(data: Data, options: Options): Result — метод с несколькими параметрами
  • +save(): void — метод без возвращаемого значения

Связи

Нажмите R, чтобы активировать инструмент Связь, затем перетащите от одного класса к другому, чтобы создать соединение.

Типы связей

ТипСтиль линииСтрелкаПрименение
Association (ассоциация)Сплошная линияОткрытая стрелкаОбщая связь
Dependency (зависимость)Пунктирная линияОткрытая стрелкаСвязь «использует»
Inheritance (наследование)Сплошная линияПолый треугольникСвязь «является» (extends)
Realization (реализация)Пунктирная линияПолый треугольникРеализация интерфейса
Aggregation (агрегация)Сплошная линияПолый ромб«Имеет» (слабое владение)
Composition (композиция)Сплошная линияЗаполненный ромб«Имеет» (сильное владение)

Создание связей

  1. Нажмите R, чтобы активировать инструмент Связь
  2. Щёлкните на исходном классе
  3. Перетащите к целевому классу
  4. Отпустите, чтобы создать соединение
  5. Используйте раздел Инспектора UML, чтобы задать Тип связи — стиль линии и наконечники стрелок следуют выбранному типу

Подписи связей

Выделите связь и задайте её подписи в разделе Инспектора UML:

  • Label — описывает связь (например, «manages», «contains»)
  • Multiplicity — значения Source и Target, указывающие количество экземпляров (например, «1», «0..», «1..»)

Лучшие практики

  1. Сохраняйте простоту — не пытайтесь смоделировать всё; сосредоточьтесь на ключевых классах
  2. Используйте стереотипы — чётко помечайте интерфейсы и абстрактные классы
  3. Показывайте ключевые связи — не каждую ассоциацию нужно отображать
  4. Единообразное именование — используйте PascalCase для классов, camelCase для членов
  5. Группируйте связанные классы — используйте визуальную близость для отображения логических групп