Модель классов
Текст может содержать неточности, устаревшие данные или технические ошибки. Пожалуйста, проверяйте критически важную информацию перед использованием.
Модель классов описывает данные системы: классы, их атрибуты, ссылки между классами и типы данных, из которых берутся значения. Здесь же задаются кратности, диапазоны значений и шаблоны строк.
Создайте две модели
Создайте модель Data Types типа ClassModel и вторую модель Sample. В
первой будет словарь типов данных, во второй — классы. Так одни и те же типы
смогут использовать и другие модели.
Типы данных — такие же элементы модели, как классы, поэтому модель может состоять из одних типов.
Словарь типов
В модель Data Types добавьте:
- строковый тип
String, логическийBoolean, UUID-типUUID; - числовой тип
IntegerсfractionDigits0; - числовой тип
UnsignedIntсsize32иminInclusive0; - временной тип
DateсinstantUnitsYear,Month,Day.
В модель Sample добавьте два типа, которые нужны только ей: числовой Money
(totalDigits 19, fractionDigits 4, minInclusive 0) и перечислимый
Color с литералами Red, Green, Blue, Black.
Классы
Добавьте в Sample четыре класса. Класс владеет свойствами, а свойство — это
либо Attribute с типом данных, либо Reference на другой класс. У обоих
есть кратность.
| Класс | Свойства |
|---|---|
User | firstName, lastName, birthDate [0..1], email [1] |
Order | deliveryAddress String [1] |
OrderItem | quantity UnsignedInt [1], price Money [1] |
Product | абстрактный, name String [1] |
Добавьте Book с атрибутом author и Pen с атрибутом color. Проведите
Generalization от каждого к Product.
Ссылки
| Владелец | Ссылка | Цель | Разновидность | Кратность |
|---|---|---|---|---|
Order | user | User | Association | [1] |
Order | items | OrderItem | Composition | [0..*] |
OrderItem | order | Order | Association | [1] |
OrderItem | product | Product | Association | [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
}