Autor Tema: Cómo usar tipos enumerados en Java y un tipo enumerado como campo de clase  (Leído 2729 veces)

Raultehx

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola, este es mi primer mensaje/duda en el foro, estoy cursando una ingeniería y hasta ahora nunca había visto nada de programación, así que me estoy iniciando con una asignatura de la carrera.

Mi problema es que me he bloqueado en un ejercicio y no se como solucionarlo. Básicamente tengo que implementar una clase Pelicula con sus atributos Titulo, Director, Año, Sinopsis y Género con sus métodos getter y setter de cada uno de ellos, además de un método mostrarInfoPelicula para ver por pantalla la información anterior.

Mi duda es con los tipos enumerados, la clase enum la hago correctamente pero no se muy bien como se implementa en la clase Pelicula. Os dejo el código:

Código: [Seleccionar]
public enum Genero
{
        COMEDIA, ACCION, TERROR, CIENCIA_FICCION;
}
Código: [Seleccionar]
public class Pelicula
{
    private String titulo;
    private String director;
    private int anho;
    private String sinopsis;
    private Genero genero;
   
    public Pelicula(String Titulo, String Director, int Anho, String Sinopsis, Genero genero)
    {
        titulo = Titulo;
        director =  Director;
        anho = Anho;
        sinopsis = Sinopsis;
        this.genero = genero;
    }
    public String getTitulo()
    {
        return titulo;
    }
    public void setTitulo (String Titulo)
    {
        titulo=Titulo;
    }
    public String getDirector()
    {
        return director;
    }
    public void setDirector (String Director)
    {
        director=Director;
    }
    public int getAño()
    {
        return anho;
    }
    public void setAnho (int Anho)
    {
        anho=Anho;
    }
    public String getSinopsis()
    {
        return sinopsis;
    }
    public void setSinopsis (String Sinopsis)
    {
        sinopsis=Sinopsis;
    }
    public Genero getGenero()
    {
        return genero;
    }
    public void setGenero (Genero genero)
    {
        genero=Genero.TERROR;
    }
    public void mostrarInfoPelicula(){
        System.out.println("Película: "+titulo);
        System.out.println("Director: "+director);
        System.out.println("Año: "+anho);
        System.out.println("Sinopsis: "+sinopsis);
        System.out.println("Género: "+genero);
    }
}

Seguramente sea una tontería, pero al principio esto es como aprender chino, muchas gracias por la ayuda.
« Última modificación: 07 de Mayo 2015, 09:32 por Alex Rodríguez »

fedegaray

  • Principiante
  • **
  • Mensajes: 81
    • Ver Perfil
Re:Tipos enumerados para principiante
« Respuesta #1 en: 06 de Mayo 2015, 19:04 »
Hola Raultehx, gracias por acercarte a este foro para resolver tu duda. Te comparto mi apreciación sobre tu planteo. Creo que has construido muy bien ambas clases y en general son perfectamente funcionales En lo único que habría que hacer una modificación es en el método setGenero().

Ten en cuenta que la función del tipo enumerado es limitar las posibilidades que tiene el usuario para completar un campo. El enumerado le dice que sólo puede elegir entre las opciones pre configuradas por el programa. En este caso, quien cargue los datos de cada película en general podrá completar libremente todos los rubros, a excepción de género, en el cual se saltará error si pone una opción no prevista.

El motivo por el que se crea la clase película es el de crear los espacios de memoria en los cuales se alojará la información que el usuario final de programa ingresará luego. Por ejemplo, el título de la película, que completará el campo "película" de tu clase, se alojará en una variable temporal que tu has creado con el nombre "Película" (con P mayúscula). Eso lo has hecho muy bien con todos los rubros, pero en el rubro Género no sólo has creado una variable temporal para completar el campo, sino que luego le dijiste a Java que el valor de esa variable será "terror"...

     
Código: [Seleccionar]
genero=Genero.TERROR;
Además le has puesto a la variable local "genero" el mismo nombre que al campo "genero" y al no utilizar la palabra this no le avisas a Java cual es cual.

Entonces, si lo que queremos en la clase Pelicula es sólo declarar y luego inicializar los campos, pero no completarlos aun, lo que te propongo hacer en el método setGenero() sería simplemente dejar el campo genero cargado con la variable temporal (por ejemplo valorGenero). Quedaría algo así...

Código: [Seleccionar]
public void setGenero (Genero valorGenero)
    {
        genero=valorGenero;
    }

Cuando más tarde se ejecute el programa a través del cual se cargará la información, habrá que diseñar una manera para que el usuario pueda saber con qué opciones cuenta en este rubro en particular.

Espero haberte sido de ayuda, pero sobre todo espero que vuelvas pronto. Por si no lo sabes contamos con un curso online para aprender Java desde cero de una manera didáctica y fácil en https://www.aprenderaprogramar.es/index.php?option=com_content&view=category&id=68&Itemid=188

 

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