Autor Tema: Ejercicio resuelto tipos enumerados Java (CU00681B) Objetos con clase enum  (Leído 8289 veces)

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
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é:



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

Saludos!
« Última modificación: 15 de Abril 2015, 21:44 por Ogramar »
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejercicio (CU00681B), Objetos con clase enum
« Respuesta #1 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

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Re:Ejercicio (CU00681B), Objetos con clase enum
« Respuesta #2 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!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejercicio (CU00681B), Objetos con clase enum
« Respuesta #3 en: 15 de Abril 2015, 17:59 »
¿Puedes pegar el código que falta para que compile? (la clase del lector...)

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
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();
    }
}
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
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.

 

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