Documentos de Académico
Documentos de Profesional
Documentos de Cultura
objetos en Java
Programacin orientada a
objetos en Java
1.Clases de objetos
2.Proteccin de miembros
3.Proteccin de clases
4.Inicializacin y finalizacin
5.Creacin de objetos
6.Trabajando con objetos
7.Relaciones entre objetos
8.Clases anidadas e interiores
9.Autoreferencias
10.Aplicaciones orientadas a objetos
11.Herencia
12.Adicin, redefinicin y anulacin
13.Proteccin y herencia
14.Herencia mltiple
15.Polimorfismo
16.Ligadura dinmica
17.Informacin de clases en tiempo
de ejecucin
18.Otros temas de inters en Java
Clases de objetos
Clases de objetos
Un fichero fuente java forma en s un paquete y por tanto todas las clases incluidas
en l son amigas
Importar esa clase, para poder utilizarla sin el prefijo. Esto se indica al principio del
cdigo fuente mediante import prueba.A
Importar directamente todas las clases del paquete, que se usaran sin prefijo:
import prueba.*
Programacin orientada a
objetos en Java
Proteccin de
miembros
Organizar mejor el cdigo. Empaquetar en una clase principal otras que no tienen
utilidad o sentido fuera del contexto de sta
Tiene acceso completo y directo a todos los atributos y operaciones del objeto que
realiza su creacin
Facilitar la reutilizacin. Una clase no tiene por qu limitarse a recibir una serie de
caractersticas de otra clase por herencia de forma pasiva. Tambin disponen de
cierto margen de adaptacin de estas caractersticas
Soporte al polimorfismo
Programacin orientada a
objetos en Java
Herencia
Herencia
Ejemplos de herencia:
Estructuras de datos
Contenedor
nelem: Integer
vaciar()
copiar(c: Contenedor)
tamaa(): Integer
vacio(): Boolean
Secuencia
escribir(e: Elemento, pos: Integer)
leer(pos: Integer): Elemento
borrar(pos: Integer)
ContenedorAsociativo
escribir(e: Elemento, c: Clave)
leer(c: Clave): Elemento
borrar(c: Clave)
Vector
buffer[nelem]: Elemento
redimensionar(t: Integer)
Lista
cabecera: Nodo
insertar(e: Elemento, pos: Integer)
insertaPrin(e: Elemento)
insertarFinal(e: Elemento)
TablaHash
tabla[nelem]: Elemento
funcionHash(c: Clave): Integer
Programacin orientada a
objetos en Java
Herencia
Programacin orientada a
objetos en Java
Herencia
Vamos a estudiar la implementacin de la herencia en Java mediante el ejemplo de
un conjunto de tareas programables: TPReloj (actualizar un reloj digital cada
segundo), TPAviso (mostrar un aviso peridicamente) y TPEjecucion (ejecucin de un
comando cada cierto tiempo)
TareaPeriodica
periodoSegs: Integer
ultimaej: Date
activa: Boolean
+necesitaEjecucion(): Boolean
+actualizarReloj()
+ejecutarTarea()
+activar()
+desactivar()
TPReloj
+leerHora(): String
TPAviso
msg: String
+leerMsg(): String
TPEjecucion
cmd: String
+leerCmd(): String
Programacin orientada a
objetos en Java
Herencia
La clase TareaPeriodica tiene las caractersticas comunes a los tres tipos de tarea:
periodo de ejecucin en segundos, hora de la ltima ejecucin y bandera de estado
activo/inactivo
import java.util.*;
public class TareaPeriodica {
int periodoSegs; // Periodo de ejecucin
Date ultimaEj; // Hora de ltima ejecucin
boolean activa;
public TareaPeriodica(int aPeriodoSegs) {
periodoSegs = aPeriodoSegs;
actualizarReloj();
activa = true;
}
// Constructor para ejecuciones cada segundo
public TareaPeriodica() {
this(1);
}
// Establecer la ltima ejecucin a la hora actual
public void actualizarReloj() {
ultimaEj = new Date(); // Hora actual
}
Programacin orientada a
objetos en Java
Herencia
La operacin ejecutarTarea realmente no tiene una implementacin concreta a este
nivel
public boolean necesitaEjecucion() {
if (!activa)
return false;
// Calcular la hora de la prxima ejecucin
Calendar calProximaEj = new GregorianCalendar();
calProximaEj.setTime(ultimaEj);
calProximaEj.add(Calendar.SECOND, periodoSegs);
Calendar calAhora = new GregorianCalendar();
// Comprobar si ha pasado a la hora actual
return (calProximaEj.before(calAhora));
}
public void ejecutarTarea() {
System.out.println("Ejecucion de tarea");
}
public void activar() { activa = true; }
public void desactivar() { activa = false; }
}
Programacin orientada a
objetos en Java
Herencia
Si la clase tiene una larga lista de ascendientes, entonces el constructor sera muy
largo
Miembros con acceso a nivel de paquete. Son accesibles desde los descendientes
siempre y cuando pertenezcan al mismo paquete que el ascendiente. Se heredan
con el mismo nivel de proteccin
Para que un objeto pueda ser guardado en un fichero la clase debe implementar la
interfaz Serializable
Establecer la ligadura dinmica para todas las funciones y evitar problemas a costa
de eficiencia en la ejecucin (Smalltalk, Java)
Programacin orientada a
objetos en Java
Ligadura dinmica
El primero usa la operacin parse() de las clases wrapper de los tipos bsicos
Construir una clase que represente la tarea y herede de la clase Java Thread
Para arrancar la nueva hebra basta con crear un objeto de la clase y ejecutar la
operacin start()