@startuml
' --- Pengaturan Awal Diagram ---
left to right direction
skinparam packageStyle rectangle
' --- Aktor ---
actor "Pustakawan" as pk
actor "Member" as mmbr
' --- Batas Sistem (System Boundary) ---
rectangle Perpustakaan {
' --- Use Case Utama ---
usecase "Mendaftarkan Anggota" as UC0
usecase "Menambahkan Buku" as UC1
usecase "Meminjamkan Buku" as UC2
usecase "Mengembalikan Buku" as UC3
usecase "Memperpanjang Peminjaman" as UC4
' --- Use Case untuk Relasi ---
usecase "Memvalidasi Status Anggota" as UC_Val
usecase "Menghitung Denda" as UC_Denda
}
' --- Asosiasi Aktor ke Use Case ---
pk --> UC0
pk --> UC1
pk --> UC2
mmbr --> UC3
pk --> UC4
' --- Relasi Antar Use Case ---
' <> : Fungsionalitas yang WAJIB dijalankan
' Meminjamkan buku dan memperpanjang peminjaman sama-sama WAJIB memvalidasi status anggota.
UC2 ..> UC_Val : <>
UC4 ..> UC_Val : <>
' <> : Fungsionalitas OPSIONAL yang hanya berjalan pada kondisi tertentu
' Menghitung denda hanya terjadi JIKA buku yang dikembalikan terlambat.
UC_Denda ..> UC3 : <>
@enduml