@startuml
skinparam classAttributeIconSize 0
class Пользователь <<entity>> {
- id: Integer
- ФИО: String
- логин: String
- роль: РольПользователя
- активен: Boolean
+ проверитьАктивность(): Boolean
}
class КатегорияОборудования <<entity>> {
- id: Integer
- название: String
- описание: String
}
class Оборудование <<entity>> {
- id: Integer
- инвентарныйНомер: String
- название: String
- статус: СтатусОборудования
- состояние: СостояниеОборудования
+ доступноДляВыдачи(): Boolean
+ изменитьСтатус(статус: СтатусОборудования): void
}
class Заявка <<entity>> {
- id: Integer
- цель: String
- датаПолучения: Date
- плановаяДатаВозврата: Date
- статус: СтатусЗаявки
+ проверитьДаты(): Boolean
+ действительна(текущаяДата: Date): Boolean
+ завершить(): void
}
class Выдача <<entity>> {
- id: Integer
- датаВыдачи: Date
- плановаяДатаВозврата: Date
- датаВозврата: Date
- комплектность: String
- состояниеПриВыдаче: СостояниеОборудования
- состояниеПриВозврате: СостояниеОборудования
+ оформить(
дата: Date,
комплектность: String,
состояние: СостояниеОборудования
): void
+ оформитьВозврат(
дата: Date,
состояние: СостояниеОборудования
): void
+ просрочена(текущаяДата: Date): Boolean
}
class Отчёт <<technical>> {
- периодНачало: Date
- периодКонец: Date
- фильтрКатегория: Integer
- фильтрСтатус: String
}
class ИнтерфейсЛаборанта <<boundary>> {
+ показатьПодтвержденныеЗаявки(): void
+ ввестиДанныеВыдачи(
комплектность: String,
состояние: СостояниеОборудования
): void
+ показатьРезультат(
результат: РезультатВыдачи
): void
}
class КонтроллерВыдачи <<control>> {
+ получитьСведения(
заявкаId: Integer
): СведенияВыдачи
+ проверитьВозможностьВыдачи(
заявкаId: Integer
): РезультатПроверки
+ оформитьВыдачу(
заявкаId: Integer,
комплектность: String,
состояние: СостояниеОборудования
): РезультатВыдачи
}
class ХранилищеЗаявок <<technical>> {
+ найти(заявкаId: Integer): Заявка
+ сохранить(заявка: Заявка): void
}
class ХранилищеОборудования <<technical>> {
+ найти(оборудованиеId: Integer): Оборудование
+ сохранить(оборудование: Оборудование): void
}
Пользователь "1" -- "0..*" Заявка : подаёт
КатегорияОборудования "1" o-- "0..*" Оборудование : содержит
Оборудование "1" -- "0..*" Заявка : относится
Заявка "1" *-- "0..1" Выдача : основание
Оборудование "1" -- "0..*" Выдача : история
ИнтерфейсЛаборанта ..> КонтроллерВыдачи : использует
КонтроллерВыдачи ..> ХранилищеЗаявок : использует
КонтроллерВыдачи ..> ХранилищеОборудования : использует
@enduml