import java.util.Vector;
import java.util.Date;
import java.util.Iterator;

/**
 * Representa una Cuenta bancaria
 */
public class Cuenta {

    private Long codigo;
    private float balance;
    private String titular;
    private Vector<Apunte> apuntes; /* Almacena los movimientos asociados a */
                                    /* esta cuenta                          */

    /**
     * Constructor. Crea una nueva cuenta bancaria con los datos introducidos e
     * incializa el vector de apuntes.
     * @param codigo
     * @param titular
     */
    public Cuenta(Long codigo, String titular) {
        this.titular = titular;
        this.balance = 0;
        this.codigo = codigo;
        apuntes = new Vector<Apunte>();
    }

 
    /**
     * Devuelve el saldo actual de la cuenta
     * @return el saldo actual de la cuenta
     */
    public float obtenerBalance() {
        return balance;
    }
    /**
     * Obtiene el codigo de la cuenta
     * @return el codigo de la cuenta
     */
    public Long obtenerCodigo() {
        return codigo;
    }

    /**
     * Obtiene el titular de la cuenta
     * @return El titular de la cuenta
     */
    public String obtenerTitular() {
        return titular;
    }

    /**
     * Suma al saldo actual la cantidad especificada y aņade un nuevo apunte
     * al vector
     * @param cantidad La cantidad a depositar
     * @param fecha La fecha en la que se realiza la operacion
     * @return El balance actual de la cuenta
     */
    public float depositar(float cantidad, Date fecha);

    /**
     * Resta al saldo actual la cantidad especificada y aņade un nuevo apunte
     * al vector
     * @param cantidad La cantidad a retirar
     * @param fecha La fecha en la que se realiza la operacion
     * @return El balance actual de la cuenta
     */
    public float retirar(float cantidad, Date fecha);


    /**
     * Devuelve los apuntes que se han realizado entre dos fechas
     * @param fechaIni La fecha inicial
     * @param fechaFin La fecha final
     * @return Los apuntes almacenados en un Vector
     */
    public Vector<Apunte> obtenerApuntesEntre(Date fechaIni, Date fechaFin);
    
    public String toString() {
        String datos = "Cuenta: titular = " + titular + " | codigo =  " + 
                codigo + " | balance = " + balance + "\nApuntes:\n";

        Iterator<Apunte> iter = apuntes.iterator();
        while (iter.hasNext()) {
            Apunte a = iter.next();
            datos += "\t" + a + "\n";
        }

        return datos;
    }

}


syntax highlighted by Code2HTML, v. 0.9.1