Está en la página 1de 33

Clases y POO en Java

(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

“ Todo en Java es una


Clase, define a una
Clase ó Forma parte
de una Clase”
Clases : Fundamentos
 Permiten agrupar los datos (atributos)
atributos y
el código (métodos)
métodos para manipular
dichos datos en una unidad lógica.
 Definen a un nuevo tipo de dato.
dato
 Una vez definido, se puede utilizar para
crear objetos de ese tipo (instanciación)
instanciación
 Una clase es un “módelo” para un objeto
y un objeto es una instancia de una clase.
Forma General de una
Clase
[acceso] class nombre_de_clase {
[acceso] tipo variable_instancia1= [valor];
[acceso] tipo variable_instanciaN= [valor];

[acceso] tipo método([parametros] )


{
//Cuerpo del método ...
}
}
Ejemplo de una Clase
Sencilla
Class Punto
{
int x,y;
}
 Define a una clase Punto que tiene
atributos x,y y no tiene métodos
 Ya podemos crear objetos de tipo
Punto.
Declaración de un Objeto
 Sintaxis:
Tipo nombre;
 Donde tipo es el nombre de una clase.
clase
 Ej: Punto P;
String S;
 Las declaraciones no crean nuevos
objetos, simplemente le decimos al
compilador que utilizaremos nombre para
referirnos a un objeto del tipo
especificado.
Creación de un Objeto
 Al proceso de creación de un objeto se le
denomina Instanciación.
Instanciación
 Para crear un objeto lo hacemos con el
operador new.
new
 Sintaxis: [variable=] new nombre_clase()
 El operador new reserva memoria
dinámicamente para un objeto y devuelve
una referencia al objeto recién creado . Esta
referencia puede ser ó no asignada a una
variable.
Creación de un Objeto
 Punto P=new Punto()

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.

También podría gustarte