Cuenta de Ahorros POO

Hola ! Tengo creado este objeto de una cuenta con los siguientes atributos.

    private int saldo;
    private int numeroTarjetaCliente;
    private String clienteTitular;
    private String dni;
    private int []numeroDeOperaciones//contabiliza las operaciones que hace en la cuenta hasta un max de 10
    private String []tipoDeOperacion;// Aqui pondria cargar,retirar y mostrar

y lo que quiero hacer es:

tengo un menu que pide al usuario de cuenta la opcion que desea hacer:
El codigo de cargar y retirar saldo lo tengo pero tengo dudas para que se agrege al vector del objeto el numero de operaciones con su tipo de operacion y la fecha que se realizo

   1. Carga Saldo
   2. Retirar Saldo
   3. Consultar Saldo

Y cuando pulse 3 me salga el saldo que tengo y los 10 ultimos movimientos que he realizado con la fecha y para ello me debe mostrar asi.

 10.   26/02/2012  --- cargar Saldo  10 Euros
 09.   26/02/2012  --- Retirar Saldo  128 Euros
 08.   26/02/2012  --- cargar Saldo   140 Euros
 07.   26/02/2012  --- Retirar Saldo    25Euros
 06.   26/02/2012  --- Mostra Saldo    ---  290 Euros
 05.   26/02/2012  --- cargar Saldo       10 Euros
 04.   26/02/2012  --- cargar Saldo       100 Euros
 03.   26/02/2012  --- Mostrar Saldo   --- 400 Euros
 02.   26/02/2012  --- Retirar Saldo    120 Euros
 01.   26/02/2012  --- cargar Saldo     12 Euros
   CuentaDeAhorros cuentaDeAhorros = new CuentaDeAhorros(
         
        "Pepe",//Nombre del titular
         new String[]{" Cargar Saldo","Retirar Saldo","Mostrar Saldo,"Cargar Saldo"},//tipo de operacion
         "
22222222w",// dni
         1000,//Saldo en Euros
         7894,// codigo secreto
         new int[]{1,2,3,1}//Numero de operaciones
        );

como hago para ver el vector String y el vector int del objeto y para agregarles movimientos del String y se agrege al vector de int de numero de operaciones

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de yngwie74

De entrada, porqué dos vectores?

No entiendo cual es el propósito de tener dos vectores separados para el tipo de operación y número de operaciones. Será que no entiendo el concepto, pero me parece que operación es un solo objeto y te estas perdiendo una abstracción que podría ser importante:

public class Operacion {
 public final int numero;
 public final String tipo;
 // tal vez incluso la fecha?
 public Operacion(int numero, String tipo) {
  this.numero = numero;
  this.tipo = tipo;
 }

Lo que es más, me parece que el tipo eventualmente tendrá lógica asociada (no sé si este es un proyecto de juguete o de tarea, si es real, eventualmente así será), es decir, lógica que depende del valor de dicho tipo, por lo que deberías considerar usar una enumeración. La gran ventaja de las enumeraciones en Java es que a diferencia de C++ y otros lenguajes descendientes del mismo, los elementos de las enumeraciones pueden tener código asociado, mismo que es inherentemente polimórfico.

Por último, porqué usar arreglos? Realmente a menos que tengas una muy buena razón me parece que te estás limitando innecesariamente. Casi siempre es preferible usar una estructura dinámica como una lista por ejemplo, en lugar de un arreglo. Si definitivamente necesitas un arreglo para alguna operación posterior (como pasarlo a alguna biblioteca que lo tienen definido así en su interfaz), existen métodos para convertir de uno al otro.

Imagen de Payan

Evidentemente es una tarea

Evidentemente es una tarea ,en cuanto pueda la subo y le echas un vistazo , aver que tal te parece ,en lo de la enumeracion llevas razon . Un saludo

Respondiendo:

¿Como hago para ver el vector String y el vector int del objeto y para agregarles movimientos del String y se agrege al vector de int de numero de operaciones?

Lo que puedes hacer es crear operaciones en tu clase o alguna forma o método para modificar esos valores verdad?

...
void agregarMovimiento( String nombreMovimiento ) {
...
}
...

Ves? Por eso se llama método, por que define el como hacer algo.

Luego que tienes un método ( en este momento vacío ) hay que ejecutarlo ( llamarlo, invocarlo etc. ) sobre la instancia de la clase, es decir sobre tu objeto.

...
CuentaDeAhorros cuentaDeAhorros = new CuentaDeAhorros(
...
);
cuentaDeAhorros.agregaMovimiento("Mostrar Saldo");

Listo. Ahora hay que ponerle más código para que ese método haga algo

Lo que tienes definidos son arreglos y los arreglos en Java tienen un tamaño fijo, una vez creados no se puede cambiar su tamaño.

Hay dos opciones, la primera ( que NO SE DEBE HACER ) es crear un nuevo arreglo con una posición extra, copiar el nuevo valor ahí y usar el nuevo arreglo

...
void agregarMovimiento( String nombreMovimiento ) {

    String [] nuevoArreglo = new String[ this.tipoOperacion.length + 1];
    int i = 0 ;
    for ( String operacion in this.tipoOperacion ) {
       nuevoArreglo[ i++ ]  = operation;
    }
    nuevoArreglo[ i ] = nombreMovimiento;
    this.tipoOperacion = nuevoArreglo;
}
...

Y no se debe de hacer porque la siguiente vez que necesites agregar algo a este arreglo tendrás que escribir algo similar y pensarás ¿Por que no simplemente copio y pego? Y crearas un mal hábito. Luego querrás eliminar un elemento y tendrás un problema similar.

Mejor sería que utilizaras una lista de strings

....
private List<String> tiposDeOperacion;
...

Que ya tiene un método para agregar elementos:

...
void agregarMovimiento( String nombreMovimiento ) {
    this.tiposDeOperacion.add( nombreMovimiento );
}

Da daaaaa!! eso es todo y lo mejor aún, si necesitas el número de movimientos, basta con obtener el tamaño de la lista:

int numeroMovimientos() {
   return this.tiposDeOperacion.size();
}

:)

Que sí ¿es un buen diseño o no? o ¿como lo despliegas? ya es una cuestión aparte que ahorita no valdría la pena discutir.

Saludos y espero que esto te sea útil.