Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Dan_SB en 14 de Abril 2015, 04:19

Título: Ejercicio resuelto tipos enumerados Java (CU00681B) Objetos con clase enum
Publicado por: Dan_SB en 14 de Abril 2015, 04:19
Buenas noches!!

Vengo a resolver el ejercicio del capitulo 81° del curso. Su enunciado es el siguiente:

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.

Mi clase Vehiculo:
Código: [Seleccionar]
package VehiculosENUM;

public class Vehiculo {
    private enum MarcaVehiculo{FORD,TOYOTA,SUZUKI,RENAULT,SEAT};
    private String matricula;
    private MarcaVehiculo marca;
   
    public Vehiculo(){
        matricula = "";
        marca = null;
    }
   
    public void setMatricula(String datoMatricula){
        matricula = datoMatricula;
    }
   
    public void setMarca(String datoMarca){
        switch(datoMarca){
            case "Ford":
            case "ford":
                marca = MarcaVehiculo.FORD;
            break;
            case "Toyota":
            case "toyota":
                marca = MarcaVehiculo.TOYOTA;
            break;
            case "Suzuki":
            case "suzuki":
                marca = MarcaVehiculo.SUZUKI;
            break;
            case "Renault":
            case "renault":
                marca = MarcaVehiculo.RENAULT;
            break;
            case "Seat":
            case "seat":
                marca = MarcaVehiculo.SEAT;
            break;
            default:
                System.out.println("Marca de vehiculo no registrado.");
            break;
        }
    }
   
    public String getMatricula(){
        return matricula;
    }
   
    public String getMarca(){
        return marca.toString().toLowerCase();
    }
}

Mi clase main para hacer la prueba:
Código: [Seleccionar]
package VehiculosENUM;

public class Main {
    public static void main(String[]args){
        Lector.Lectores leer = new Lector.Lectores();
        Vehiculo carro = new Vehiculo();
        String dato;
        System.out.println("Ingrese matricula del vehiculo: ");
        dato = leer.leerCadena();
        carro.setMatricula(dato);
        System.out.println("Ingrese marca de carro(Ford,Toyota,Suzuki,Renault,Seat).");
        dato = leer.leerCadena();
        carro.setMarca(dato);
        System.out.println("La marca del carro es " + carro.getMarca() + ".\nLa matricula es: " + carro.getMatricula() + ".");
    }
}

Sip. como ven aqui, mi clase Lectores esta ubicado en otro paquete, de esta manera accedo a el! asi me ahorro el tiempo en estar creando clases y clases de lectores.. Patrón:

nombrePaquete.nombreClase

Bueno y aquí el resultado de mi prueba, funciona todo bien como pensé:

(http://i.imgur.com/eeRgDD3.png)

Esperare sus respectivas correcciones si algo anda mal.. o si el codigo puede hacerse mas sencillo!

Saludos!
Título: Re:Ejercicio (CU00681B), Objetos con clase enum
Publicado por: Alex Rodríguez en 15 de Abril 2015, 10:21
Hola Dan, creo que te ha faltado incluir una clase porque no logro compilar el código (la clase Lector)

Para evitar esta repetición:

switch(datoMarca){
            case "Ford":
            case "ford":
                marca = MarcaVehiculo.FORD;
            break;

Podrías haber usado un if (datoMarca.equalsIgnoreCase("ford")) { ... } y creo que hubieras ahorrado algunas líneas.

Saludos
Título: Re:Ejercicio (CU00681B), Objetos con clase enum
Publicado por: Dan_SB en 15 de Abril 2015, 16:57
Hola!

Se me paso ponerlo, juraba que lo había puesto :(, Lector es el paquete que contiene la clase "Lectores" por cierto!

Lo de la repetición tienes razón, me hubiese ahorrado unos cuantos..  D:

Gracias!
Título: Re:Ejercicio (CU00681B), Objetos con clase enum
Publicado por: Alex Rodríguez en 15 de Abril 2015, 17:59
¿Puedes pegar el código que falta para que compile? (la clase del lector...)
Título: Re:Ejercicio resuelto tipos enumerados Java (CU00681B) Objetos con clase enum
Publicado por: Dan_SB en 15 de Abril 2015, 22:38
Hola!!

Perdón!! es que daba clases! ya estoy en casa, aquí esta:

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

public class Lectores {
    public String leerCadena(){
        Scanner in = new Scanner(System.in);
        return in.nextLine();
    }
   
    public int leerNumero(){
        Scanner in = new Scanner(System.in);
        return in.nextInt();
    }
}
Título: Re:Ejercicio resuelto tipos enumerados Java (CU00681B) Objetos con clase enum
Publicado por: Alex Rodríguez en 16 de Abril 2015, 07:57
Hola Dan lo veo todo bien pero como solemos recomendar poner nombres descriptivos y en singular a las clases, la clase Lectores no tiene un nombre descriptivo ni en singular, sería preferible LectorEntradasTeclado, eso describe lo que hace la clase. En cambio Lectores es poco descriptivo. Saludos.