Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
Introduccin
Creacin e inicializacin de objetos
Tipos primitivos, referencias y objetos
Recolector de basura
Comparacin de objetos
Control de acceso
Mtodos y campos de clase (o estticos)
Anidamiento de clases
Bibliografa
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
2.1 Introduccin
La clase es la unidad bsica de estructuracin en un lenguaje
orientado a objetos
Est formada por miembros:
atributos (tambin llamados campos): almacenan el estado
mtodos: definen el comportamiento
Una clase es una descripcin de un conjunto de objetos con los
mismos atributos y comportamiento
public class UnaClase {
atributos
constructores
mtodos
}
Un objeto es una instancia o ejemplar concreto de una clase
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
M. Aldea y M. Gonzlez
23/02/10
M. Aldea y M. Gonzlez
23/02/10
Atributos finales
Su valor no se puede cambiar despus de haber sido inicializados
pueden inicializarse en la definicin del atributo o en el
constructor de la clase
Inicializacin de PI
Ejemplo:
public class Crculo {
M. Aldea y M. Gonzlez
23/02/10
16
M. Aldea y M. Gonzlez
23/02/10
Prcticas de Programacin
Referencias y objetos
Cuando se declara una variable objeto la situacin es diferente
Si no se usa el operador new slo se crea una referencia a objeto
Complejo c1,c2;
c1
c2
c1
:Complejo
r=2.0
i=-3.2
c2
:Complejo
r=1.3
i=2.1
M. Aldea y M. Gonzlez
23/02/10
Prcticas de Programacin
:Complejo
r=2.0
i=-3.2
c2
:Complejo
r=1.3
i=2.1
:Complejo
r=2.0
i=1.0
c2
:Complejo
r=2.0
i=1.0
M. Aldea y M. Gonzlez
23/02/10
int a[];
M. Aldea y M. Gonzlez
23/02/10
Prcticas de Programacin
10
Complejo a[];
null
null
null
null
null
:Complejo
r=2.0
i=-3.2
null
a
M. Aldea y M. Gonzlez
23/02/10
Prcticas de Programacin
11
-3
-3
a1
-7
a2
-3
-3
a2
M. Aldea y M. Gonzlez
23/02/10
12
Prcticas de Programacin
13
:Complejo
r=2.0
i=3.2
:Complejo
r=1.3
i=2.1
c2
c2 = c1;
c1
:Complejo
r=2.0
i=3.2
:Complejo
r=1.3
i=2.1
c2
M. Aldea y M. Gonzlez
23/02/10
14
M. Aldea y M. Gonzlez
23/02/10
15
true
:Coordenada
x=2
y=-3
c1
if (c1.equals(c4)) {
...
}
c4
false
if (c1.equals(c2)) {
...
}
true
if (c1.equals(c3)) {
...
}
Prcticas de Programacin
:Coordenada
x=10
y=4
c2
c3
:Coordenada
x=2
y=-3
M. Aldea y M. Gonzlez
23/02/10
16
M. Aldea y M. Gonzlez
23/02/10
17
M. Aldea y M. Gonzlez
23/02/10
18
Parte
Pblica
Objeto
mtodo pblico 1
mtodo pblico 2
mtodos privados
Parte
Privada
mtodo pblico n
atributos
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
19
Modificadores de acceso
Se pueden poner a una clase o miembro (campo o mtodo)
indican desde dnde es accesible
Modificadores de acceso para clases:
<ninguno>: accesible desde el paquete
public: accesible desde todo el programa
Modificadores de acceso para miembros de clases:
<ninguno>: accesible desde el paquete
public: accesible desde todo el programa
private: accesible slo desde esa clase
protected: accesible desde el paquete y desde sus subclases
en cualquier paquete
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
20
Uso habitual
Lo normal es que una clase:
tenga todos sus atributos privados
slo proporcione los mtodos pblicos estrictamente
necesarios
De esta forma el estado del objeto slo puede cambiar a travs de
unos puntos de entrada bien definidos
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
21
Prcticas de Programacin
22
:Clase
i=2
:Clase
i=23
:Clase
i=125
Clase.st=10
:Clase
i=-12
:Clase
i=-45
M. Aldea y M. Gonzlez
23/02/10
23
Coche
-ltimoNumSerie: int
// constructor
public Coche(String matrcula){
ultimoNumSerie++;
numSerie=ltimoNumSerie;
this.matrcula=matrcula;
}
Prcticas de Programacin
-numSerie: int
-matrcula: string
+Coche(matrcula: string)
+matrcula(): string
+numSerie(): int
+ltimoNumSerie(): int
M. Aldea y M. Gonzlez
23/02/10
24
// retorna la matrcula
public String matrcula() {
return matrcula;
}
// retorna el nmero de serie
public int numSerie() {
return numSerie;
}
// retorna el ltimo nmero de serie usado
public static int ltimoNumSerie() {
return ltimoNumSerie;
}
}
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
25
M. Aldea y M. Gonzlez
23/02/10
26
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
27
/**
* Mtodo NO esttico: Suma el vector v con
* el vector actual
*/
public void suma(Vector2D v){
x = x + v.x;
y = y + v.y;
}
/**
* Mtodo ESTTICO: Retorna el vector
* resultado de v1+v2
*/
public static Vector2D suma(Vector2D v1,
Vector2D v2) {
return new Vector2D(v1.x+v2.x, v1.y+v2.y);
}
}
M. Aldea y M. Gonzlez
23/02/10
Prcticas de Programacin
28
// suma no esttica
v1.suma(v2);
v1
refObjeto.nombreMtodo
// suma esttica
v3=Vector2D.suma(v1,v2);
v1
:Vector
x=1.0
y=2.0
:Vector
x=6.0
y=12.0
:Vector
x=6.0
y=12.0
v2
v2
v2
:Vector
x=5.0
y=10.0
:Vector
x=5.0
y=10.0
:Vector
x=5.0
y=10.0
v3
v3
v3
:Vector
x=11.0
y=22.0
NombreClase.nombreMtodo
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
29
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
30
// atributos
private Punto pIni, pFin;
/** constructor */
public Lnea (Punto pIni, Punto pFin) {
this.pIni=pIni;
this.pFin=pFin;
}
...
}
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
31
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
32
2.9 Bibliografa
Ken Arnold, James Gosling, David Holmes, El lenguaje de
programacin Java, 3 edicin. Addison-Wesley, 2000.
Eitel, Harvey M. y Deitel, Paul J., Cmo programar en Java,
quinta edicin. Pearson Educacin, Mxico, 2004.
King, Kim N. Java programming : from the beginning. W. W.
Norton & Company, cop. 2000
Francisco Gutirrez, Francisco Durn, Ernesto Pimentel.
Programacin Orientada a Objetos con Java. Paraninfo, 2007.
Prcticas de Programacin
M. Aldea y M. Gonzlez
23/02/10
33