1.
2.
3
3.
4.
Germn Molt
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.
bj t Adisson-Wesley,
Adi
W l 2001.
2001 Captulo
C t l 14
Referencias en Java
0
102
102
c1
Circulo c1 = new Circulo();
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
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.
Ej
Ejemplo:
l definicin
d fi i i de
d los
l Atributos
A ib
de
d la
l Clase
Cl
Circulo
Ci l
double radio;
String color;
static final double RADIO_POR_DEFECTO = 3.0;
static final Color COLOR_POR_DEFECTO = Color.black;
10
private
private
private
private
public Circulo() {
radio = RADIO_POR_DEFECTO;
color = COLOR_POR_DEFECTO;
this hace referencia al objeto
sobre el que se invoca el mtodo
}
y sirve ppara evitar el aliasingg de
public Circulo(double radio,
radio Color color) {
nombres.
this.radio = radio;
this.color = color;
}
public Circulo(){
this(RADIO_POR_DEFECTO,
(
COLOR_POR_DEFECTO);
)
}
11
Se p
podra utilizar this p
para referenciar a
los atributos (i.e., this.radio) pero no es
necesario puesto que no hay aliasing de
nombres.
Al definir como p
privados todos los atributos de Circulo,
se deben proporcionar mtodos para modificar su valor.
Ejemplo: definicin de los Mtodos Modificadores de
Circulo
Ejemplo:
j p definicin de otros Mtodos de Circulo
public double area() { return Math.PI * radio * radio; }
ppublic Stringg toString()
g() {{return Circulo de radio + radio}}
public static Circulo leerCirculo(Scanner teclado) { ... }
13
14
Ejercicios Propuestos
}
15
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();
...
}
17
18
1.
2.
3.
Manipulacin:
org/grycap/paquete/MiClase.java
19
package org.grycap.otropaquete;
class Clase1{
import org.grycap.paquete.*;
int otroAtributo;
}
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
Acceso Correcto
Paquete
Subclase
Mundo
private
No
No
No
ninguno
No
No
protected
No
public
package org.grycap.paquete;
public class Clase3{
public static void main(String args[]){
Clase1 c1 = new Clase1();
}}
22
Introduccin al concepto
p de Herencia y su soporte
p
en
Java. En particular, se incidir en los siguientes aspectos:
P
Paquete
t
Definicin de Atributos
Herencia Java
Ejemplos: clase base Figura y sus
derivadas Circulo, Rectangulo, ...
23
Clase
}}
21
Visibilidad
Modificador
C
Clase1
c1 = new Clase1();
C
()
Y la de Clase 3?
Ejercicio de Persona
Modificadores de visibilidad.
Constructores de la derivada.
S
Sobrescritura
de mtodos.
La relacin ES UN(A)
Si X ES UN(A)
( ) Y,
Y (Base)
25
27
Objeto
Figura
Rectngulo
Cuadrado
26
El Mecanismo de la Herencia
Crculo
X (Derivada)
28
Implicaciones:
29
30
1.
2.
3.
35
34
33
Especificacin:
Imlementacin:
Cuando
C
d no se desea
d
cambiar
bi completamente
l t
t ell
comportamiento del mtodo de la clase Base. Se utiliza super
para invocar el mtodo de la clase Base.
p
Mtodo toString():
Sobreescritura parcial:
El criterio
i i puede
d ser modificado
difi d para objetos
bj
de
d una
clase sobreescribiendo el mtodo equals (Ej. Figura):
36
Polimorfismo en Java
ClaseBase
Tipo dinmico:
Tipo esttico:
Enlace Dinmico
+miMetodo()
Si ambos tipos
p no coinciden, entonces la variable es ppolimrfica.
Ejemplo:
ClaseDerivada
+miMetodo()
()
37
38
Object
Figura
Rectngulo
Circulo
+radio()
Cuadrado
39
41
42
43
Ci l c = (Ci
Circulo
(Circulo)
l ) ff;
SerVivo
+vive()
()
Vegetal
g
2.
3.
Humano
GiraSol
+razona()
+vive()
4.
5.
6.
Vi
seresVivos
7
7.
8.
45
46
1.
Animal
C d se quiere
Cuando
i
obligar
bli
a que llas subclases
b l
ttengan un cierto
i t
comportamiento
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
Herencia Mltiple
53
Una Interfaz
Sintaxis de Interfaces:
Ejemplo
j p de uso de interfaces:
Forzar a que las clases proporcionen una descripcin de ellas.
Extensin de Interfaces
Una Interfaz A p
puede 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).