Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: RaGa en 31 de Marzo 2015, 19:07
-
Mi versión del Ejercicio propuesto en la Entrega Nº81. Ejercicio CU00681B.
Clase Vehiculo
enum MarcaDeVehiculos {FORD,TOYOTA,SUZUKI,RENAULT,SEAT};
/** Clase Vehiculo. Cada objeto se compone de la marca del vehículo y su matrícula.
* @author: RaGa
* @date: 31/03/15
* @version: 01
*/
public class Vehiculo{
//Declaración de campos de instancia
private String matricula;
private MarcaDeVehiculos marca;
public Vehiculo(){ // Constructor de clase
}
// Setters
/**El método sirve para setear la matrícula y la marca del vehículo.
* @param el parámetro valorMatricula es de tipo String y corresponde a la matrícula del vehiculo.
* @param el parámetro opcionMarca es de tipo int y corresponde a la marca del vehículo. Sus posibles opciones son:
* 1 = FORD
* 2 = TOYOTA
* 3 = SUZUKI
* 4 = RENAULT
* 5 = SEAT
*/
public void setVehiculo(String valorMatricula, int opcionMarca){
matricula = valorMatricula;
switch (opcionMarca){
case 1:
marca = MarcaDeVehiculos.FORD;
break;
case 2:
marca = MarcaDeVehiculos.TOYOTA;
break;
case 3:
marca = MarcaDeVehiculos.SUZUKI;
break;
case 4:
marca = MarcaDeVehiculos.RENAULT;
break;
case 5:
marca = MarcaDeVehiculos.SEAT;
break;
} // fin Switch
}
// Getters
/**El método retorna la matrícula del vehículo.
* @return la variable retornada es de tipo String.
*/
public String getMatricula(){ return matricula; }
/**El método retorna la marca del vehículo.
* @return la variable retornada es de tipo MarcaDeVehiculo.
*/
public MarcaDeVehiculos getMarca(){ return marca; }
} //fin de la clase
Clase TestVehiculo
/** clase TestVehiculo. Sirve para poner a prueba la clase Vehiculo.
* @author: RaGa
* @date: 31/03/15
* @version: 01
*/
public class TestVehiculo{
//Declaración de campos de instancia.
private Vehiculo miVehiculo;
private int tmpMarca;
private boolean continuarEnWhile=true;
public TestVehiculo(){ // Constructor de clase vacío.
miVehiculo = new Vehiculo();
}
/** Método ComprobadorVehiculo.
* A través de la interface consola se establece comunicación con el usuario y se pone a prueba la clase Vehiculo.
*
*/
public void ComprobadorVehiculo(){
System.out.println("\fBienvenido, a continuación se va a registrar su vehículo");
System.out.println("");
do{
System.out.println("Por favor introduzca la marca según la siguiente Tabla: ");
System.out.println("1. FORD");
System.out.println("2. TOYOTA");
System.out.println("3. SUZUKI");
System.out.println("4. RENAULT");
System.out.println("5. SEAT");
tmpMarca = GestionadorEntradasTeclado.leerInt();
if((0<tmpMarca)&&(tmpMarca<6)){continuarEnWhile=false;}
else{System.out.println("");
System.out.println("Su opción es erroena, por favor vuelva a intentarlo...");
}
}while(continuarEnWhile);
System.out.println("");
System.out.println("Por favor, ahora introduzca la Matrícula del vehículo: ");
miVehiculo.setVehiculo(GestionadorEntradasTeclado.leerString(),tmpMarca);
System.out.println("\fSu vehículo quedó registrado como: ");
System.out.print("Marca: "+miVehiculo.getMarca().toString()+"\n");
System.out.print("Matricula: "+miVehiculo.getMatricula());
System.out.println("");
System.out.println("Gracias por registrar su vehículo. Hasta luego!");
} // fin main
}// fin de la clase
Clase GestionadorEntradasTeclado
/**Clase de caracter public. Sirve para leer los valores ingresados por el usuario a través del teclado. Cuenta con dos métodos tipo función: uno devuelve un objeto tipo String ingresado por el usuario a través del teclado, y el otro devuelve un valor tipo int ingresado por el usuario a través del teclado.
* @author: RaGa
* @date: 15/03/15
* @version: 01
*/
import java.util.Scanner;
public class GestionadorEntradasTeclado{
//Declaracion de campos de instancia de la clase vacío.
public GestionadorEntradasTeclado(){ // Constructor de clase vacío.
}
/**Devuelve un objeto tipo String correspondiente al valor ingresado por el usuario a través del teclado.
* @return retorna un objeto tipo String.
*/
static String leerString(){
Scanner scannerTeclado = new Scanner (System.in);
String valorTeclado = scannerTeclado.nextLine();
return valorTeclado;
}
/**Devuelve un valor tipo int correspondiente al valor ingresado por el usuario a través del teclado.
* @return retorna un valor tipo int.
*/
static int leerInt(){
Scanner scannerTeclado = new Scanner (System.in);
int valorTeclado = scannerTeclado.nextInt();
//String valorTmp = scannerTeclado.nextLine(); // para vaciar el buffer.
return valorTeclado;
}
} // Fin de la clase
Readme.txt
PROJECT TITLE: CU00681B
PURPOSE OF PROJECT: Probar la clase Vehiculo
VERSION or DATE: 31/03/15
HOW TO START THIS PROJECT: Instanciar un objeto tipo TestVehiculo y llamar al método ComprobadorVehiculo.
AUTHORS: RaGa
USER INSTRUCTIONS: Siga la instrucciones y mensajes que se presentan a través de la consola.
-
Hola RaGa
En tu código has pasado por alto cosas ya sabidas.
En la clase Vehiculo tienes un método setVehiculo que no corresponde a ningún atributo de la clase, este método gestiona al mismo tiempo los atributos matricula y marca.
Ya sabes que cada setter debe hacer una sola cosa, a saber: modificar/cambiar/establecer el nuevo valor para el atributo que gestiona.
Aunque siguiendo las intrucciones que presentas, en el IDE de BlueJ puedes crear un objeto de tipo Vehiculo que tiene un atributo enumerado, en tu código falta el método main que permitiría a tu código ejecutarse fuera del entorno que crea el IDE BlueJ.
Estoy seguro de que puedes adaptar tu programa para que cumpla estos requisitos.
Asi que manos a la obra, y nos vemos.
-
Graves errores! (no se me pueden escapar cosas tan gruesas).
Veamos ahora si con los cambios en la clase Vehiculo y TestVehiculo queda solucionado.
No publico nuevamente la clase GestionadorEntradasTeclado ya que es la misma.
Gracias toni !
Clase Vehiculo
enum MarcaDeVehiculos {FORD,TOYOTA,SUZUKI,RENAULT,SEAT};
/** Clase Vehiculo. Cada objeto se compone de la marca del vehículo y su matrícula.
* @author: RaGa
* @date: 02/04/15
* @version: 02
*/
public class Vehiculo{
//Declaración de campos de instancia
private String matricula;
private MarcaDeVehiculos marca;
public Vehiculo(){ // Constructor de clase
}
// Setters
/**El método sirve para setear la marca del vehículo.
* @param el parámetro valorMarca es de tipo int y corresponde a la marca del vehículo. Sus posibles opciones son:
* 1 = FORD
* 2 = TOYOTA
* 3 = SUZUKI
* 4 = RENAULT
* 5 = SEAT
*/
public void setMarca(int valorMarca){
switch (valorMarca){
case 1:
marca = MarcaDeVehiculos.FORD;
break;
case 2:
marca = MarcaDeVehiculos.TOYOTA;
break;
case 3:
marca = MarcaDeVehiculos.SUZUKI;
break;
case 4:
marca = MarcaDeVehiculos.RENAULT;
break;
case 5:
marca = MarcaDeVehiculos.SEAT;
break;
} // fin Switch
}
/**El método sirve para setear la matrícula del vehículo.
* @param el parámetro valorMatricula es de tipo String y corresponde a la matrícula del vehiculo.
*/
public void setMatricula(String valorMatricula){
matricula = valorMatricula;
}
// Getters
/**El método devuelve la matrícula del vehículo.
* @return la variable retornada es de tipo String.
*/
public String getMatricula(){ return matricula; }
/**El método devuelve la marca del vehículo.
* @return la variable retornada es de tipo MarcaDeVehiculo.
*/
public MarcaDeVehiculos getMarca(){ return marca; }
} //fin de la clase
Clase TestVehiculo
/** clase TestVehiculo. Sirve para poner a prueba la clase Vehiculo.
* @author: RaGa
* @date: 02/04/15
* @version: 02
*/
public class TestVehiculo{
//Declaración de campos de instancia vacía.
public TestVehiculo(){ // Constructor de clase vacío.
}
/** Método main.
* A través de la interface consola se establece comunicación con el usuario y se pone a prueba la clase Vehiculo.
*
*/
public static void main(String[] args){
Vehiculo miVehiculo = new Vehiculo();
int tmpMarca;
boolean continuarEnWhile=true;
System.out.println("\fBienvenido, a continuación se va a registrar su vehículo");
System.out.println("");
do{
System.out.println("Por favor introduzca la marca según la siguiente Tabla: ");
System.out.println("1. FORD");
System.out.println("2. TOYOTA");
System.out.println("3. SUZUKI");
System.out.println("4. RENAULT");
System.out.println("5. SEAT");
tmpMarca = GestionadorEntradasTeclado.leerInt();
if((0<tmpMarca)&&(tmpMarca<6)){continuarEnWhile=false; miVehiculo.setMarca(tmpMarca);}
else{System.out.println("");
System.out.println("Su opción es erroena, por favor vuelva a intentarlo...");
}
}while(continuarEnWhile);
System.out.println("");
System.out.println("Por favor, ahora introduzca la Matrícula del vehículo: ");
miVehiculo.setMatricula(GestionadorEntradasTeclado.leerString());
System.out.println("\fSu vehículo quedó registrado como: ");
System.out.print("Marca: "+miVehiculo.getMarca().toString()+"\n");
System.out.print("Matricula: "+miVehiculo.getMatricula());
System.out.println("");
System.out.println("Gracias por registrar su vehículo. Hasta luego!");
} // fin main
}// fin de la clase
Readme.txt
PROJECT TITLE: CU00681B
PURPOSE OF PROJECT: Probar la clase Vehiculo
VERSION or DATE: 02/04/15
HOW TO START THIS PROJECT: Ejecutar el método main de la clase TestVehiculo.
AUTHORS: RaGa
USER INSTRUCTIONS: Siga la instrucciones y mensajes que se presentan a través de la consola.
-
Hola RaGa
Ejercicio perfecto.
Muchos OK en tu ejercicio.
Clases con métodos documentados. Punto para ti.
Métodos estáticos en la clase GestionadorEntradasTeclado. Permiten usar métodos sin declarar objetos. Usar y olvidar. Punto para tí.
Solo quiero apuntar que los métodos estáticos de la clase GestionadorEntradasTeclado, no son públicos pues no has usado el modificador de acceso 'public'.
Sin esta declaración estos métodos solo son accesibles a la propia clase y a las clases del paquete al que pertenece la clase.
Saludos
-
Excelente! gracias toni !
Ya modifiqué la clase GestionadorEntradasTeclado. Quedó lista para la próxima vez que necesite usarla. Seguimos adelante!