/*
 * Copyright (c) 1997-2001 Centro de Informática - UFPE
 */

/**
 * Esta classe modela uma conta simples de um banco, com operações de
 * cr&eacute;dito e d&eacute;bito.
 */
public class Conta {

    // O saldo da conta.
    private double saldo;

    // O número da conta.
    private long numero;

    /**
     * Cria uma nova conta, dados seu número e saldo.
     */
    public Conta(long numero, double saldo) {
        this.numero = numero;
        this.saldo = saldo;
    }

    /**
     * Cria uma nova conta, sem fundos.
     */
    public Conta(long numero) {
        this.numero = numero;
    }

    /**
     * Credita o valor dado na conta.
     *
     * @postcondition saldo' = saldo + val
     */
    public void creditar(double valor) {
        saldo = saldo + valor;
    }

    /**
     * Debita o valor dado da conta.
     *
     * @postcondition saldo' = saldo - val
     */
    public void debitar(double val) {
        saldo = saldo - val;
    }

    /**
     * Imprime o saldo da conta. Útil para testes e depuração.
     */
    public void printSaldo() {
        System.out.println("Conta: " + numero + " Saldo: R$" + saldo);
    }

    /**
     * Retorna o saldo da conta.
     */
    public double getSaldo() {
        return saldo;
    }

    /**
     * Retorna o número da conta.
     */
    public long getNumero() {
        return numero;
    }

    /**
     * M&eacute;todo para testes.
     */
    public static void main(String args[]) {
        Conta c1 = new Conta(1234567);
        Conta c2 = new Conta(9876543, 150.00);
        c1.printSaldo();
        c2.printSaldo();
        System.out.println("Creditando R$100.00 na conta de numero: " +
                                                           c1.getNumero());
        c1.creditar(100.00);
        System.out.println("Debitando R$56.43 da conta de numero: " +
                                                           c2.getNumero());
        c2.debitar(56.43);
        c1.printSaldo();
        c2.printSaldo();
    }

}