/**
 * Una tarjeta de transporte: su estado (código y saldo) y las operaciones
 * que lo cambian viven juntos en una clase.
 */
public class TransitCard {
    private final String id;
    private int balance;            // saldo en céntimos

    /** Crea una tarjeta con el código dado y saldo cero. */
    public TransitCard(String id) {
        this.id = id;
        this.balance = 0;
    }

    /** Agrega saldo a la tarjeta. */
    public void recharge(int amount) {
        balance += amount;
    }

    /** Cobra un pasaje si alcanza el saldo; devuelve si se pudo cobrar. */
    public boolean pay(int fare) {
        if (balance < fare) {
            return false;
        }
        balance -= fare;
        return true;
    }

    public String id() {
        return id;
    }

    public int balance() {
        return balance;
    }
}
