Autor Tema: Tipos enumerados (enum) Java como atributos propiedades o campos clase CU00681  (Leído 5064 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas noches.

Dejo aquí una solución del ejercicio CU00681B del curso Java desde cero.

Citar
EJERCICIO

Crea una clase Vehiculo donde definas un tipo enumerado MarcaDeVehiculo cuyos valores posibles serán FORD, TOYOTA, SUZUKI, RENAULT, SEAT. Establece como atributos de la clase matricula (tipo String) y marca (tipo MarcaDeVehiculo) y crea los métodos getters (para obtener) y setters (para establecer el valor) de los atributos. Escribe un pequeño programa de prueba donde verifiques que los métodos funcionan correctamente.

El código de la clase "Vehiculo":

Código: [Seleccionar]
/**
 * Clase para crear objetos "Vehiculo" de tipo "enum" con atributos "matricula" y "marca".
 * @author: Dimitar S. Stefanov
 * version: 11/03/2016/A
 *  @see <a href="http://aprenderaprogramar.com">aprenderaprogramar.com - Didáctica en programación</a>
 */
public class Vehiculo{
    enum MarcaDeVehiculo {FORD, TOYOTA, SUZUKI, RENUALT, SEAT};
   
    private String matricula;
    private MarcaDeVehiculo marca;
   
    /**
     * Constructor del objeto que define los atributos.
     */
    public Vehiculo(){
        matricula = "";
        marca = null;
    }
   
    /**
     * Mediante un parámetro se establece la matrícula del vehículo
     * @param matricula El valor del parámetro que se introduzca será el valor de la matrícula. 
     */
    public void setMatricula(String matricula){
        this.matricula = matricula;
    }
   
    /**
     * Mediante un parámetro se establece la matrícula del vehículo
     * @param marca El valor del parámetro que se introduzca será el valor de la marca. 
     */
    public void setMarca(MarcaDeVehiculo marca){
        this.marca = marca;
    }
   
    /**
     * Método para obtener la matrícula del Objeto
     * @param Devuelve el valor de la matrícula.
     */
    public String getMatricula(){return matricula;}
   
    /**
     * Método para obtener la marca del Objeto.
     * @param Devuelve el valor de la marca.
     */
    public MarcaDeVehiculo getMarca(){return marca;}
}

El código de la clase "Test":

Código: [Seleccionar]
import java.util.Scanner;

public class Test{
    public static void main(String []Args){
        String entradaTeclado;
        Vehiculo vehiculo = new Vehiculo();
        Scanner sc = new Scanner(System.in);
        System.out.println("\f");
        System.out.print("Entra matrícula: ");
        entradaTeclado = sc.nextLine();
        vehiculo.setMatricula(entradaTeclado);
        System.out.println("La matrícula del vehícuo es: "+vehiculo.getMatricula());
        System.out.println("Entra alguna de las siguentes marcas de vechículos: Ford, Toyota, Suzuki, Renault, Seat ");
        entradaTeclado = sc.nextLine();
        if(entradaTeclado.equalsIgnoreCase("Ford")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.FORD);
       }else if(entradaTeclado.equalsIgnoreCase("Toyota")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.TOYOTA);
        }else if(entradaTeclado.equalsIgnoreCase("Suzuki")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.SUZUKI);
        }else if(entradaTeclado.equalsIgnoreCase("Renault")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.SUZUKI);
        }else if(entradaTeclado.equalsIgnoreCase("Seat")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.SEAT);
        }
        else{
            System.out.println("No has elegido ninguna de las marcas enumaradas.");
        }
       
        if(entradaTeclado.equalsIgnoreCase("Ford") || entradaTeclado.equalsIgnoreCase("Toyota") || entradaTeclado.equalsIgnoreCase("Suzuki") || entradaTeclado.equalsIgnoreCase("Renault") || entradaTeclado.equalsIgnoreCase("Seat")){
        System.out.println("La marca es: "+vehiculo.getMarca());
       }else{
        System.out.println("Inténtalo de nuevo :)");
        }
    }
}

Gracias
« Última modificación: 13 de Marzo 2016, 20:13 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola! Bastante bien!

Recomendación importante: evita realizar comprobaciones ya realizadas. Evita repetir!

Por ejemplo en este código evitamos una larga secuencia de if aprovechando lo hecho anteriormente:

Código: [Seleccionar]
import java.util.Scanner;

public class Test{
    public static void main(String []Args){
        boolean todoCorrecto = true;
        String entradaTeclado;
        Vehiculo vehiculo = new Vehiculo();
        Scanner sc = new Scanner(System.in);
        System.out.println("\f");
        System.out.print("Entra matrícula: ");
        entradaTeclado = sc.nextLine();
        vehiculo.setMatricula(entradaTeclado);
        System.out.println("La matrícula del vehícuo es: "+vehiculo.getMatricula());
        System.out.println("Entra alguna de las siguentes marcas de vechículos: Ford, Toyota, Suzuki, Renault, Seat ");
        entradaTeclado = sc.nextLine();
        if(entradaTeclado.equalsIgnoreCase("Ford")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.FORD);
       }else if(entradaTeclado.equalsIgnoreCase("Toyota")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.TOYOTA);
        }else if(entradaTeclado.equalsIgnoreCase("Suzuki")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.SUZUKI);
        }else if(entradaTeclado.equalsIgnoreCase("Renault")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.SUZUKI);
        }else if(entradaTeclado.equalsIgnoreCase("Seat")){
        vehiculo.setMarca(Vehiculo.MarcaDeVehiculo.SEAT);
        }
        else{
            todoCorrecto=false;
            System.out.println("No has elegido ninguna de las marcas enumaradas.");
        }
       
        if(todoCorrecto){
        System.out.println("La marca es: "+vehiculo.getMarca());
       }else{
        System.out.println("Inténtalo de nuevo :)");
        }
    }
}

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Hola, César.

Debo decir, una manera mucho más cuidadosa y organizada de sustituir la parte del código que se me repetía a mí. Yo también pensaba "a ver como puedo sustituir toda esa repiticion", pero no se me ocurrió nada. Espero que con el tiempo y la experiencia a mí también me salgan estas cosas :)

Gracias por corregir otro ejercicio más. (Ya he corregido (copiado) el código de la clase "Test" de acuerdo con tus observaciones).

Saludos

 

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".