Autor Tema: Java trabajar métodos que reciben tipos enumerados y switch palabras CU00681B#  (Leído 4940 veces)

Campillo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Clase Vehiculo

Código: [Seleccionar]
/**
 * Es una clase con un enumerado de marcas
 *
 * @author Campillo
 * @version 26/08/2015
 */
public class Vehiculo
{
    enum MarcaDeVehiculo{ FORD, TOYOTA, SUZUKI, RENAULT, SEAT };
    private String matricula;
    private MarcaDeVehiculo marca;

    //Crear variables
    MarcaDeVehiculo marcaVehiculo;

    /**
     * Constructor for objects of class Vehiculo
     */
    public Vehiculo()
    {

    }

    /**
     * Método para establecer la matricula de un vehiculo
     * @param valor_matricula que es el valor que tendrá la matrícula
     */
    public void setMatricula(String valor_matricula){
        matricula = valor_matricula;
    }

    /**
     * Método para establecer la marca del vehículo
     * @param valor_marca que es el nombre de la marca que tiene el vehículo
     */
    public void setMarca(String valor_marca){
        switch(valor_marca){
            case "ford": marcaVehiculo = MarcaDeVehiculo.FORD;
            break;
            case "toyota": marcaVehiculo = MarcaDeVehiculo.TOYOTA;
            break;
            case "suzuki": marcaVehiculo = MarcaDeVehiculo.SUZUKI;
            break;
            case "renault": marcaVehiculo = MarcaDeVehiculo.RENAULT;
            break;
            case "seat": marcaVehiculo = MarcaDeVehiculo.SEAT;
            break;
            default: System.out.println("La marca no existe");
        }
    }

    /**
     * Método para obtener la matrícula
     * @return matrículo del vehículo
     */
    public String getMatricula(){ return matricula; }

    /**
     *
     */
    public String getMarca(){ return marcaVehiculo.toString().toLowerCase(); }
}


Clase TestVehiculo

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

/**
 * Esta clase crea un objeto vehiculo y permite poner su marca y matricula y despues muestra por pantalla los datos introducidos
 *
 * @author Campillo
 * @version 26/08/2015
 */
public class TestVehiculo
{
    public static void main(String [] Args){
        Vehiculo vehiculo1 = new Vehiculo();
        System.out.println("Escribe la matricula del vehiculo:");
        Scanner escribirMatricula = new Scanner(System.in);
        String matricula = escribirMatricula.nextLine();
        vehiculo1.setMatricula(matricula);
        System.out.println("Escribe la marca del vehiculo:");
        Scanner escribirMarca = new Scanner(System.in);
        String marca = escribirMarca.nextLine();
        vehiculo1.setMarca(marca);
        System.out.println("La matricula del vehiculo es:" + vehiculo1.getMatricula());
        System.out.println("La matricula del vehiculo es:" + vehiculo1.getMarca());
    }
}
« Última modificación: 30 de Agosto 2015, 19:04 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Aprender a programar java desde cero/Tipos enumerados CU00681B
« Respuesta #1 en: 28 de Agosto 2015, 14:21 »
Hola Campillo, el ejercicio está correcto

Te planteo un pequeño reto para que si tienes ganas lo resuelvas (sería una ampliación del ejercicio que puede resultar útil para ver cómo enfocar problemas de programación)


1. Cambia el nombre del método getMarca y ponle getMarcaString

2. Crea un método getMarca que devuelva un objeto de tipo MarcaDeVehiculo

3. Cambia el nombre del método setMarca(String valor_marca) y ponle setMarcaString(String valor_marca)

4. Crea un método setMarca que reciba un objeto de tipo MarcaDeVehiculo y en base al valor recibido establezca el atributo correspondiente

5. En el main, crea dos objetos de tipo Vehiculo y muestra sus datos. En uno de ellos opera con Strings pidiendo datos al usuario. En otro, opera con valores de MarcaDeVehiculo directamente.

El objetivo de todo esto es ver cómo se puede trabajar sin String usando directamente objetos del tipo enumerado

Saludos

Campillo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Clase Vehiculo

Código: [Seleccionar]
/**
 * Es una clase con un enumerado de marcas
 *
 * @author Campillo
 * @version 26/08/2015
 */
public class Vehiculo
{
    enum MarcaDeVehiculo{ FORD, TOYOTA, SUZUKI, RENAULT, SEAT };
    private String matricula;
    private MarcaDeVehiculo marca;

    //Crear variables
    MarcaDeVehiculo marcaVehiculo;

    /**
     * Constructor for objects of class Vehiculo
     */
    public Vehiculo()
    {

    }

    /**
     * Método para establecer la matricula de un vehiculo
     * @param valor_matricula que es el valor que tendrá la matrícula
     */
    public void setMatricula(String valor_matricula){
        matricula = valor_matricula;
    }

    /**
     * Método para establecer la marca del vehículo
     * @param valor_marca que es el nombre de la marca que tiene el vehículo
     */
    public void setMarcaString(String valor_marca){
        switch(valor_marca){
            case "ford": marcaVehiculo = MarcaDeVehiculo.FORD;
            break;
            case "toyota": marcaVehiculo = MarcaDeVehiculo.TOYOTA;
            break;
            case "suzuki": marcaVehiculo = MarcaDeVehiculo.SUZUKI;
            break;
            case "renault": marcaVehiculo = MarcaDeVehiculo.RENAULT;
            break;
            case "seat": marcaVehiculo = MarcaDeVehiculo.SEAT;
            break;
            default: System.out.println("La marca no existe");
        }
    }
   
    public void setMarca(MarcaDeVehiculo valor_marca){
        marca = valor_marca;
    }

    /**
     * Método para obtener la matrícula
     * @return matrículo del vehículo
     */
    public String getMatricula(){ return matricula; }

    /**
     *
     */
    public String getMarcaString(){ return marcaVehiculo.toString().toLowerCase(); }
   
    public MarcaDeVehiculo getMarca(){ return marca; }
}



Clase TestVehiculo

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

/**
 * Esta clase crea un objeto vehiculo y permite poner su marca y matricula y despues muestra por pantalla los datos introducidos
 *
 * @author Campillo
 * @version 26/08/2015
 */
public class TestVehiculo
{
    public static void main(String [] Args){
        Vehiculo vehiculo1 = new Vehiculo();
        Vehiculo vehiculo2 = new Vehiculo();
        System.out.println("Escribe la matricula del vehiculo:");
        Scanner escribirMatricula = new Scanner(System.in);
        String matricula = escribirMatricula.nextLine();
        vehiculo1.setMatricula(matricula);
        System.out.println("Escribe la marca del vehiculo:");
        Scanner escribirMarca = new Scanner(System.in);
        String marca = escribirMarca.nextLine();
        vehiculo1.setMarcaString(marca);
        System.out.println("La matricula del vehiculo es:" + vehiculo1.getMatricula());
        System.out.println("La matricula del vehiculo es:" + vehiculo1.getMarcaString());
        System.out.println("Escribe la matricula del otro vehiculo:");
        Scanner escribirMatricula1 = new Scanner(System.in);
        String matricula1 = escribirMatricula1.nextLine();
        vehiculo2.setMatricula(matricula1);
        vehiculo2.setMarca(Vehiculo.MarcaDeVehiculo.SEAT);
        System.out.println("La matricula del vehiculo es:" + vehiculo2.getMatricula());
        System.out.println("La marca del vehiculo es: " + vehiculo2.getMarca());
    }
}

« Última modificación: 30 de Agosto 2015, 19:05 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, veo que te has animado con la propuesta que te hice y además lo has hecho perfectamente. El objetivo era ver cómo un método get o set normalmente debe operar directamente el atributo (en este caso de tipo MarcaDeVehiculo), aunque podamos tener otros get y set que operen de forma auxiliar con otros formatos como String. Igualmente comprobar cómo operar estos métodos. Poco más que comentar, perfectamente resuelto por tu parte

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