Autor Tema: Ejemplo tipos enumerados (enum) Java. Declaración. Ejercicio CU00681B.  (Leído 4877 veces)

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Mi versión del Ejercicio propuesto en la Entrega Nº81. Ejercicio CU00681B.

Clase Vehiculo
Código: [Seleccionar]
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
Código: [Seleccionar]
/** 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
Código: [Seleccionar]
/**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
Citar
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.
« Última modificación: 05 de Abril 2015, 23:43 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
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.

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
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
Código: [Seleccionar]
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
Código: [Seleccionar]
/** 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
Citar
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.

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
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

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Excelente! gracias toni !
Ya modifiqué la clase GestionadorEntradasTeclado. Quedó lista para la próxima vez que necesite usarla. Seguimos adelante!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".