package library;

/** Un ejemplar físico de un libro, con su código de inventario. */
public class Copy {
    private final String code;
    private final Book book;
    private boolean onLoan = false;

    public Copy(String code, Book book) {
        this.code = code;
        this.book = book;
    }

    public String code() {
        return code;
    }

    public Book book() {
        return book;
    }

    public boolean isAvailable() {
        return !onLoan;
    }

    // Acceso de paquete: solo Library y Loan, del mismo paquete, cambian el estado.
    void markOnLoan() {
        onLoan = true;
    }

    void markReturned() {
        onLoan = false;
    }
}
