Загрузка данных


@startuml

actor "Читатель" as Reader
participant "Система библиотеки" as System
participant "Каталог" as Catalog
participant "Экземпляр книги" as Copy
participant "Картотека читателей" as Readers
participant "Выдача" as Loan

Reader -> System : Запросить книгу
System -> Catalog : Найти книгу
Catalog --> System : Информация о книге

System -> Readers : Проверить читателя
Readers --> System : Данные читателя

System -> Readers : Проверить количество книг
Readers --> System : Количество книг

alt У читателя уже 5 книг
    System --> Reader : Отказ в выдаче
else Есть свободное место
    System -> Catalog : Найти свободный экземпляр
    Catalog -> Copy : Проверить наличие
    Copy --> Catalog : Экземпляр доступен
    Catalog --> System : Свободный экземпляр

    System -> Loan : Оформить выдачу
    Loan -> Copy : Изменить статус
    Copy --> Loan : Экземпляр выдан
    Loan --> System : Выдача оформлена

    System --> Reader : Книга выдана
end

@enduml