Диаграмма классов
Зачем нужны диаграммы классов?
Диаграмма классов в UML (Unified Modeling Language) представляет собой статическую модель, отображающую структуру системы. Она помогает:
-
Понять и документировать предметную область: Определяет основные классы и их роли в системе.
-
Показать атрибуты классов: Включает свойства и их примитивные типы (например,
Строка,Число,Булево). -
Отобразить связи и ассоциации между классами: Например, "один-к-одному", "один-ко-многим", композиции и агрегации.
-
Определить зависимости между классами: Демонстрирует, как изменение в одном классе может повлиять на другой.
-
Описать операции и методы класса: Определяет, какие функции реализует класс.
-
Показать реализацию интерфейсов: Выделяет, какие интерфейсы реализует класс.
-
Служить основой для проектирования объектов метаданных: Диаграмма используется как макет для настройки объектов, таких как справочники, документы, регистры в 1С.
Основные элементы диаграммы классов:
Классы
Класс – это ключевая сущность, описывающая объект или концепцию системы. Пример UML-синтаксиса:
+----------------------+
| Класс |
+----------------------+
| атрибут1: Тип |
| атрибут2: Тип |
+----------------------+
| метод1(): Тип |
| метод2(параметр): Тип|
+----------------------+
Ассоциации
Ассоциации показывают связи между классами.
-
Пример: "Заказ" связан с "Товаром", так как заказ содержит товары.
-
Типы:
-
Простая ассоциация: Линия между двумя классами.
Заказ ----------------- Товар -
Агрегация: У одного объекта есть другой, но они могут существовать независимо (полый ромб).
Заказ <>----------------- Товар -
Композиция: Один объект является частью другого и не может существовать отдельно (заполненный ромб).
ТабличнаяЧасть <#>------------- Документ
-
Атрибуты
-
Атрибуты описывают свойства класса.
-
Типы атрибутов должны быть примитивными (например,
String,Integer,Boolean). -
Пример:
Заказ
+ номер: Строка
+ дата: Дата
+ общаяСумма: Число
Методы
Методы описывают поведение класса.
-
Указываются с параметрами и типом возвращаемого значения.
-
Пример:
+ добавитьТовар(товар: Товар): Процедура
Зависимости
-
Показывают, что класс зависит от другого.
-
Обозначаются пунктирной стрелкой, направленной от клиента к поставщику.
-
Используются, если:
-
Класс использует глобальные переменные.
-
Класс передает или принимает объект через параметры.
-
Класс вызывает статический метод другого класса.
-
Пример:
Клиент ..> Сервис : Использует
Обозначение метаданных
'---- Типы объектов ----
Class =Справочник
Abstract =Документ
Protocol =Отчет
Interface =Обработка
Entity =РегистрСведений
Entity =РегистрБухгалтерии
Enum =РегистрНакопления
Enum =РегистрРасчета
Struct =ПланВидовХарактеристик
Struct =ПланВидовРасчета
Struct =ПланСчетов
Annotation =Задача
Protocol =БизнесПроцесс
Protocol =Все_другие_объекты
Protocol Обозначения_Типов_Данных{
-Ссылка // красный квадратик
#Булево // желтый ромбик
~Дата // си ний треугольник
*Число // черная точка
+Строка // зелёный кружок
}
Protocol =Обозначения_Полей_Регистра{
-Измерение // красный квадратик
~Реквизит // синий треугольник
+Ресурс // зелёный кружок
}
Взаимосвязь с диаграммой взаимодействия:
-
Начнем с взаимодействия: Диаграммы взаимодействия помогают определить, какие классы и связи необходимы.
-
Строим диаграмму классов:
- После понимания, как объекты взаимодействуют, добавляются их атрибуты, методы и связи.
-
Иногда создаются параллельно: В сложных системах разработка диаграмм может идти одновременно.
Шаги для создания диаграммы классов:
-
Анализ прецедентов: Выделите концептуальные классы из описания прецедентов.
-
Определите атрибуты: Укажите свойства для каждого класса.
-
Определите связи:
-
Укажите, как классы связаны.
-
Выберите типы связей: ассоциация, агрегация, композиция.
-
Добавьте кратность (например, "1", "*", "0..1").
-
-
Добавьте методы: Определите поведение классов, которое требуется для реализации сценариев.
-
Проверьте зависимости: Добавьте зависимости между классами, если они используют друг друга через глобальные переменные или методы.
-
Проверьте корректность: Убедитесь, что все элементы соответствуют терминологии предметной области.
Пример диаграммы классов в PlantUML

@startuml
class Заказ {
+номер: Строка
+дата: Дата
+Сумма: Число
+добавитьТовар(товар: Товар): Процедура
}
class Товар {
+наименование: Строка
+цена: Число
}
class ТабличнаяЧасть {
+номенклатура: СправочникСсылка.Товары
+количество: Число
}
Заказ "1" *- "1..*" ТабличнаяЧасть : содержит
ТабличнаяЧасть "1" -- "1" Товар : относитсяК
@enduml
Описание:
-
Классы: "Заказ", "Товар", "ТабличнаяЧасть".
-
Ассоциации:
-
"Заказ" содержит "ТабличнуюЧасть" (композиция).
-
"ТабличнаяЧасть" относится к "Товару" (простая ассоциация).
-
-
Атрибуты и методы: Указаны в каждом классе.