Skip to content

Library Management — Detailed#

classDiagram
  direction TB

  class Library {
    +name
    +branches
    +catalog: Catalog
    +loanSvc: LoanService
    +fineSvc: FineService
  }

  class Catalog {
    +search(query) List~Book~
    +addBook(b)
    +removeBook(b)
  }

  class Book {
    +isbn
    +title
    +authors
    +subject
  }

  class BookItem {
    +barcode
    +status: ItemStatus
    +location
    +book: Book
  }

  class ItemStatus {
    <<enumeration>>
    AVAILABLE
    RESERVED
    LOANED
    LOST
    DAMAGED
  }

  class Member {
    +id
    +name
    +type: MembershipType
    +loans: List~Loan~
    +reservations: List~Reservation~
  }

  class Librarian
  class Loan {
    +item
    +member
    +issueTs
    +dueTs
    +returnTs
  }

  class Reservation {
    +item
    +member
    +ts
    +status
  }

  class Fine {
    +loan
    +amount
    +paid
  }

  class LoanService {
    +issue(item, member) Loan
    +returnItem(loan)
    +renew(loan)
  }

  class FineService {
    +compute(loan) Fine
    +collect(fine)
  }

  Library *-- Catalog
  Catalog *-- "many" Book
  Book *-- "many" BookItem
  BookItem --> ItemStatus
  Member "1" -- "many" Loan
  Member "1" -- "many" Reservation
  Loan --> BookItem
  Reservation --> BookItem
  Library --> LoanService
  Library --> FineService
  Librarian --> Library

Glossary & fundamentals#

Concept What it is Fundamentals
MVCC / CAS item status transitions mvcc-isolation-levels
Idempotency loan / return idempotency-retries
Pub/Sub due-date reminders pub-sub-pattern