Esta es la solución propuesta en clase. Como ejercicio para el

Anuncio
Esta es la solución propuesta en clase. Como ejercicio para el Contrato de Aprendizaje, se sugiere definir
la clase EjercicioBancoEnlazado en la cual en el main crear un objeto miBancoEnlazado de la clase
BancoEnlazado, diferentes objetos de las clases CuentaCorriente y CuentaDeposito.
Comprobad que los métodos insertarOrdenado y borrarCuentasCorrientesPobres funcionan
correctamente.
public abstract class Cuenta implements Comparable{
…
protected Cuenta sig;
public Cuenta(String nombreCliente,int numeroCuenta,double saldo) {…this.sig=null;}
public Cuenta(String nombreCliente,int numeroCuenta,double saldo, Cuenta sig) {… this.sig=sig;}
public int compareTo (Object o) {
Cuenta c= (Object o);
double dif = saldo – c.saldo;
if (dif==0) return 0; else if (dif<0) return -1; else return 1;
}
…
}
public class CuentaCorriente extends Cuenta {
…
public CuentaCorriente(String nombreCliente,int numeroCuenta,double saldo,double limite) {
super(nombreCliente,numeroCuenta,saldo);
limiteEnRojo=limite;
}
public CuentaCorriente(String nombreCliente,int numeroCuenta,double saldo,double limite, Cuenta
sig) {
super(nombreCliente,numeroCuenta,saldo,sig);
limiteEnRojo=limite;
}
…
}
public class CuentaDeposito extends Cuenta {
public CuentaDeposito(String nombreCliente,int numeroCuenta,double saldo) {
super(nombreCliente,numeroCuenta,saldo); }
public CuentaDeposito(String nombreCliente,int numeroCuenta,double saldo, Cuenta sig) {
super(nombreCliente,numeroCuenta,saldo,sig); }
…
}
public class BancoEnlazado{
private int numCuentas;
private Cuenta primeraCuenta;
….
/* METODO PARA INSERTAR UNA CUENTA DE FORMA ORDENADA (de mayor a menor) */
public void insertarOrdenado (Cuenta x) {
Cuenta aux = primeraCuenta;
Cuenta ant = null;
while ((aux != null) && (aux.compareTo(c) == 1) {
ant = aux;
aux = aux.sig;
}
if (ant == null) { /*inserción en la primera posición; equivalente a : if (aux == primeraCuenta) */
c.sig = primeraCuenta;
primeraCuenta = c;
}
else {
c.sig = aux;
ant.sig=c;
}
numCuenta ++;
}
/*METODO QUE BORRA CUENTAS CORRIENTES (CC) POBRES*/
public void borrarCuentasCorrientesPobres (double min) {
Cuenta aux = primeraCuenta;
Cuenta ant = null;
while (aux != null) /*con este bucle recorreremos toda la lista*/ {
if ((aux.returnSaldo() < min) && (aux instanceOf CuentaCorriente)) {
// cuenta corriente con saldo menor que min
if (ant == null) // si en la primera posición
primeraCuenta = aux.sig;
else ant.sig = aux.sig;
aux = aux.sig;
numCuenta --;
}
else {
ant =aux;
aux = aux.sig;
}
}
}
} // clase BancoEnlazado
Descargar