JAVA BASICO 3
El puntero this para mi es una de las mejores cosas que existen, ya que me permite referirme a mí mismo(al objeto actual), al principio es un tanto difícil comprenderlo, pero para eso escribo este post, no?? =), teóricamente es difícil explicarles, pero se hace mucho mas entendible cuando programamos.
Lo primero que hacemos es abrir el NetBeans y creamos un nuevo proyecto, ahí definimos unos cuantos atributos, los que deseemos, en mi caso voy a definir dos String, uno llamado Nombre y otro llamado Apellido, después creamos una función con el nombre que quedramos, yo la llamare UsoPunteroThis(), ahora en el cuerpo del método ponemos la palabra reservada This, seguido de un punto y veremos lo siguiente:
Como ven, el puntero this nos permite acceder a nuestros campos y de esta manera referirnos a nosotros mismos (el objeto en cuestión), esta pequeña funcionalidad mostrada no es mas que la punta de la montaña, con el puntero this podremos hacer muchas cosas de una manera muy fácil y con menos código.
Para mostrarles más usos hagamos un ejemplo mas complejo, como siempre voy a recurrir a algunos programas que hice en la U durante mi asignatura de Programación III.
El enunciado va así:
“1. Desarrollar una clase Punto cuyos datos miembro sean las coordenadas de un punto del plano. Estos datos han de ser privados. Para esta clase se piden los siguientes constructores y métodos:
1.1 El constructor Punto que recibe como argumentos dos números reales, a y b y construye un nuevo objeto de la clase Punto cuyas coordenadas son a y b.
1.2 Los métodos de acceso coordenadaX y coordenadaY, sin argumentos, que devuelven las coordenadas de un objeto Punto.
1.3 Los métodos modificadores coordenadaX y coordenadaY, que reciben un argumento y modifican el valor de la correspondiente coordenada de un objeto Punto.
1.4 El método igual, que comprueba si un objeto de la clase Punto es igual a otro dado que se pasa como argumento.
1.5 El método distancia, sin argumentos, que calcula la distancia de un objeto de la clase Punto al origen de coordenadas.
1.6 El método distancia, que calcula la distancia de un objeto de la clase Punto a otro que se proporciona como argumento.
2. Desarrollar una clase Vector para representar vectores. Los datos miembro de esta clase son las coordenadas del vector. Estos datos han de ser privados. Para esta clase se piden los siguientes constructores y métodos:
2.1 El constructor Vector que recibe como argumentos dos números reales, a y b y construye un nuevo objeto de la clase Vector cuyas coordenadas son a y b.
2.2 El constructor Vector que recibe como argumento un objeto de la clase Punto y construye un nuevo objeto de la clase Vector cuyas coordenadas coinciden con las del objeto de la clase Punto.
2.3 El constructor Vector que recibe como argumentos dos objetos de la clase Punto, P1 y P2, y construye un nuevo objeto de la clase Vector que representa el vector de origen P1 y extremo P2.
2.4 Los métodos de acceso extremoX y extremoY, sin argumentos, que devuelven las coordenadas de un objeto Vector. OJO (Crear también un solo método )
2.5 Los métodos modificadores extremoX y extremoY, que reciben un argumento y modifican el valor de la correspondiente coordenada de un objeto Vector.
2.6 El método igual, que comprueba si un objeto de la clase Vector es igual a otro dado que se pasa como argumento.
2.7 El método longitud, sin argumentos, que calcula la longitud de un objeto de la clase Vector.
2.8 El método proporcional, que comprueba si un objeto de la clase Vector es proporcional a otro dado que se pasa como argumento.
2.9 El método perpendicular, que comprueba si un objeto de la clase Vector es perpendicular a otro dado que se pasa como argumento.
2.10 El método traslada, que recibe como argumento un objeto de la clase Punto, P, y devuelve el objeto Punto resultado de trasladar el punto P usando un objeto de la clase Vector.
3. Desarrollar una clase Recta para representar líneas rectas. Los datos miembro de esta clase son un objeto de la clase Punto perteneciente a la recta y un objeto de la clase Vector que representa la dirección de la recta. Estos datos han de ser privados. Para esta clase se piden los siguientes constructores y métodos:
3.1 El constructor Recta que recibe como argumentos un objeto de la clase Punto, P, y un objeto de la clase Vector, v, y construye un nuevo objeto de la clase Recta que representa a la recta que pasa por P con dirección v.
3.2 Los métodos de acceso punto y vector, sin argumentos, que devuelven respectivamente los objetos Punto y Vector, datos miembro de un objeto Recta.
3.3 Los métodos modificadores punto y vector, que respectivamente reciben como argumento un objeto de la clase Punto y un objeto de la clase Vector, y modifican el correspondiente dato miembro de un objeto Recta.
3.4 El constructor Recta que recibe como argumento un objeto de la clase Vector, v, y construye un nuevo objeto de la clase Recta que representa a la recta que pasa por el origen de coordenadas con dirección v.
3.5 El constructor Recta que recibe como argumentos dos objetos de la clase Punto, P1 y P2, y construye un nuevo objeto de la clase Recta que representa a la recta que pasa por P1 y P2.
3.6 El método perpendicular, que comprueba si un objeto de la clase Recta es perpendicular a otro dado que se pasa como argumento.
3.7 El método paralela, que comprueba si un objeto Recta es paralelo a otro que se pasa como argumento.
3.8 El método pertenece, que recibe como argumento un objeto Punto P, y comprueba si P se encuentra en la recta representado por un objeto Recta.
3.9 El método igual, que comprueba si un objeto de la clase Recta es igual a otro dado que se pasa como argumento.
3.10 El método paralelaPunto, que recibe como argumento un objeto Punto P, y construye la representación de la recta paralela a un objeto Recta que pasa por el punto P.
3.11 El método perpendicularPunto, que recibe como argumento un objeto Punto P, y construye la representación de la recta perpendicular a un objeto Recta que pasa por el punto P. “
Huy esta vez sí que esta largo =), pero no nos preocupemos, cuando esté terminado será una nada.
Primero agregamos a nuestro proyecto existente la clase “Punto”, esta tendrá dos constructores, uno sin parámetros y otro con dos parámetros del tipo float (no me detendré a explicar todo lo del programa ya que gran parte de este es muy banal), luego creamos los métodos de acceso para los atributos de la clase punto y además ponemos dos métodos llamados “distancia”, uno con parámetros y otro sin parámetros, hasta aquí tenemos 90 y mas porciento hecho de la clase punto, pero nos falta un método, que es que nos interesa para nuestro aprendizaje del puntero this, es el referente al punto 1.4 que nos indica que debemos crear un método que reciba como parámetro un objeto del tipo “Punto” y comprobar si son iguales, en primera instancia muchos de ustedes dirán pues hay que comprobar si las coordenadas son iguales y si son ambas iguales entonces devolver true, mmmmm pero como ya sabemos que el puntero this es una referencia a si mismo de parte de un objeto pues se me ocurre solo hacer una comprobación, que quedaría de la siguiente manera:
public boolean igual(Punto p)
{
if(this==p)//Puntero this, ayuda a la referenciacion automática al mismo objeto
{
return true;
}
else
{
return false;
}
}
Este fragmento de código se ve demasiado simple, pero como les dije, el puntero this nos simplificara muchísimo la vida =).
Ahora procedemos con la siguiente clase llamada “Vector”, esta al igual que la anterior tiene múltiples constructores, posee sus respectivos métodos de acceso y otros cálculos sin importancia, pero como en la anterior clase hay dos métodos importantes para nuestro aprendizaje del uso del puntero this, que son los puntos 2.6 y 2.8; El referente al punto 2.6 es igual que en nuestra clase punto:
public boolean igual(Vector v)
{
if(this==v)
return true;
else
return false;
}
En este caso si nos simplifico mucho más que en la otra clase ya que la cantidad de comprobaciones que hubieran sido necesarias son mayores.
Ahora el referente al punto 2.8, nos muestra que con el puntero this podemos además de ingresar a los atributos, ingresar a los métodos del objeto:
public boolean proporcional(Vector v)
{
if(v.largo()%this.largo()==0)
return true;
else
return false;
}
Creo que no es necesaria la explicación, está muy notorio el uso que le dimos aquí.
Ahora la última clase que nos queda por hacer es la “Recta”, como con el resto, hacemos sus constructores pedidos, luego procedemos a crear los métodos de acceso y por ultimo creamos algunos métodos extras que se pidan, ahora el método que nos interesa es el referente al punto 3.10, donde a través del puntero this, se manda parte del objeto
public Recta paralelaPunto(Punto punto)
{
return new Recta(punto,this.v);
}
Este no es el mejor ejemplo de esta funcionalidad del puntero this, pero sirve como un vistazo, bueno creo que hasta aquí ya está todo hecho y espero que hayan comprendido algunos de los usos del puntero this. En una próxima entrada de esta serie les voy a mostrar de mejor manera la última funcionalidad.
Espero que le haya servido este post
bye.
Comentarios
Publicar un comentario