Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ZSCFCP en 05 de Noviembre 2014, 12:57
-
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;
}
}
}
-
Hola ZSCFCP
Ejercicio correcto. Con el uso de tipos enumerados
Y además con presentación gráfica con los métodos de la clase JOptionPane
Amigo, cada vez te salen mejor. Ahí se nota tu investigación sobre esta clase.
Espero que para el próximo sustituyas la consola de java por un panel con el mismo diseño gráfico para la presentación de los listados.
Saludos y adelante