Documentos de Académico
Documentos de Profesional
Documentos de Cultura
(1a Parte)
Por: William R. Yánez R.
Agosto 2001
Contenido de Esta Clase
Clases y Objetos: Fundamentos
Forma General de una Clase
Declaración de un objeto
Creación de un Objeto (new)
Referencias a Objetos
Métodos: Parámetros. Devolución
de Valor.
Clases : Fundamentos
Punto
P x
y
Referencias a Objetos
Las variables que declaramos
indicando que su tipo es una clase se
denominan “Referencia a Objetos”.
Se puede decir que se comportan
como un “apuntador” al objeto
Una Referencia es el mecanismo que
tenemos para acceder a los
miembros de un objeto.
Acceso a Miembros de un
Objeto
Se hace a través de la referencia al
objeto y el operador . (punto)
P
Ejemplo:
Punto P= new Punto(); Punto
P.x=3; x=3
P.y=5; y=5
System.out.println(P.x+” ”+P.y);
Métodos
Es la interfaz funcional de la clase. Son las
rutinas que disponemos para manipular el
objeto.
Forma general:
[acceso] tipo método([tipo param1,...] )
{
//Cuerpo del método ...
[ return valor; ]
}
Si el método no retorna ningún valor tipo
debe ser void
Ejemplo de un método
Class Punto {
int x,y;
void Mostrar() {
System.out.print(“X= “ + x);
System.out.print(“Y= “ + y);
}
}
Mostrar() es un método que no recibe
parámetros y no devuelve ningún valor.
Paso de Parámetros a un
Método
Cuando se declara un método se
especifica el número y tipo de
parámetros requeridos por el método.
Ej: void Inicializar (int valorX, int
valorY)
Llamada al método: P.Inicializar(3,5);
Los parámetros se pueden pasar:
Por Valor (Tipo Simple)
Por Referencia (Objetos)
Métodos: Devolución de un
Valor
Los métodos pueden devolver un valor.
Se debe especificar el tipo del valor de
retorno en la declaración del método.
El valor puede ser:
Un Tipo Simple (int, char, boolean, etc..)
Un Objeto
Para retornar un valor lo hacemos con la
sentencia return
Ejemplo: return x;
El tipo de x debe corresponder con el tipo
especificado en la declaración del método.
Devolución de un Valor
Agreguemos a la clase Punto un método
que nos permita calcular la distancia de un
punto a otro:
float distancia(int cx, int cy){
int dx=x-cx;
int dy=y-cy;
float dist=Math.sqrt(dx*dx + dy*dy);
return dist;
}
Devolución de un Valor
Ejemplo de uso del método distancia:
Punto P=new Punto();
P.x=6;
P.y=5;
float d=P.distancia(2,2);
System.out.println(“Distancia=” +d);
(debe mostrar Distancia=5)
Devolución de un Valor
Un método puede retornar una
referencia a un objeto. Veamos:
Punto copiar() {
Punto Q=new Punto();
Q.x=x;
Q.y=y;
return Q;
}
Devolución de un Valor
El uso del nuevo método copiar de la
clase Punto sería:
Punto P=new Punto();
P.x=5; P.y=3;
Punto R=P.copiar();
System.out.println(“R=”+R.x+”,”+R.y);
(debe imprimir R=5,3)
Constructor de una Clase
El Constructor de una Clase es un
método especial que es invocado por el
interprete Java cada vez que creamos
una nueva instancia de la misma.
Usualmente su función es inicializar los
atributos del objeto con la idea de que
el objeto este inicializado en un estado
consistente.
Constructor de una Clase
El Constructor es un método cuyo
nombre es el mismo de la clase.
No se coloca ningún tipo de retorno
en su declaración, ya que
implicitamente retorna una referencia
al objeto que se está creando.
Puede recibir parametros.
Constructor de una Clase
Cuando creamos un objeto con el operador
new realmente estamos llamando al
constructor de la clase.
Ej: Punto P=new Punto()
Se esta llamando al constructor de la clase
Punto. (¿ Cual ? )
Si no escribimos ningún constructor Java
crea un constructor por defecto que no
recibe parametros y su cuerpo es vacio. Ej:
Punto() {}
Constructor de una Clase
Un constructor para la clase punto
podría ser así:
Punto() {
x=-1;
y=-1;
}
Y cada vez que creamos un objeto
Punto este tendría inicializado en sus
atributos x,y con el valor de –1.
Constructor de una Clase
Ejemplo:
Punto P=new Punto();
Punto
P x -1
y -1
Constructor de una Clase
Un Constructor también puede
recibir parámetros, para indicar los
valores iniciales de los atributos de
la clase.
Punto(int valorX, int valorY ) {
x=valorX;
y=valorY;
}
Uso de this
La palabra reservada this se utiliza
para referirse explícitamente a un
miembro de una clase en el cuerpo
de un método de la misma clase.
Ejemplo:
Punto( int x, int y){
this.x=x; this.y=y;
}
SobreCarga de Métodos
La Sobrecarga permite que
tengamos varias versiones de un
mismo método, pero que difieren en
su lista de parametros.
Deben coincidir el nombre y el valor
de retorno del método sobrecargado.
Por Ejemplo, en la clase Punto
podemos tener otro método llamado
distancia.
SobreCarga de Métodos
float distancia(Punto P) {
return distancia(P.x,P.y);
}
El compilador diferencia a cual
versión del método nos referimos
por la lista de parametros.
Control de Acceso
public
Es visible desde cualquier parte.
private
Es visible solamente dentro de la clase que lo
define.
protected
Es visible solamente dentro de la clase que lo
define y sus subclases (herencia).
Por Defecto:
Es visible solo desde las clases del mismo paquete.
Variables de Clase (Static)
Son definidas usando la palabra clave static
Ejemplo: static int contador;
Existe una sola copia de la variable para
todas las instancias de la clase
El acceso a la variable se hace a través del
nombre de la clase
Las Variables static final son constantes en
tiempo de compilación (igual al #define de C)
Métodos de Clase (Static)
Son definidos usando la palabra clave
static
El acceso al método se hace a través del
nombre de la clase.
No pueden hacer referencia a Variables y
Métodos de Instancia.
La ventaja es que podemos usarlos sin
necesidad de instanciar un objeto de la
clase. (Ej: Math y System son clases con
métodos estaticos )
Recolección de Basura
Es la técnica que utiliza Java para liberar la
memoria ocupada por objetos que ya no se
utilizan.
El “recolector de basura” es un hilo de baja
prioridad que va liberando la memoria de los
objetos que no tienen referencias.
Si queremos ejecutar la recolección de basura de
manera forzada usamos System.gc().
Ademas, las clases pueden tener un método
“finalizador” que se encarga de liberar los
recursos usados por los objetos (Ej: archivos,
sockets, etc...)
El Método Finalizador
Es ejecutado antes que el recolector de basura
elimine al objeto.
Su sintaxis debe ser:
protected void finalize(){
//Cuerpo del método
}
El interprete de Java puede finalizar sin
recolectar basura, así que algunos finalizadores
quizá no se invoquen. En este caso el SO
liberará todos los recursos usados por los
objetos.