Está en la página 1de 56

Curso de JAVA - CIases y Objetos 1 WiIson PeIez Hernndez

' ' ' '


WiIson PeIez Hernndez WiIson PeIez Hernndez
Curso de JAVA - CIases y Objetos 2 WiIson PeIez Hernndez
CLASES Y
OBJETOS
CLASES Y
OBJETOS
Curso de JAVA - CIases y Objetos 3 WiIson PeIez Hernndez
Contenido
- Concepto de clase en JAVA
- Declaracin de una clase
- Caractersticas de las clases en JAVA
- Representacin en UML
- Sintaxis para declarar una variable
- Sintaxis para declarar un mtodo
- Variables miembro de objeto
- Mtodos de objetos
- Variables y mtodos de clase
- Clases, variables y mtodos finales
- Ejemplo clase Rectngulo
- Constructores
Curso de JAVA - CIases y Objetos 4 WiIson PeIez Hernndez
Contenido
- Constructores de la clase rectangulo
- Los objetos
- Envo de mensajes
- Destruccin de objetos
- Ciclo de vida de un objecto
- Finalizadores
- Inicializadores estaticos
- Resumen de cmo se carga una clase/objeto
Curso de JAVA - CIases y Objetos 5 WiIson PeIez Hernndez
-Una clase es una agrupacin de datos (variables) y
de funciones que operan sobre esos datos
(mtodos).
-[public] class Classname{
//definicin de variables y mtodos
.
}
-Un objeto es un ejemplar concreto de una clase.
Las clases son como tipos de variables, mientras
que los objetos son como variables concretas de
un tipo determinado.
-Classname unObjeto;
-Classname otroObjeto;
Concepto de clase Concepto de clase
Curso de JAVA - CIases y Objetos 6 WiIson PeIez Hernndez
-Todas las variables y funciones de Java deben
pertenecer a una clase. No hay variables ni
funciones globales.
-Si una clase deriva de otra (extends), hereda todas
sus variables y mtodos.
-Java tiene una jerarqua de clases estndar de la
que pueden derivar las clases que crean los
usuarios.
-Por defecto, las clases de usuario derivan de una
clase de Java llamada Object
Concepto de clase
Curso de JAVA - CIases y Objetos 7 WiIson PeIez Hernndez
[pubIic][finaI][abstract] cIass Nclace [extends Cmadre][impIements Int1, int2.] {
}
eclaracin de una clase
!:ede ser :sada
por c:alq:ier clase
en c:alq:ier parte
No p:ede
tener clases
hijas
No p:ede ser
instanciada
Indica de
q:e clase
desciende
Indica q:e
interface
implementa
Curso de JAVA - CIases y Objetos 8 WiIson PeIez Hernndez
Caractersticas de las clases
-Slo se puede heredar de una clase (en Java no
hay herencia multiple)
-En un fichero no puede haber ms de una clase
public. Este fichero se llama como la clase public
con extencion *.java.
-Con algunas excepciones, lo habitual es escribir
una sola clase por fichero.
-Si una clase contenida en un fichero no es public,
no es necesario que el fichero se llame como la
clase.
Curso de JAVA - CIases y Objetos 9 WiIson PeIez Hernndez
Caractersticas de las clases
-Los mtodos de una clase pueden referirse de
modo global al objeto de esa clase al que se
aplican por medio de la referencia this.
-Las clases se pueden agrupar en packages,
introduciendo una linea al comienzo del fichero
(package packageName;).
-Una interface es un conjunto de declaraciones
de funciones. Si una clase implementa una
interface, debe definir todas las funciones
especificadas por la interface. Una clase puede
implementar ms de una interface.
Curso de JAVA - CIases y Objetos 10 WiIson PeIez Hernndez
Caracteristicas de las clases de
Java
-Las interfaces pueden definir tambin variables
finales.
-Una interface puede derivar de otra interface o
incluso de varias interfaces.
-Una interface sirve para crear referencias a
objetos. Cuando el nombre de un objeto es de un
tipo de interface, a travs de dicho nombre slo se
puede utilizar los mtodos declarados por dicha
interface.
Curso de JAVA - CIases y Objetos 11 WiIson PeIez Hernndez
#epresentacin UML
Curso de JAVA - CIases y Objetos 12 WiIson PeIez Hernndez
Sintaxis para declarar una
variable miembro
Curso de JAVA - CIases y Objetos 13 WiIson PeIez Hernndez
Sintaxis para mtodos
Curso de JAVA - CIases y Objetos 14 WiIson PeIez Hernndez
'ariables miembros de
objetos
-Las variables miembros de una clase pueden ser
tipos primitivos (int, long, double,.) u objetos de
otra clase (composicin).
-Las variables miembros se inicializan en el orden
en que aparecen en el cdigo de la clase.
-Importante, porque unas variables pueden
apoyarse en otras variables previamente definidas.
Curso de JAVA - CIases y Objetos 15 WiIson PeIez Hernndez
'ariables miembros de
objetos
-Las variables miembros de tipos primitivos se
inicializan siempre de modo automtico, incluso
antes de llamar al constructor.
-Los tipos booleam se inicializan a false
-Los tipos char se inicializan al carcter nulo
\u0000
-Los tipos numericos (byte, short, int, long, float,
double) se inicializan a cero.
Curso de JAVA - CIases y Objetos 16 WiIson PeIez Hernndez
'ariables miembros de
objetos
-Las variables miembros de tipo referencia se
inicializan a null.
-Tambin pueden inicializarse explcitamente en la
declaracin, como las variables locales, por medio
de constanates o llamadas a mtodos.
-double x=0.0, y=0.0, r=1.0;
-De todas formas, lo ms adecuado es inicializarlas
en el constructor.
Curso de JAVA - CIases y Objetos 17 WiIson PeIez Hernndez
Mtodos de Objeto
-Los mtodos son funciones definidas dentro de
una clase, que se aplican siempre a un objeto de la
clase (excepto los mtodos de la clase), que es su
argumeto implcito.
-La primera linea de la definicin de un mtodo se
llama declaracin o hearder el cdigo
comprendido entre la llaves {.} es el cuerpo o
body de la funcin.
-Los mtodos tienen visibilidad directa de las
variables miembro.
Curso de JAVA - CIases y Objetos 18 WiIson PeIez Hernndez
Mtodos de Objeto
-Se puede acceder a ellas medianate la referencia
this si hay alguna variable local o argumento
explcito que las oculta.
-El valor de retorno puede ser un valor de tipo
primitivo o una referencia.
-Se puede devolver tambin un objeto por medio
de un nombre de interface. Se puede devolver
como valor de retorno un objeto de la misma
clase o de una sub-clase, pero nunca de una
super-clase.
Curso de JAVA - CIases y Objetos 19 WiIson PeIez Hernndez
Mtodos de Objeto
-Los mtodos pueden definir variables locales.
-Su visibilidad llega desde la definicin al final del
bloque {.} en el que han sido definidas.
-No hace falta inicializarlas cuando se definen, pero
el compilador no permite utilizarlas sin haberlas
inicializado.
-Una clase puede redefinir (overridden) el mtodo
heredado de una superclase. En este caso el
mtodo debe tener los mismos argumentos en tipo
y nmero que el mtodo redefinido
Curso de JAVA - CIases y Objetos 20 WiIson PeIez Hernndez
Mtodos de Objeto
-En Java no se pueden pasar mtodos como
argumentos.
-Los argumentos de los tipos primitivos se pasan
siempre por valor.
-Las referencias se pasan tambin por valor, pero
a travs de ellas se pueden modificar los objetos
referenciados.
Curso de JAVA - CIases y Objetos 21 WiIson PeIez Hernndez
Mtodos de objeto
-Los mtodos de la super-clase que han sido
redefnidos pueden ser accedidos por medio de la
palabra super.
-Slo se puede subir un nivel en la jerarqua de
clases.
-Dentro de un mtodo se pueden crear variables
locales que dejan de existir al terminar la
ejecucin del mtodo.
Curso de JAVA - CIases y Objetos 22 WiIson PeIez Hernndez
Mtodos de objetos
-Si un mtodo devuelve this (es decir, un objeto de
la clase) ese objeto puede encadenarse con otra
llamada a otro mtodo de la misma o de diferente
clase y as sucesivamente.
- En este caso aparecern varios mtodos en la
misma sentencia unidos por el operador punto (.).
-String numeroComoString="3.14.1592654;
-Double x=
Double.valueOf(numeroComoString).DoubleValu
e();
Curso de JAVA - CIases y Objetos 23 WiIson PeIez Hernndez
Mtodos de objetos
-Se puede aplicar un mtodo a un objeto concreto
poniendo el nombre del objeto y luego el nombre
del mtodo separados por un punto.
-Por ejemplo, para calcular el rea de un objeto
de la clase circulo llamado c1 se escribe:
c1.area();
Curso de JAVA - CIases y Objetos 24 WiIson PeIez Hernndez
Sobrecarga de mtodos
-Puede haber mtodos sobrecargados
(overloaded): varios mtodos con el mismo
nombre que se diferencian por el nmero y/o tipo
de los argumentos.
-El valor de retorno no influye en la eleccin del
mtodo sobrecargado (en realidad es imposible
saber lo que se va a hacer con l)
Curso de JAVA - CIases y Objetos 25 WiIson PeIez Hernndez
Sobrecarga de mtodos
-A la hora de llamar a un mtodo sobrecargado, si
existe un mtodo cuyos argumentos se ajustan
exactamente se llama ese mtodo.
-Si el mtodo que se ajuste exactamente no existen
se promueven los argumentos al tipo
inmediatamente superior (char a int, int a long)
y se intenta llamar al mtodo correspondiente.
-Si slo existen mtodos con argumentos de un tipo
menos amplio (int en vez de long), hay que hacer
un cast explcito porque pude perderse informacin
al llamar al mtodo.
Curso de JAVA - CIases y Objetos 26 WiIson PeIez Hernndez
'ariables y mtodos de
clase
-Cada objeto tiene su propia copia de las variables
miembro.
-Por ejemplo, cada objeto de la clase Circulo tiene
sus propias coordenadas en el centro x e y, y su
propio radio r.
-Los mtodos y las variables de clase se crean
anteponiendo la palabra static
-Los mtodos y las variables de una clase son lo
ms parecido que Java tiene a las funciones y
variables globales de C/C++.
Curso de JAVA - CIases y Objetos 27 WiIson PeIez Hernndez
'ariables y mtodos de
clase
-Una clase puede tener variables propias de la clase
y no de cada objeto.
-A estas variables se les llama variables static de
clase.
- Se crean al invocar la clase, sin necesidad de
crear objetos de la clase.
-Puede haber mtodos que no acten sobre objetos
concretos a travs del operador punto
Curso de JAVA - CIases y Objetos 28 WiIson PeIez Hernndez
'ariables y mtodos de
clase
-A estos mtodos se les llama mtodos static o de
clase.
-Los mtodos static pueden recibir mtodos de una
clase como argumentos.
-No pueden utilizar la referencia this, ya que no
tienen argumento implcito.
-Para llamarlos se puede utilizar el nombre de la
clase (no es imprescindible), en vez del nombre de
un objeto de la clase.
Curso de JAVA - CIases y Objetos 29 WiIson PeIez Hernndez
'ariables y mtodos de
clase
-Si no se les da valor, las variables miembros static
se inicializan con los valores por defecto para los
tipos primitivos.
-Las variables miembros static se inicializan
cuando es necesario:
-Cuando se va a crear el primer objeto de la clase.
-Cuando se llama a un mtodo static o
-Se utiliza una variable static de dicha clase.
-Las variables miembros static se inicializan
siempre antes de que se cree cualquier objeto de
la clase
Curso de JAVA - CIases y Objetos 30 WiIson PeIez Hernndez
Clases, variables y mtodos
finales.
-Una variable declarada como final no puede
cambiar su valor a lo largo de la ejecucin del
programa. Puede ser considerada como una
constante.
-Se puede separar la inicializacin de la
definicin de una variable final.
-La inicializacin puede hacerse ms tarde en
tiempo de ejecucin llamando a mtodos o en
funciones de otros datos.
Curso de JAVA - CIases y Objetos 31 WiIson PeIez Hernndez
Clases, variables y mtodos
finales.
-Es constante (no puede cambiar), pero no tiene
por que tener el mismo valor en todas las
ejecuciones del programa.
-Un mtodo final no puede ser redefinido por una
clase que derive de su propia clase.
-Una clase final no puede ser heredada por otra
clase (no pueden tener clases derivadas).
Curso de JAVA - CIases y Objetos 32 WiIson PeIez Hernndez
Clases, variables y mtodos
finales.
-Las clases finales se ejecutan de modo ms
eficiente. La JVM - Java 'irtual Machine- ya sabe
que sus mtodos no pueden ser redefinidos por
otras clases derivadas.
-Declarar como final un objeto miembro de una
clase hace constante la referencia, pero no el
propio objeto, que puede ser modificado.
-En Java no es posible hacer que un objeto sea
constante.
Curso de JAVA - CIases y Objetos 33 WiIson PeIez Hernndez
Ejemplo: Clase #ectangulo
-Vamos a crear una clase denominada Rectangulo,
que describa las caractersticas comunes a estas
figuras planas que son las siguientes:
-El origen del rectngulo: el origen o posicin de la esquina
inferior izquierda del rectngulo en el plano determinado
por dos nmeros enteros x e y.
-Las dimensiones del rectngulo: ancho y alto, otros dos
nmeros enteros.
Curso de JAVA - CIases y Objetos 34 WiIson PeIez Hernndez
Ejemplo: Clase #ectangulo
-Hemos definido los atributos o miembros dato de
la clase Rectangulo, ahora le vamos aadir un
comportamiento:
-Los objetos de la clase Rectangulo sabrn calcular su
rea,su perimetro, tendrn capacidad para trasladarse a
otro punto del plano, sabrn si contienen en su interior un
punto determinado del plano.
Curso de JAVA - CIases y Objetos 35 WiIson PeIez Hernndez
Ejemplo: Clase #ectangulo
Curso de JAVA - CIases y Objetos 36 WiIson PeIez Hernndez
Constructores
-Un constructor es una funcin o mtodo que se
llama automticamente cada vez que se crea un
objeto de una clase.
-La principal funcin del constructor es reservar la
memoria e inicializar las variables miembros de la
clase.
-Java no permite que hayan variables miembros
que no estn inicializadas. Si pueden haber
variables locales de funciones sin inicializar.
Curso de JAVA - CIases y Objetos 37 WiIson PeIez Hernndez
Constructores
-Los constructores no tienen valor de retorno (ni
siquiera void) y su nombre es el mismo que el de
la clase.
-De ordinario una clase tiene varios constructores,
que se diferencian por el tipo y nmero de sus
argumentos (funciones o mtodos sobrecargados).
-Se llama constructor por defecto al constructor que
no tiene argumentos.
- El programador debe proporcionar en el cdigo
valores iniciales adecuados.
Curso de JAVA - CIases y Objetos 38 WiIson PeIez Hernndez
Constructores
-Un constructor de una clase puede llamar a otro
constructor previamente definido en la misma
clase por medio de la palabra this.
-La palabra this solo puede aparecer en la primera
sentencia de un constructor.
-El constructor de una clase derivada puede llamar
al constructor de su clase padre por medio de la
palabra sper, seguida de los argumentos
apropiados.
- Por lo anterior, un constructor solo tiene que
inicializar directamente las variables no heredadas.
Curso de JAVA - CIases y Objetos 39 WiIson PeIez Hernndez
Constructores
-Si el programa no prepara ningn constructor para
una clase, el compilador crea un constructor por
defecto.
-Inicializando las variables de los tipos primitivos
a cero, los string a la cadena vaca y las
referencias a objetos a null.
-Los constructores pueden ser tambin public,
private, protected y package.
-Si un constructor es private, ninguna otra clase
puede crear un objeto de esa clase.
Curso de JAVA - CIases y Objetos 40 WiIson PeIez Hernndez
Constructores
-Puede haber mtodos public (factory methods) que
llamen al constructos y devuelvan un objeto de esa
clase.
-Los constructores solo pueden ser llamados por
otros constructores o por mtodos static.
-No pueden ser llamados por los mtodos de
objetos de la clase.
Curso de JAVA - CIases y Objetos 41 WiIson PeIez Hernndez
-Funciones constructoras de la clase Rectangulo.
Ejemplo: Clase #ectangulo
Curso de JAVA - CIases y Objetos 42 WiIson PeIez Hernndez
-Para crear un objeto de una clase se usa la palabra
reservada new.
-new reserva espacio en memoria para los
miembros dato y devuelve una referencia que se
guarda en una variable del tipo "clase
Los objetos
Curso de JAVA - CIases y Objetos 43 WiIson PeIez Hernndez
-Desde un objeto llamamos a las funciones
miembro para realizar una determinada tarea, a
este proceso se le conoce como envo de
mensajes.
Envio de mensajes
Curso de JAVA - CIases y Objetos 44 WiIson PeIez Hernndez
-En Java no hay destructores como en C++.
-El sistema se ocupa automticamente de liberar la
memoria de los objetos que ya han perdido la
referencia esto es objeto cuyo nombre ya no
permite acceder a ellos, por ejemplo:
-Por haber llegado al final del bloque en el que la referencia
haba sido definida.
-Porque a la referencia se le haba asignado el valor null.
-Porque a esa referencia se le haba asignado un objeto
diferente.
estruccin de objetos
Curso de JAVA - CIases y Objetos 45 WiIson PeIez Hernndez
-A esta caracterstica de liberar memoria de modo
automtico se le llama garbage collection
(recogida de basura).
-Una forma de hacer que un objeto quede sin
referencia es cambiar esta a null, haciendo por
ejemplo: Objetoref=null.
-No se sabe cuando se va a activar exactamente en
garbage collector.
-Si no falta memoria es posible que no se active
nunca.
estruccin de objetos
Curso de JAVA - CIases y Objetos 46 WiIson PeIez Hernndez
estruccin de objetos
-Se puede llamar explcitamente al garbage
collector con system.gc(), aunque esto es solo una
"sugerencia que se enva a la JMV.
-Un finalizador es un mtodo que se llama
automticamente al destruir un objeto (antes de
que la memoria sea liberada de modo automtico
por el sistema).
-Se utilizan para ciertas operaciones de terminacin
distintas de liberar memoria (cerrar ficheros,
cerrar conexiones, liberar memoria reservada por
funciones nativas, etc.)
Curso de JAVA - CIases y Objetos 47 WiIson PeIez Hernndez
-Un finalizador es un mtodo de objeto (no static),
sin valor de retorno (void), sin argumentos y que
siempre se llama finalize().
-Los finalizadores se llaman de modo automtico
siempre que estn definidos. Un finalizador debera
terminar llamando al finalizador de su superclase.
-No se puede saber el momento preciso en que los
finalizadores van a ser llamados.
-En muchas ocasiones ser conveniente que el
programador realice de modo explcito esas
operaciones de finalizacin.
inalizadores
Curso de JAVA - CIases y Objetos 48 WiIson PeIez Hernndez
-El garbage collector slo libera la memoria
reservada con new. Si por ejemplo se ha reservado
memoria con funciones nativas en C (utilizando
malloc()) esta memoria hay que liberarla
explcitamente con l mtodo finalize().
-El mtodo system.runFinalization () "sugiere a la
JVM que ejecute los finalizadores de los objetos
pendientes (que han perdido la referencia).
-Parece ser que hay que llamar primero a gc() y
luego a runFinalization().
inalizadores
Curso de JAVA - CIases y Objetos 49 WiIson PeIez Hernndez
-Un inicializador static es una funcin (un bloque
de cdigo{.} definido en la clase) que se llama
automticamente al iniciarse el programa (al crear
la clase).
-Se diferencia del constructor que no es llamado
para cada objeto, sino una sola vez en toda la
clase.
-Se crean dentro de la clase, mtodos sin nombre y
sin valor de retorno, con tan solo la palabra static
y el cdigo entre llaves{.}.
Inicializadores estticos Inicializadores estticos
Curso de JAVA - CIases y Objetos 50 WiIson PeIez Hernndez
Inicializadores estticos
-Los tipos primitivos pueden inicializarse
directamente con asignaciones, pero para
inicializar objetos o elementos mas complicados es
bueno utilizar un inicializador (bloque{.}) que
permita gestionar excepciones con try..catch.
-En una clase pueden definir varios inicializadores
static, que se llaman en el orden en que han sido
definidos.
-Los inicializadores static se pueden utilizar para
dar valor a las variables static
Curso de JAVA - CIases y Objetos 51 WiIson PeIez Hernndez
-Adems se suelen utilizar para llamar a mtodos
nativos, esto es mtodos escritos por ejemplo en C
(llamando a los mtodos system.load() o
system.loadLibrary(),que leen las librerias
nativas).
-En java 1.1 existen tambin inicializadores de
objeto, que no llevan la palabra static.
-Se utilizan para las clases annimas, que no tienen
constructores. En este caso se llaman cada vez
que se crea un objeto de la clase.
Inicializadores estticos
Curso de JAVA - CIases y Objetos 52 WiIson PeIez Hernndez
-Al crear el primer objeto de la clase o a utilizar el
primer mtodo o variable static se localiza la clase
en el disco (fichero*.class) y se carga en memoria.
-Se ejecutan los inicializadores static (solo un a
vez).
#esumen de cmo se carga
una clase
Curso de JAVA - CIases y Objetos 53 WiIson PeIez Hernndez
#esumen de cmo se carga
una clase
-Para crear un objeto nuevo:
-Se comienza reservando memoria.
-Se da valor por defecto a las variables miembros
de los tipos primitivos.
-Se ejecutan los inicializadores explcitos o de
objeto.
-Se ejecutan los constructores
Curso de JAVA - CIases y Objetos 54 WiIson PeIez Hernndez
Taller
Curso de JAVA - CIases y Objetos 55 WiIson PeIez Hernndez
Bibliografia
W%utoriaI Basico de Java Sun Microsystem
WAprenda Java como si estuviera en primero
WCurso de Java Javier Pardo (1999)
WJava desde Cero
Guia deI tema
WIntroduccin a Ia programacion OO
Con Java. C. %omas Wu
Wttp://www.bruceeckeI.com/
Otras referencias
Curso de JAVA - CIases y Objetos 56 WiIson PeIez Hernndez
in in