Tipos Enumerados con BlueJ Tipos Enumerados con BlueJ Si necesitamos un grupo de valores constantes pero no está predefinido, podemos usar el tipo enum. También, el tipo enum es una alternativa sobre el uso tradicional de las constantes public static. Definir Por ejemplo deseamos crear el tipo enum para utilizar los Rumbos que incluirá los valores norte, sur, este y oeste, seguimos tres pasos: Ahora sólo tenemos que incluir los valores norte, sur, este y oeste, para ello hacemos doble clic en la clase Rumbos y luego escribimos los valores Y luego compilamos. Nótese que aunque escriba letras, NO utilizo las comillas (“) o el apóstrofo (‘) Por Toni Peris. Tutor UNED Dénia 1/5 Tipos Enumerados con BlueJ También puedo utilizar objetos en el tipo Enum. Por ejemplo si tengo un grupo de electrodomésticos con sus medidas puedo crear una clase Enum que incluya el constructor y algunos métodos para usarlos Y compilamos Nótese que al acabar con los objetos …frigo hay un (;) Ahora algunos métodos más como el get y set para ver las medidas y cambiar las medidas respectivamente. Utilizar Desde otra clase podemos utilizarlos de forma similar a otra clase pero siempre anteponiendo el tipo y luego el valor. Por ejemplo: Rumbo.norte Como campo o atributo Por Toni Peris. Tutor UNED Dénia 2/5 Tipos Enumerados con BlueJ En condicionales y valores de variables Posición que ocupa en la enumeración un determinado valor: en la definición hemos enumerado los valores, internamente se asocia a una posición. Veamos la posición en el ejemplo: Se puede acceder a esta posición mediante el método ordinal() Por ejemplo: Nótese que comienza por la posición 1 y NO por la posición 0; Por Toni Peris. Tutor UNED Dénia 3/5 Tipos Enumerados con BlueJ Y ahora con los objetos con los enumerados: Nótese que las posiciones del ordinal usando objetos empiezan por 0 Código completo public enum Rumbos { norte,sur,este,oeste } public enum Electrodomesticos { lavadora(60,60,20), encimera(2,60,60), frigo(180,60,60); private int alto; private int profundidad; private int ancho; Electrodomesticos (int alto, int profundidad, int ancho){ this.alto=alto; this.profundidad=profundidad; this.ancho=ancho; } public int getAlto (){return this.alto;} public int getProfundidad (){return this.profundidad;} public int getAncho (){return this.ancho;} public void setAlto (int alto){this.alto=alto;} public void setProfundidad (int profundidad){this.profundidad=profundidad;} public void setAncho (int ancho){this.ancho=ancho;} } Por Toni Peris. Tutor UNED Dénia 4/5 Tipos Enumerados con BlueJ public class Uso { public static void main(String[] args) { //definición Rumbos miRumbo = Rumbos.sur; //impresión System.out.println (miRumbo); //condicionales if (miRumbo == Rumbos.norte){ System.out.println ("Voy al Norte"); } switch (miRumbo){ case norte: System.out.println ("Voy al Norte"); break; case sur: System.out.println ("Voy al Sur"); break; case este: System.out.println ("Voy al Este"); break; case oeste: System.out.println ("Voy al Oeste"); break; default: System.out.println ("Sin rumbo conocido"); } //imprime la posición del valor de la variable MiRumbo System.out.println (miRumbo.ordinal()); // imprime 1 //definición Electrodomesticos miFrigo=Electrodomesticos.frigo; //impresión System.out.println (miFrigo); //condicionales if (miFrigo.getAncho()== 60){ System.out.println ("Mide 60 de ancho"); } switch (miFrigo.getAlto()){ case 10: System.out.println ("mide de alto 10"); break; case 40: System.out.println ("mide de alto 40"); break; default: System.out.println ("Otra medida"); } //imprime la posición del valor de la variable System.out.println ("frigo "+miFrigo.ordinal()); // imprime 2 } } //imprime la posición del valor de la variable Electrodomesticos miLavadora; miLavadora =Electrodomesticos.lavadora; System.out.println ("lavadora "+miLavadora.ordinal()); // imprime 0 Por Toni Peris. Tutor UNED Dénia 5/5