Перейти к основному содержимому

Модель классов

Этот документ был подготовлен при помощи ИИ

Текст может содержать неточности, устаревшие данные или технические ошибки. Пожалуйста, проверяйте критически важную информацию перед использованием.

Модель классов описывает данные системы: классы, их атрибуты, ссылки между классами и типы данных, из которых берутся значения. Здесь же задаются кратности, диапазоны значений и шаблоны строк.

Модель классов: два класса и ссылка от одного к другому

Создайте две модели

Создайте модель Data Types типа ClassModel и вторую модель Sample. В первой будет словарь типов данных, во второй — классы. Так одни и те же типы смогут использовать и другие модели.

Типы данных — такие же элементы модели, как классы, поэтому модель может состоять из одних типов.

Словарь типов

В модель Data Types добавьте:

  • строковый тип String, логический Boolean, UUID-тип UUID;
  • числовой тип Integer с fractionDigits 0;
  • числовой тип UnsignedInt с size 32 и minInclusive 0;
  • временной тип Date с instantUnits Year, Month, Day.

В модель Sample добавьте два типа, которые нужны только ей: числовой Money (totalDigits 19, fractionDigits 4, minInclusive 0) и перечислимый Color с литералами Red, Green, Blue, Black.

Классы

Добавьте в Sample четыре класса. Класс владеет свойствами, а свойство — это либо Attribute с типом данных, либо Reference на другой класс. У обоих есть кратность.

КлассСвойства
UserfirstName, lastName, birthDate [0..1], email [1]
OrderdeliveryAddress String [1]
OrderItemquantity UnsignedInt [1], price Money [1]
Productабстрактный, name String [1]

Добавьте Book с атрибутом author и Pen с атрибутом color. Проведите Generalization от каждого к Product.

Ссылки

ВладелецСсылкаЦельРазновидностьКратность
OrderuserUserAssociation[1]
OrderitemsOrderItemComposition[0..*]
OrderItemorderOrderAssociation[1]
OrderItemproductProductAssociation[1]

Задайте items и order как opposite друг для друга — на диаграмме эти две ссылки станут двумя концами одного ребра.

Текстовое представление

Откройте модель как текст. Это та же модель, записанная кодом: переименование класса в тексте меняет имя и на диаграмме.

classModel Sample

class Order {
attribute deliveryAddress String
reference user User
composition items OrderItem [0..*] opposite order
}

abstract class Product {
attribute name String
}

class Book extends Product {
attribute author String
}

enumerated Color {
Red
Green
Blue
Black
}