// @topic S-0314-14-01-20 Java Memento Design pattern
// @brief class CheckingAccount

package memento;

public class CheckingAccount {
    //---------------------------------
    // data attributes
    //---------------------------------
    private double balance;
    
    //---------------------------------
    // constructors
    //---------------------------------
    public CheckingAccount( double balance ) {
        this.balance = balance;
    }
    
    //---------------------------------
    // operations
    //---------------------------------
    public AccountMemento createMemento()
    {
        return new AccountMemento( balance );
    }
    
    public void restoreMemento( AccountMemento memento )
    {
        balance = memento.getBalance();
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
    
    public boolean withdraw( double amount ) {
        if ( balance > amount ) {
            balance -= amount;
            return true;
        } else {
            // notify the user about insufficient funds:
            return false;
        }
    }
    
}//class CheckingAccount