Beruflich Dokumente
Kultur Dokumente
1.
2.
3
3.
4.
Germn Molt
Escuela Tcnica Superior de Ingeniera Informtica
5.
Objetivos y Bibliografa
Objetivos:
Bibliografa:
Weiss, M.A.
Weiss
M A Estructuras de datos en Java
Java.Adisson-Wesley,
Adisson-Wesley 2000.
2000
Captulos 2 (Apartado 2.5) 3 y 4
Arnow, D., Weiss G. Introduccin a la Programacin con Java. Un
enfoque
f
orientado
i t d a objetos.Adisson-Wesley,
bj t Adi
W l 2001.
2001 Captulo
C t l 14
3
Referencias en Java
102
408
Al hacer:
Memoria
Circulo c2 = c1;
La variable referencia c2 pasa a tener el mismo valor que
c1, es decir, ambas apuntan al mismo objeto.
7
Ej
Ejemplo:
l d
definicin
fi i i d
de los
l Atributos
A ib
d
de lla Clase
Cl
Circulo
Ci l
private
private
private
private
Elementos q
que aparecen
p
en la implementacin
p
de una clase:
El operador this.
Modificadores estticos, dinmicos y finales de una Clase y sus
componentes.
Modificadores de visibilidad public y private de una Clase y sus
componentes
componentes.
double radio;
String color;
static final double RADIO_POR_DEFECTO = 3.0;
static final Color COLOR_POR_DEFECTO = Color.black;
Se p
podra utilizar this ppara referenciar a
los atributos (i.e., this.radio) pero no es
necesario puesto que no hay aliasing de
nombres.
}
15
14
Ejercicios Propuestos
Ejercicio 1: Escribe la clase Manzana que tiene un sabor, de tipo
entero que representa una escala [0,10].
[0 10]
Por defecto, la manzana tiene un sabor de 5, aunque se puede especificar
su sabor al crearla.
Manipulacin:
lla di
directiva
ti import;
i
t la
l variable
i bl d
de entorno
t
CLASSPATH la
CLASSPATH;
l
instruccin package.
import java.util.*;
public class MiClase(){
...
Date fecha = new Date();
...
}
18
2.
3.
20
package org.grycap.otropaquete;
class Clase1{
import org.grycap.paquete.*;
}
La creacin en Clase 2 es correcta?
Clase 1 NO tiene modificador de
visibilidad Acceso friendly (solo
accesible desde clases del mismo
ppaquete).
q
) Clase 2 ppertenece a otro
paquete: org.grycap.paquete.Clase1 is not
C
Clase1
c1 = new Clase1();
C
()
Acceso Correcto
package org.grycap.paquete;
public class Clase3{
Paquete
Subclase
Mundo
private
No
No
No
ninguno
No
No
protected
No
public
}}
22
P
Paquete
t
Existe alguna relacin entre las clases,
Ejemplos: Clases de java.util,
aunque no realicen la misma funcionalidad.
javax.swing, etc.
Modificadores de visibilidad.
Constructores de la derivada.
S
Sobrescritura
de mtodos.
Definicin de Atributos
Existe una relacin TIENE UN(A) o
relacin de composicin entre las Clases
Herencia Java
Ejemplos: clase base Figura y sus
derivadas Circulo, Rectangulo, ...
23
Clase
21
Visibilidad
Modificador
}}
Y la de Clase 3?
Ejercicio de Persona
La relacin ES UN(A)
Si X ES UN(A)
( ) Y,
Y (Base)
Figura
Crculo
Ejemplo: Qu relacin guardan
entre s un cuadrado, un tringulo, un
crculo y un rectngulo?
g
X (Derivada)
25
Rectngulo
Cuadrado
26
El Mecanismo de la Herencia
La Herencia permite la formacin de
Y (Base)
Jerarquas de Clases para reutilizar cdigo.
X hereda (puede referenciar) todos los
atributos y mtodos que no sean privados X (Derivada)
en Y.
X es una clase completamente nueva e independiente.
Los cambios que sufra X NO afectan a Y, lo que simplifica el
mantenimiento del cdigo.
Objeto
28
Implicaciones:
Si la clase Base NO define un constructor por defecto (sin
argumentos), la clase Derivada obligatoriamente deber definir un
constructor que invoque al de la clase Base con los argumentos
correspondientes.
29
30
1.
2.
3.
Mtodo toString():
Especificacin:
Imlementacin:
Sobreescritura parcial:
Cuando
C
d no se desea
d
cambiar
bi completamente
l t
t ell
comportamiento del mtodo de la clase Base. Se utiliza super
ppara invocar el mtodo de la clase Base.
33
}
34
El criterio
i i puede
d ser modificado
difi d para objetos
bj
d
de una
clase sobreescribiendo el mtodo equals (Ej. Figura):
Respetar ell perfil
R
fil ((cabecera)
b
)d
dell mtodo
d equals
l
Modificar criterio atendiendo a los atributos de la clase.
Ejercicio de Yogures
36
Polimorfismo en Java
Enlace Dinmico
ClaseBase
Tipo dinmico:
El tipo del objeto al que referencia en tiempo de ejecucin (puede variar)
+miMetodo()
Si ambos tipos
p no coinciden, entonces la variable es ppolimrfica.
Ejemplo:
Figura f = new Rectangulo();
La variable f es polimrfica:
ClaseDerivada
+miMetodo()
()
37
38
Object
Figura
Rectngulo
Circulo
+radio()
Cuadrado
39
40
42
SerVivo
+vive()
()
1.
Animal
Vegetal
g
2.
3.
Humano
GiraSol
+razona()
+vive()
4.
5.
6.
seresVivos
Vi
7
7.
8.
45
46
Ejemplo
j p estndar de Clase abstracta: Number
49
package lasFiguras;
import java.awt.*; //Para poder referenciar la clase Color
public abstract class Figura { // extends Object
protected String tipo;
protected String color;
protected static final String TIPO_POR_DEFECTO = "Circulo";
protected static final Color COLOR_POR_DEFECTO = Color.black;
public Figura(Color c,
c String t){
this.tipo = t; this.color = c;
}
public Figura(){
this(TIPO_POR_DEFECTO, COLOR_POR_DEFECTO);
}
50
La Clase Rectangulo
}
51
52
Interfaces en Java
En ocasiones es necesario que una clase herede de ms de una
superclase:
Herencia Mltiple
Extensin de Interfaces
Una Interfaz A ppuede extender de otra interfaz B.
Implementar la interfaz A requiere dar cdigo a todos los
mtodos de A (los de A y los heredados de B).
public interface OrdenadorPortable extends Ordenador{
float capacidadBateria();
}
public interface Ordenador{
void
d encender();
d ()
}
public
bli class
l PDA implements
i l
O d
OrdenadorPortable{
d P t bl {
float capacidadBateria() { }
void encender(){ }
}
58