Aprendiendo JAVA (VIII)


java9.jpg

Antes de profundizar en los fundamentos de las clases de java veremos algunos aspectos sueltos que se van quedando por el camino.

Comenzaremos con el operador this. Hemos visto este operador en los setters que creamos de forma automática en las clases. Por el ejemplo en el último ejercicio aparecía, entre otras, esta sentencia:

  • public void setNumelepri(int numelepri) {
  • this.numelepri = numelepri;
  • }

Si miramos aquel ejercicio veremos que uno de nuestros atributos era: int numelepri. En tal caso si el setter anterior lo escribiremos de la siguiente manera:

  • public void setNumelepri(int numelepri) {
  • numelepri = numelepri;
  • }

El compilador tendría un problema al no saber si estamos asignando el paramento numelepri al atributo numelepri o inversa. En estos casos y para hacer referencia a los propios elementos de la clase utilizaremos el operador this. Por tanto this.numelepri siempre será el atributo ya que es elemento de la clase.

Otro operador que no hemos mencionado es el operador ternario ? que puede sustituir a ciertos tipos de sentencias if-then-else. La sintaxis general de este operador es: expresión1 ? expresion2 : expresion3;

La expresion1 es cualquier expresión que evalúe un valor booleano. Si expresion1 es true, se devuelve la expresion2 como resultado; en caso contrario, se evalúa la expresion3 y se devuelve como resultado. Veamos un ejemplo:

Abramos la aplicación Eclipse y creemos un nuevo proyecto llamado siete, al que añadiremos la clase operador con la opcion public static void main(String[] args) marcada, y escribiremos el siguiente código:

  • public class operador {
  • public static void main(String[] args) {
  • int a;
  • int b;
  • a=10;
  • b=a<0 ? -a: a; //obtenemos el valor absoluto de a
  • System.out.print("El valor absoluto de ");
  • System.out.println(a + " es " + b);
  • a=-20;
  • b=a<0 ? -a: a; //obtenemos el valor absoluto de a
  • System.out.print("El valor absoluto de ");
  • System.out.println(a + " es " + b);
  • }
  • }
primera3.JPG

Hemos comentado que usaremos el operador new cuando creamos un objeto de una clase dada. Este operador además de crear el objeto también reservar el espacio suficiente en memoria para que el objeto pueda existir.

Cuando desarrollemos grandes programas en los que muchos objetos son creados simultáneamente también tendremos que plantearnos que hacemos con esos objetos, y el espacio de memoria que utilizan, cuando ya no sean necesarios.

En algunos lenguajes, por ejemplo en C++, la eliminación de esos objetos debe hacerse de forma manual utilizando el método delete. En cambio en java ese procedimiento es automático y totalmente transparente para el programador.

Cuando un objeto ya no esta referenciado por ningún elemento se entiende que el mismo ya no es necesario y automáticamente se elimina. No obstante antes de eliminarse se ejecuta un último método llamado finalize.

Si precisamos hacer algo en concreto con un objeto justo antes de que sea eliminado ese será nuestro método, por ejemplo cerrar una conexión a una base de datos. No obstante debemos preveer alguna otra manera de ejecutar las operaciones del método finalize ya que no sabemos en que momento se ejecutara, de hecho ni siquiera sabemos si se llegara a ejecutar. La sintaxis de este método no encierra ningún problema:

  • protected void finalize
  • {
  • Código;
  • }

Protected es un especificador de acceso, como también lo son private y public.

Se puede acceder a cualquier elemento declarado public desde cualquier parte del programa. No se puede acceder a un elemento declarado como private desde fuera de su clase. Cuando a un miembro le falta una especificación explicita de acceso, resulta visible para las subclases y para otras clases del mismo paquete. En esto consiste el acceso por defecto.

Si se quiere que un elemento sea visible desde fuera de su paquete actual, pero solamente para subclases derivadas directamente de la clase a la que pertenece el elemento, hay que declararlo como protected.

A partir de la última versión de java, J2SE5, se incorpora un nuevo elemento: las enumeraciones. Una enumeración es una estructura que permite definir valores para un tipo de dato concreto. Los tipos enum son ideales para colecciones de valores contantes tales como meses del año, días de la semana, horas del día, etc. Veamos un ejemplo.

En principio haremos clic con el botón derecho del ratón sobre nuestro proyecto siete y seleccionaremos New->Enum. Llamaremos DiaSemana a la enumeración y pulsaremos finalizar. En la enumeración colocaremos el siguiente código:

  • public enum DiaSemana {
  • L(1,"Lunes"),M(2,"Martes"),X(3,"Miercoles"),J(4,"Jueves"),
  • V(5,"Viernes"),S(6,"Sabado"), D(7,"Domingo");
  • String nombre;
  • int nJornada;
  • DiaSemana(int n, String nombre){
  • nJornada=n;
  • this.nombre=nombre;
  • }
  • int jornada(){return nJornada;}
  • String nombre(){return nombre;}
  • }

Como podemos ver en este código una enumeración puede ser al más que un tipo de valor simple y convertirse en complejo. Una enumeración más simple seria:

  • public enum Respuestas{
  • "Si", "No", "Puede", "A lo mejor"}

En nuestra enumeración creamos unos valores complejos, un constructor al que llamaremos cada vez que entremos en la enumeración y dos métodos que realmente son dos get que devuelven los valores del numero de día o jornada y del nombre del día.

Para probar esta enumeración comentaremos el código que anteriormente escribimos en la clase operador y añadiremos otro, quedando tal y como sigue:

  • public static void main(String[] args) {
  • /*int a;
  • int b;
  • a=10;
  • b=a<0 ? -a: a; //obtenemos el valor absoluto de a
  • System.out.print("El valor absoluto de ");
  • System.out.println(a + " es " + b);
  • a=-20;
  • b=a<0 ? -a: a; //obtenemos el valor absoluto de a
  • System.out.print("El valor absoluto de ");
  • System.out.println(a + " es " + b);*/
  • for(DiaSemana dia: DiaSemana.values()){
  • System.out.println("Nº " + dia.jornada() + " nombre " +
  • dia.nombre() + " con el identificador " + dia);
  • }
  • }

Como podemos observar usaremos un for mejorado. Creamos un variable día del tipo de la enumeración que vamos a recorrer, en este caso DiaSemana. Por cada vuelva imprimimos el numero del día o jornada de la semana, el nombre del día de la semana y el identificador que le hemos creado. El resultado será:

segunda2.JPG

Enlaces interesantes

  • ¿Qué te ha parecido el artículo?

  • Compartir

    Comparte tu opinión ahora


Relacionados con Aprendiendo JAVA (VIII)

Temas sobre Aprendiendo JAVA (VIII)

Opiniones sobre Aprendiendo JAVA (VIII)

Hace 6 años y 9 meses

Hemos comprobado que el formato automático del código cortaba partes de las líneas de mismo, creando un código incorrecto.
Ya hemos solucionado el problema y se ha repasado todo el código publicado, esperamos que de ahora en adelante se formatee de forma correcta. De todos modos si alguien observar algo extraño agradecemos siempre los avisos. Gracias a todos y disculpar las molestias.


Opina sobre Aprendiendo JAVA (VIII)

Nombre:

Tu email:

Página web (si tienes):

Opinar:

Escoge el recuadro negro: para evitar spam