Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Campillo en 26 de Agosto 2015, 19:33

Título: Java trabajar métodos que reciben tipos enumerados y switch palabras CU00681B#
Publicado por: Campillo en 26 de Agosto 2015, 19:33
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());
    }
}
Título: Re:Aprender a programar java desde cero/Tipos enumerados CU00681B
Publicado por: Alex Rodríguez 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
Título: Re:Java trabajar métodos que reciben tipos enumerados y switch palabras CU00681B
Publicado por: Campillo en 28 de Agosto 2015, 19:59
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());
    }
}

Título: Re:Java trabajar métodos que reciben tipos enumerados y switch palabras CU00681B#
Publicado por: Alex Rodríguez en 30 de Agosto 2015, 19:08
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