viernes, 16 de mayo de 2008

Enumerations


Hoy vamos a dedicarle la entrada a los objetos de clase Enumerations, dichos objetos tienen como finalidad organizar las constantes , expliquemoslo con un ejemplo :


Nos Creamos nuestro Objeto Enum tiene como valores constantes A,B,C y D que son los niveles de acceso

package eticom.nums;

/**
* @author Administrador

*
*/

public enum NivelDeAcceso {


A, B, C, D }

-------------------------------------------------------------------------------------------



Nos creamos la clase Acceso que tendra como atributo niveldeaceso un objeto de mi enums que creamos con anterioridad y redifiniremos el metodo equals para poder comparar el objeto(si tienes dudas de como se hace mas abajo esta la explicación)



package eticom;
import eticom.nums.NivelDeAcceso;

/**
* @author Administrador
*

*/
public class Acceso {


public NivelDeAcceso niveldeacceso;

/**
* Constructor por defecto
*/

public Acceso() {
}

/**

* Constructor que crea el objeto pasandole un objeto de clase enum
*

* @param nivelParametro

* Mandatory
*/
public Acceso(NivelDeAcceso nivelParametro) {
niveldeacceso = nivelParametro;
}
/**
* Redefinir Metodo Equals
*/

public boolean equals(Object a) {
boolean respuesta = false;
Acceso u = (Acceso) a;
if (u.niveldeacceso.equals(this.niveldeacceso)) {
respuesta = true;
};
return respuesta;

}
}
--------------------------------------------------------------------------------
Bien ahora nos crearemos la prueba y veremos la utilidad a todo esto, haremos una prueba que comparara un objeto de clase Acceso con otro de clase Acceso si quieres comparar Acceso literalmente y por algun casual te equivocas al escribir el valor ejemplo:

String admin = new String("Acceso A");
String usuario = new String("acceso A");

assert(admin.equals(usuario)):"No son iguales"

Dara fallo ya que uno empieza en mayusculas y otro en minuscula pero si nos creamos un enums estamos obligados a escoger un valor constante si no no compilara ,bien despues de esta parrafada hagamos la prueba:


/**
*
*/
package eticom;
/**
* @author Administrador
*

*/

import org.testng.annotations.Test;

import eticom.nums.NivelDeAcceso;

@Test

public class AccesoTest {

/**
* Prueba de la clase Acceso
*/

public void pruebaAcceso() {
Acceso admin = new Acceso(NivelDeAcceso.A);
Acceso usuario = new Acceso(NivelDeAcceso.B);
Acceso usuario2 = new Acceso(NivelDeAcceso.A);
assert (admin.equals(usuario2)) : "No tienen el mismo acceso";
assert (!admin.equals(usuario)) : "tienen el mismo acceso";
}
}

No hay comentarios: