Sseguimos con las entregas del curso de Java de RedesZone. En este volumen vamos a centrarnos en analizar la solución del ejercicio que se os propuso en el volumen anterior.
Como ya se os comentó, se trataba de un ejercicio de mayor complejidad que los propuestos anteriormente, pero que seguramente os será útil para resolver dudas que todavía tengáis y otras que tal vez nunca os habríais planteado.
Sin tardar más tiempo, vamos a ponernos manos a la obra con el ejercicio.
En primer lugar, vamos a resolver la primera de las dos partes que constaba el ejercicio:
- Primera Parte
Deseamos implementar una clase Coche. La clase Coche tendrá como atributos la matrícula del coche, el nombre del dueño, y el número de bastidor. Ahora no nos valdrá para nada, pero decir que el número de bastidor de un coche es único, por lo tanto, no hay dos coches con el mismo número de bastidor. Clase Coche tendrá como métodos un constructor, al que se le pasará la matrícula, el nombre del propietario, y el número de bastidor. También tendrá tres métodos que retornarán respectivamente la matrícula, el nombre del dueño y el bastidor.
Comentarios:
Es conveniente que ya empecemos a poner los atributos de una clase como privados. ¿Qué cambios supone esto? Sólamente podremos acceder al valor de estos atributos por medio de los métodos observadores.
La primera parte es sencilla y era una clase más o menos como las que hemos estado implementando hasta ahora (por ejemplo, la clase Persona). Vamos ahora con la segunda parte del problema y donde podéis haber tenido mas dificultades.
- Segunda Parte
Somos los dueños de una aseguradora y queremos llevar de manera organizada toda la cartera de coches que tenemos asegurados. Por lo tanto para ello deberemos utilizar o un Array o un ArrayList. En una clase separada que llamaremos por ejemplo ListaCoches, tendremos como atributos un lista de coches. Como métodos, tendremos un constructor, y dos métodos más:
-insertaCoche: se le pasa como parámetro un Coche y el método se encarga de insertarle en la lista. Antes de insertarle el método deberá recorrer la lista y comprobar que el número de bastidor no ha sido ya insertado. Si es así, retornamos un booleano (false). En caso negativo, procedemos a la inserción y retornamos true.
-buscaVehiculos: se le pasará el nombre del propietario y, mostrará por pantalla el número de vehículos que tiene cada dueño y el número de bastidor de cada vehículo por lo tanto, será necesario un recorrido de la lista.
Primero vamos a comentar el constructor, los atributos de la clase y el método inserta.
Si la solución es con un array, deberemos crearle con un tamaño lo suficientemente grande. Como no vamos a insertar todos los elementos deberemos de llevar un contador de elementos insertados que nos ayudara a la hora de insertar elementos y de recorrer el array, ya que debemos solo recorrerle hasta donde «tenemos» elementos insertados. Las demás posiciones al estar vacias al intentar recorrerlas saltaría una excepción el funcionamiento no sería el correcto.
Con respecto al método inserta, debemos utilizar una variable booleana inicializada a false. Debemos recorrer el array hasta encontrar alguna coincidencia. Si tal coincidencia existe la variable booleana se pondrá a true y por lo tanto no podremos insertar el elemento porque ya existe ese bastidor es nuestra lista.
Vamos con el método de contar las coincidencias para un determinado propietario
Comentarios:
Como podemos ver necesitamos un contador que se incrementara solamente cuando el nombre del vehículo contenido en la lista, sea igual al del parámetro del método.
Después de haber revisado la clase Coche y ListaCoches vamos con el método de prueba
Comentarios:
Se trata de un programa principal en el que tenemos que probar el funcionamiento de las otras dos clases. Creamos una serie de coches, cremos una lista de coches y despues añadimos unos cuantos, comprobamos que el metodo inserta funciona y después el método buscaPorNombre.
A continuación os darémos la solución para los que han decidido hacerlo con la clase ArrayList
La clase ListaCoches
Como podéis observar el atributo numeroCoches a desaparecido, ya que la clase ArrayList nos proporciona el método size().
También para acceder a un elemento debemos de utilizar primero get(i). En el método insertar los coches podemos utilizar el add directamente y despreocuparnos por donde lo insertará ya que la propia clase ArrayList esta implementada para que el elemento se inserte al final de la lista .
El programa principal se mantiene igual ya que la única clase que hay que modificar es ListaCoches.
Hasta aquí la solución del ejercicio.
Podríamos decir que hemos acabado con los Arrays y ArrayList. En el caso de que queráis que se repase más no tenéis nada más que exponerlo.
En el próximo volumen seguiremos avanzando un poco con la utilidades de Java. Por lo que en el siguiente volumen hablaremos de herencia en los objetos de Java.