Control 2- CC10B Prof: Nancy Hitschfeld Kahler Auxs: Christian Wilckens y Daniel Pizarro 12 mayo 2006 Un banco almacena las cuentas de sus clientes. Existen dos tipos de cuentas: cuenta corriente y cuenta de ahorro. Todas las cuentas contienen el número de la cuenta, el rut y nombre de la persona dueña de esa cuenta, y el saldo. Una cuenta de ahorro tiene además un número máximo de giros (4 en este problema) y un reajuste anual (4%). Una cuenta corriente tiene solo una comisión mensual de 8000 pesos (no tiene número máximo de giros ni reajuste anual). Entre las operaciones que se pueden realizar sobre una cuenta están depositar una cantidad de dinero, preguntar por el saldo actual y girar una cierta cantidad de dinero si es que el saldo actual lo permite. En caso de una cuenta de ahorro, se require tambien que el número de máximo de giros no haya sido realizado. Suponga que el banco está representado por la siguiente clase: public class Banco{ private Cuenta[] cuentas; private int numero_actual_de_cuentas; public Banco(int numero_maximo_cuentas); // (0.5) inicializa // el Banco con la posibilidad de almacenar // numero_maximo_de cuentas, pero inicialmente tiene 0 cuentas public void Agregar(int tipo_cuenta, int rut, String nombre); (2.0) // tipo_cuenta == 0 significa que es una cuenta de ahorro // tipo_cuenta == 1 significa que es una cuenta corriente // El saldo inicial es 0 public void Eliminar(int numero_cuenta); (4.0) // Elimina la cuenta de numero numero_cuenta public int Numero_cuentas_saldo( float min, float max); (3.5) // Imprime toda la informacion de las cuentas cuyo saldo // esta entre min y max (ambos inclusive) // y retorna cuantas hay public int NumeroCuenta(String nombre, int tipo_cuenta); (2.0) // Retorna el numero de la cuenta del cliente con el nombre // especificado public Cuenta Cuenta(int numero_cuenta);(2.0) // retorna la cuenta de la cuenta con numero_cuenta } 1 y la clase Cuenta tiene la siguiente interfaz abstract public class Cuenta{ protected int numero_cuenta; protected String nombre; protected float saldo; protected int rut; public Cuenta( int rut, String nombre); public int Rut(); public String Nombre(); public float Saldo(); public int Numero(); abstract public void Girar(float cantidad); abstract public void Depositar(float cantidad); abstract public void Imprimir(); } • (12.0) Diseñe una jerarquı́a de clases para modelar los distintos tipos de cuentas. Agregue las variables de instancia que necesite a sus nuevas clases. Implemente cada uno de los métodos de cada una de las clases de la jerarquı́a. No se olvide de los constructores. • (14.0) Implemente los métodos de la clase Banco. • (5.0) Qué método(s) de la clase Banco modificarı́a y cómo los modificarı́a para que se pueda usar búsqueda binaria al buscar una cuenta por su número de cuenta? En qué método(s) podrı́a usar búsqueda binaria? (Respuesta en palabras) • (10.0) Defina una clase llamada Ejemplo, que tenga un método main para probar sus clases de la siguiente manera. Primero (1 pto), debe crear un banco que pueda almacenar 1000 cuentas. A este banco le debe agregar las siguientes cuatro cuentas (4 ptos): (1) cuenta de ahorro de XXX con Rut 8.000 , (2) cuenta corriente de YYY con rut 9.000 (3) cuenta de ahorro de YYY con Rut 9.000 y (4) cuenta corriente de ZZZ con Rut 2.000. Segundo (3 ptos), debe depositar 500.000 en la cuenta corriente YYY, 100.000 en la cuenta corriente de ZZZ y 50.000 en la cuenta de ahorro de XXX. Tercero (2 ptos), debe imprimir qué cuentas y cuantas hay con saldo entre 100.000 y 1.000.000. Cuál es la salida de su programa? Nota: Para obtener un número de cuenta no usado suponga que existe una clase Numero de Cuentas, con un método NextNumero, que permite obtener el siguiente número de cuenta disponible. 2