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

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

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

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

Нажмите A или C для активации инструмента класса, затем нажмите в любом месте холста для размещения нового блока класса.

Пустой холст с инструментом класса

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

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

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

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

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

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

Имя

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

Стереотип

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

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

Абстрактный

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

Инспектор класса

Атрибуты

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

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

  1. Выделите класс
  2. В Инспекторе найдите раздел «Атрибуты»
  3. Нажмите кнопку + для добавления нового атрибута
  4. Введите детали атрибута

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

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

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

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

Примеры:

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

Операции

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

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

  1. Выделите класс
  2. В Инспекторе найдите раздел «Операции»
  3. Нажмите кнопку + для добавления новой операции
  4. Введите детали операции

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

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

Примеры:

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

Связи

Нажмите R для активации инструмента связей, затем перетащите от одного класса к другому для создания соединения.

Типы связей

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

Связи классов

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

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

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

Дважды нажмите на линию связи для добавления подписей:

  • Имя — Описывает связь (например, «manages», «contains»)
  • Множественность — Указывает количество экземпляров (например, «1», «0..*», «1..n»)
  • Имена ролей — Подписи на каждом конце, описывающие роль

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

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