@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