Buenos días.
Aquí les dejo mi aportación al ejercicio CU00681B para que si pueden lo revisen y me digan sus carencias y como mejorarlo. Muchas gracias por adelantado.
Les pego el código:
clase "Vehiculo":
import javax.swing.JDialog;
import javax.swing.JOptionPane;
/**
* Clase para identificar un Vehiculo, por su marca (tipo enumerado) y su matricula (tipo String)
* @author ZSCFCP
* @version V.1.0
*/
public class Vehiculo
{
enum MarcaDeVehiculo {FORD,TOYOTA,SUZUKI,RENAULT,SEAT};
private String matricula;
private MarcaDeVehiculo marca;
/** Constructor para objetos de la clase Vehiculo */
public Vehiculo(){
matricula = "";
marca = MarcaDeVehiculo.SUZUKI;
}
// METODOS GETTERS
public void setMatricula (String matricula) {this.matricula = matricula;}
public void setMarca (MarcaDeVehiculo marca) {this.marca = marca;}
// METODOS SETTERS
public String getMatricula() {return this.matricula;};
public MarcaDeVehiculo getMarca() {return this.marca;};
// OTROS METODOS.
public void darMarca (int seleccion) {
switch (seleccion) {
case 0: setMarca (MarcaDeVehiculo.FORD); break;
case 1: setMarca (MarcaDeVehiculo.TOYOTA); break;
case 2: setMarca (MarcaDeVehiculo.SUZUKI); break;
case 3: setMarca (MarcaDeVehiculo.RENAULT); break;
case 4: setMarca (MarcaDeVehiculo.SEAT); break;
default: break;
} // fin del switch
}
}
Clase "ListaDeVehiculos":
import java.util.ArrayList;
import java.util.Iterator;
/**
* Clase para gestionar una Lista de de objetos tipo Vehiculos dentro de una ArrayList.
*
* @author ZSCFCP
* @version V.1.0.
*/
public class ListaDeVehiculos
{
//Declaracion de atributos.
private ArrayList<Vehiculo> listaDeVehiculos;
/** Constructor de la clase ListaDeVehiculos. */
public ListaDeVehiculos() {listaDeVehiculos = new ArrayList<Vehiculo>();}
/** Método para añadir un Vehiculo a la lista. */
public void addVehiculo(Vehiculo miVehiculo) {listaDeVehiculos.add(miVehiculo);}
/** Método para borrar un Vehiculo de la lista. */
public Vehiculo removeVehiculo(int posicion)
{ if (posicion>=0 && posicion<listaDeVehiculos.size())
{return listaDeVehiculos.remove(posicion);}
else {return null;}
}
/** Método para devolver el vehiculo de una posicion dada. */
public Vehiculo getVehiculo(int posicion)
{ if (posicion>=0 && posicion<listaDeVehiculos.size())
{return listaDeVehiculos.get(posicion);}
else {return null;}
}
/** Método para devolver el tamaño del ArrayList de Vehiculos. */
public int tamanhoListaDeVehiculos() {return listaDeVehiculos.size();}
/** Método para listar los Vehiculos de la ArrayList. */
public void MostrarListaDeVehiculos()
{
Iterator <Vehiculo> itV = listaDeVehiculos.iterator();
Vehiculo tmpV = new Vehiculo();
int cont = 0;
while (itV.hasNext())
{
tmpV = itV.next();
System.out.println((++cont) + "\t" + tmpV.getMarca() + "\t" + tmpV.getMatricula());
}
}
}
Clase "TestListaDeVehiculos":
import javax.swing.JOptionPane;
/**
* Clase main para que el usuario mantenga el ArrayList de objetos tipo Vehiculo.
*
* @author ZSCFCP
* @version V.1.0.
*/
public class TestListaDeVehiculos
{
public static void main (String [ ] Args)
{
//crear lista de vehiculos
ListaDeVehiculos miLista = new ListaDeVehiculos();
//mostrar menu al usuario
boolean ejecutar = true;
do {
Object[] selectionValues = { "Matricular nuevo vehículo",
"Visualizar vehículos matriculados",
"Retirar vehiculo de la lista",
"Salir del programa"};
String initialSelection = "Matricular nuevo vehículo";
int seleccion = JOptionPane.showOptionDialog(null,
"Seleccione opcion",
"MANTENIMIENTO DE VEHICULOS",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, // null para icono por defecto.
selectionValues,
initialSelection);
switch(seleccion) {
case 0:
Vehiculo miCoche = new Vehiculo();
int seleccion2 = JOptionPane.showOptionDialog(null,
"Seleccione la marca",
"MANTENIMIENTO DE VEHICULOS",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
new Object[] {"FORD", "TOYOTA", "SUZUKI", "RENAULT", "SEAT"},
"FORD");
miCoche.darMarca(seleccion2); //metodo setter del objeto vehiculo.
String matricula = JOptionPane.showInputDialog("Introduzca la matrícula del vehiculo:");
miCoche.setMatricula(matricula); //metodo setter del objeto vehiculo.
miLista.addVehiculo(miCoche); //metodo para añadir del objeto ListaDeVehiculos.
break;
case 1:
if (miLista.tamanhoListaDeVehiculos()>0) {
miLista.MostrarListaDeVehiculos();
} else {
JOptionPane.showMessageDialog(null, "Ups... de momento la lista esta vacia. Deberá matricular algun vehículo antes.",
"¡¡¡ATENCION!!!", JOptionPane.WARNING_MESSAGE);
}
break;
case 2:
int size = miLista.tamanhoListaDeVehiculos();
if (size==0) {
JOptionPane.showMessageDialog(null, "Ups... de momento la lista esta vacia. Deberá matricular algun vehículo antes.",
"¡¡¡ATENCION!!!", JOptionPane.WARNING_MESSAGE);
break;
}
String respuesta = JOptionPane.showInputDialog("Introduzca la posicion del vehiculo a retirar de la lista");
if (Comunes.isNumeric(respuesta)) {
int delPos = Integer.parseInt(respuesta);
if (size >= delPos && delPos>0) {
miLista.removeVehiculo(delPos-1);
} else {
JOptionPane.showMessageDialog(null, "Debe introducir un numero de posición válido",
"¡¡¡ATENCION!!!", JOptionPane.WARNING_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(null, "Debe introducir un numero de posición válido",
"¡¡¡ATENCION!!!", JOptionPane.WARNING_MESSAGE);
}
break;
case 3:
ejecutar = false;
default:
break;
}
} while (ejecutar);
}
}
Clase "Comunes":
/**
* Clase para utilidades comunes
*/
public class Comunes
{
public Comunes() {}
public static boolean isNumeric(String cadena)
{
try {
Integer.parseInt(cadena);
return true;
} catch (NumberFormatException nfe){
return false;
}
}
}