Диаграмма классов
Основные элементы
Пространства имён (Namespace)
Пространство имён используется для логической группировки связанных классов, во избежание конфликтов имён и для повышения читаемости модели. Оно не влияет на структуру классов, но помогает организовать большие модели по контекстам или модулям.
Пример:
Класс
Класс — это базовый строительный блок объектно-ориентированной модели, определяющий структуру и поведение сущности. В UML он представляется прямоугольником, разделённым на три секции:
- Имя класса — уникальное имя, описывающее сущность (например,
User) - Наименование сущности — человеко-читаемое имя, используемое в интерфейсе
- Атрибуты (свойства) — характеристики объекта
- Методы (операции) — функции или действия, которые объект может выполнять
Пример:
Модификаторы доступа
-—private(закрытый)+—public(открытый, можно опускать)#—protected(защищённый)
Атрибуты свойств
Дополнительные характеристики, определяющие поведение или отображение свойства:
label— отображаемое имяreadonly— только для чтенияrequired— обязательное для заполнения
Пример:
string Title [label="Наименование", required]
string Name [readonly]
Типы и форматы данных
Базовые типы
| Тип данных | Описание | Nullable-форма |
|---|---|---|
int | Целое число | int? |
float, double, decimal | Число с плавающей точкой | float?, double?, decimal? |
string | Строка | не требуется |
bool | Логическое значение | bool? |
Примечание: Тип
stringдопускаетnullпо умолчанию, поэтому?указывать не нужно.
Примеры:
int Age [label="Возраст", required] // Обязательное целое число, по умолчанию = 0
bool Check // по умолчанию = false
bool? Confirm [label="Подтверждаю", required] // по умолчанию = null, необходимо выбрать true | false
int? Rating [label="Рейтинг"] // Необязательное целое число
string Comment [label="Комментарий"] // Необязательная строка (по умолчанию = null)
Рекомендации по числовым типам:
float— для приближённых значений (например, координаты, температура)double— для повышенной точности без строгих требованийdecimal— для денежных и финансовых расчётов
Ограничения значений
Для строк (string):
[minLength=10]— минимальная длина[maxLength=255]— максимальная длина
string Name [label="Имя", minLength=3, maxLength=255, required]
Для целых чисел (int):
[min=1]— минимальное значение[max=100]— максимальное значение
int Age [label="Возраст", min=1, max=150, required]
Специализированные типы дан ных
Массивы
| Тип данных | Описание | Nullable-форма |
|---|---|---|
string_arr | Массив строк | не требуется |
int_arr | Массив чисел | не требуется |
Файлы и изображения (ссылки на filestorage)
| Тип данных | Описание | Nullable-форма |
|---|---|---|
file | Ссылка на файл | не требуется |
image | Ссылка на изображение | не требуется |
avatar | Ссылка на аватар | не требуется |
Атрибуты типов file и image
- drive - диск
- multiple - признак множественной загрузки
Форматированный текст
| Тип данных | Описание | Nullable-форма |
|---|---|---|
markdown | Текст в формате markdown | не требуется |
html | Текст в формате html | не требуется |
Даты и время
| Тип данных | Описание | Nullable-форма |
|---|---|---|
date | Дата | date? |
datetime | Дата и время | datetime? |
time | Время | time? |
year | Год | year? |
Перечисления
| Тип | Назначение | Nullable-форма |
|---|---|---|
enum ~Type~ | Перечисление | enum ~Type?~ |
Ссылки на объекты
| Тип | Назначение | Nullable-форма |
|---|---|---|
ref ~Type~ | Ссылка на другую сущность | не требуется |
Коллекции
| Тип | Назначение |
|---|---|
collection ~Type~ | Коллекция объектов указанного типа |
Комплексные типы
| Тип | Назначение | Nullable-форма |
|---|---|---|
Location | Географические координаты | не предусмотрена |
Address | Почтовый адрес | не предусмотрена |
DatePeriod | Период между датами | не предусмотрена |
DateTimePeriod | Период между датами с указанием времени | не предусмотрена |
ConfigurableProperty | Настраиваемое поле | не предусмотрена |
На текущий момент в
Visary 9.0.0комплексные типы должны создаваться по умолчанию.
Связи между классами
Связь — линия между классами, показывающая их взаимодействие или зависимость.
Типы связей
| Тип | Обозначение | Назначение |
|---|---|---|
| Ассоциация | classA --> classB | Общее отношение между классами |
| Агрегация | classC o-- classD | Часть может существовать отдельно |
| Композиция | classE *-- classF | Часть не существует без целого |
| Наследование | classG <|-- classH | Наследование поведения |
| Реализация | classM <|.. classN | Класс реализует интерфейс |
Кратность связей
Определяет, сколько экземпляров одного класса может быть связано с другим:
| Кратность | Описание |
|---|---|
"1" -- "1" | Один к одному |
"1" -- "n" | Один ко многим |
"n" -- "n" | Многие ко многим |
Ассоциации (UI)
OneToManyAssociation
Отображение коллекции зависимых объектов на стороне основного объекта в пользовательском интерфейсе (UI).
OneToOneAssociation
Отображение зависимого объекта (OneToOne) на стороне основного объекта в пользовательском интерфейсе (UI).
ManyToManyAssociation
Отображение коллекции связанных объектов (ManyToMany) на стороне объектов в пользовательском интерфейсе (UI).
Специализации (стереотипы UML)
Позволяют уточнить тип или поведение элементов модели.