Programacion Orientada A Objetos en Java
Programacion Orientada A Objetos en Java
Programacion Orientada A Objetos en Java
Programacin Avanzada
Java
14 Herencia mltiple
15 Polimorfismo
16 Ligadura dinmica
17 Informacin de clases en tiempo
de ejecucin
18 Otros temas de inters en Java
ndice
Programacin OO en
Programacin Avanzada
Java
Clases de objetos
Las clases de objetos son los elementos bsicos
de la programacin orientada a objetos y
representan conceptos o entidades significativos de
un problema determinado. Una clase viene descrita
por dos tipos de elementos:
Atributos (o variables de clase). Describen el estado interno de cada objeto
Operaciones (o mtodos). Describen lo que se puede hacer con el objeto, los
servicios que proporciona
Cuenta
Atributos
Operaciones
Nombre de
la clase
numero: Long
titular: String
saldo: Float
intersAnual: Real
ingreso (cantidad: Integer)
reintegro (cantidad: Integer)
ingresoInteresMes ()
enRojos (): Boolean
leerSaldo (): Integer
Clases de objetos
Programacin OO en
Programacin Avanzada
Java
Clase de objetos
numero=123890023
titular=Miguel Prez
saldo=1800.4
intersAnual=0.25
d : Cuenta
e : Cuenta
numero=151590020
titular=Javier Snchez
saldo=1200.2
intersAnual=1.25
numero=23900839
titular=Antonio Gmez
saldo=200
intersAnual=0.25
Objetos
Clases de objetos
Programacin OO en
Programacin Avanzada
Java
Atributos
class Cuenta {
long numero;
String titular;
float saldo;
float interesAnual;
void ingreso (float cantidad) { }
void reintegro (float cantidad) { }
void ingresoInteresMes () { }
boolean enRojos () { }
float leerSaldo () { }
Operaciones
Programacin OO en
Programacin Avanzada
Java
Clases de objetos
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Clases de objetos
Programacin OO en
Programacin Avanzada
Java
Proteccin de miembros
El principio de ocultacin de informacin se plasma
en los lenguajes OO en diversos mecanismos de
proteccin de los miembros de la clase
UML permite asociar tres niveles de proteccin
diferentes a cada miembro de la clase:
Miembros pblicos (+). Sin ningn tipo de proteccin especial
Miembros privados (-). Inaccesibles desde el exterior de la clase
Miembros protegidos (#). Similares a los privados aunque se permite su
acceso desde las clases descendientes*
Clase
-atributoPrivado: Tipo
+atributoPublico: Tipo
#atributoProtegido: Tipo
-operacionPrivada ()
+operacionPublica ()
#operacionProtegida ()
Proteccin de
* Las veremos ms adelante, al estudiar el mecanismo de la herencia
miembros
Programacin OO en
Programacin Avanzada
Java
En Java un miembro se etiqueta como pblico colocando el identificador public delante de su declaracin
Para los miembros privados utilizaremos el identificador private
class Cuenta {
private long numero;
private String titular;
private float saldo;
private float interesAnual;
public void ingreso (float cantidad) {
saldo += cantidad;
}
Cuenta
-numero: Long
-titular: String
-saldo: Float
-intersAnual: Real
Proteccin de
miembros
Programacin OO en
Programacin Avanzada
Java
package prueba;
class A {
...
}
class C {
...
}
class B {
...
}
class D {
...
}
class E {
...
}
Proteccin de
miembros
Programacin OO en
Programacin Avanzada
Java
En este ejemplo, las clases Cuenta y Banco son amigas al pertenecer al mismo
fichero fuente. El acceso a los atributos de los objetos de la clase Cuenta
almacenados en el vector interno de Banco queda as garantizado. El atributo
saldo puede mantenerse como privado puesto que existe una operacin que
permite obtener su valor
class Cuenta {
long numero;
String titular;
private float saldo;
float interesAnual;
public void ingreso (float cantidad) {
saldo += cantidad;
}
public void reintegro (float cantidad) {
saldo -= cantidad;
}
public void ingresoInteresMes () {
saldo += interesAnual * saldo / 1200;
}
public boolean enRojos () { return saldo < 0; }
public float leerSaldo () { return saldo; }
}
class Banco {
Cuenta[] c; // vector de cuentas
...
}
Proteccin de
miembros
Programacin OO en
Programacin Avanzada
Java
Proteccin de
miembros
Programacin OO en
Programacin Avanzada
Java
Proteccin de clases
Por proteccin de clases entendemos un nivel superior
de la ocultacin de informacin, a nivel de clases. Es
decir, se trata de especificar que clases pueden ser
utilizadas y cuales no, y por quin
Dentro de un paquete, las clases son amigas y por
tanto no existen restricciones respecto a la utilizacin
de una clase por las otras
Sin embargo, desde el punto de vista del exterior,
nicamente podrn ser utilizadas las clases pblicas
del paquete, es decir, aquellas con el identificador
public situado delante de su declaracin
Proteccin de
clases
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Inicializacin y finalizacin
La iniciacin de los atributos de la clase se realiza
en Java, al igual que en C++, mediante el uso de
constructores cuyo nombre coincide con el de la
clase public class Cuenta {
long numero;
String titular;
private float saldo;
float interesAnual;
Cuenta (long aNumero, String aTitular, float aInteresAnual) {
numero = aNumero;
titular = aTitular;
saldo = 0;
interesAnual = aInteresAnual;
}
public void ingreso (float cantidad) {
saldo += cantidad;
}
// Resto de operaciones de la clase Cuenta a partir de aqu
Inicializacin y
finalizacin
Programacin OO en
Programacin Avanzada
Java
Inicializacin y
finalizacin
Programacin OO en
Java
Programacin Avanzada
Nota: vase el apartado I/O: Reading and Writing del tutorial Java de Sun como apoyo para entender
el cdigo del nuevo constructor
Inicializacin y
finalizacin
Programacin OO en
Programacin Avanzada
Java
Inicializacin y
finalizacin
Programacin OO en
Programacin Avanzada
Java
Inicializacin y
finalizacin
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Inicializacin y
finalizacin
Programacin OO en
Programacin Avanzada
Java
Inicializacin y
finalizacin
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Inicializacin y
finalizacin
Programacin OO en
Programacin Avanzada
Java
Creacin de objetos
En Java los objetos se crean nicamente de forma
dinmica, es decir, en el heap. Para ello se utiliza el
operador new, de manera similar a C++
Los objetos en Java se utilizan siempre a travs de
referencias. Las referencias son similares a los
punteros de C/C++, aunque su uso es mucho ms
sencillo
Por tanto los pasos a seguir en la creacin de un
objeto son:
Declarar una referencia a la clase
Crear un objeto mediante el operador new invocando al constructor adecuado
Conectar el objeto con la referencia
Creacin de objetos
Programacin OO en
Java
Programacin Avanzada
Programacin OO en
Programacin Avanzada
Java
Creacin de objetos
* Vase el apartado Characters and Strings del tutorial de Java de Sun para ms informacin
Programacin OO en
Programacin Avanzada
Java
Creacin de objetos
Programacin OO en
Programacin Avanzada
Java
Trabajando con
objetos
Programacin OO en
Programacin Avanzada
Java
Trabajando con
objetos
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
objetos
Programacin OO en
Programacin Avanzada
Java
FileOutputStream
ObjectOutputStream
Relaciones entre
objetos
Programacin OO en
Programacin Avanzada
Java
Cliente
titular
*
1 nombre: String
apellidos: String
direccin: String
localidad: String
fNacimiento: Date
+nombreCompleto (): String
+direccionCompleta (): String
Relaciones entre
objetos
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Java
Programacin Avanzada
Relaciones entre
objetos
Programacin OO en
Programacin Avanzada
Java
Segmento
2
dispone de
Departamento
Despacho
1
Relaciones entre
objetos
Programacin OO en
Programacin Avanzada
Java
nombre: String
1 apellidos: String
direccin: String
localidad: String
fNacimiento: Date
+nombreCompleto (): String
+direccionCompleta (): String
registra
Movimiento
*
fecha: Date
tipo: Char
importe: Real
saldo: Real
Relaciones entre
objetos
Programacin OO en
Programacin Avanzada
Java
Relaciones entre
objetos
Programacin OO en
Programacin Avanzada
Java
Relaciones entre
objetos
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Clases anidadas e
interiores
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Clases anidadas e
interiores
Programacin OO en
Programacin Avanzada
Java
Autoreferencias
En ocasiones es necesario obtener una referencia
en la implementacin de una operacin al propio
objeto sobre el que ha sido invocada la operacin
Esta referencia se obtiene en C++ y Java mediante
el operador this
Cuando encontremos this en una expresin,
podremos sustituirlo mentalmente por este objeto
Aunque no es necesario, podemos utilizar this para
llamar desde la implementacin de una operacin a
otra operacin del mismo objeto
Relaciones entre
objetos
Programacin OO en
Programacin Avanzada
Java
Relaciones entre
objetos
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Aplicaciones
orientadas a objetos
Programacin OO en
Programacin Avanzada
Java
$ls
BancoApp.java Cliente.java Cuenta.java
$javac *.java
$ls
BancoApp.class Cliente.class Cuenta.class Movimiento.class
BancoApp.java
Cliente.java
Cuenta.java
$java Cuenta
Exception in thread main java.lang.NoSuchMethodError: main
$java BancoApp
Transferencia realizada
$
Nota: Las clases que constituyen una aplicacin Java tambin pueden distribuirse de manera mucho ms compacta
en un nico fichero JAR. Consltese la bibliografa para ver como crean y utilizan estos ficheros
Aplicaciones
orientadas a objetos
Programacin OO en
Programacin Avanzada
Java
Herencia
La herencia es un mecanismo de la OOP que
permite construir una clase incorporando de manera
implcita todas las caractersticas de una clase
previamente existente. Son varias las razones que
justifican su existencia:
Modelado de la realidad. Son frecuentes las relaciones de
especializacin/generalizacin entre las entidades del mundo real, por tanto es
lgico que dispongamos de un mecanismo similar entre las clases de objetos
Evitar redundancias. Toda la funcionalidad que aporta una clase de objetos es
adoptada de manera inmediata por la clase que hereda, por tanto evitamos la
repeticin de cdigo entre clases semejantes
Facilita 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
Herencia
Sirve de soporte para el polimorfismo
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Empleado
Figura
Coche
Contable
Cuadrado
registra
CuentaconHistorico
recuperar ()
salvar ()
fecha: Date
tipo: Char
importe: Real
saldo: Real
Herencia
Programacin OO en
Programacin Avanzada
Java
Texto
Lnea
Cuadrado
Pila
Herencia
Programacin OO en
Programacin Avanzada
Java
Ejemplos de herencia:
Distintos tipos de cuentas bancarias
Cuenta
numero: Long
titular: String
saldo: Real
interes: Real
ingreso ()
ingresoInteresMes ()
leerSaldo ()
transferirA ()
CuentaCorriente
CuentaAhorroPFijo
PlanPensiones
vencimiento: Date
vencimiento:Date
cotizacion: Float
numCuentaOrigen: String
reintegro ()
ingresoMes ()
Herencia
Programacin OO en
Java
Programacin Avanzada
Figura
x, y: Integer
mover (nx: Integer, ny: Integer)
Rectngulo
ancho, alto: Integer
escalar (nx: Integer, ny: Integer
Ventana
titulo: String
pintar ()
Editor
Boton
pintar ()
accion ()
Herencia
Programacin OO en
Java
Programacin Avanzada
Estructuras de datos
Contenedor
nelem: Integer
vaciar ()
copiar (c: Contenedor)
tamaa (): Integer
vacio (): Boolean
Vector
Secuencia
ContenedorAsociativo
Lista
TablaHash
buffer[nelem]: Elemento
cabecera: Nodo
tabla[nelem]: Elemento
Herencia
Programacin OO en
Programacin Avanzada
Java
Herencia en Java
Vamos a estudiar la herencia en Java siguiendo un
ejemplo de un programador de tareas
La clase TareaPeriodica representa cualquier tarea que se ejecuta sucesivamente
cada vez que se cumple el periodo de activacin (en seg.)
La clase TPReloj representa un reloj que muestra en pantalla la hora cada 30 min.
La clase TPAviso muestra un aviso cuando se cumple un intervalo de tiempo
La clase TPEjecucion ejecuta un comando determinado peridicamente
TareaPeriodica
periodoSegs: Integer
ultimaej: Date
activa: Boolean
+necesitaEjecucion (): Boolean
+actualizarReloj ()
+ejecutarTarea ()
+activar ()
+desactivar ()
TPReloj
TPAviso
TPEjecucion
msg: String
cmd: String
Herencia en Java
Programacin OO en
Programacin Avanzada
Java
import java.util.*;
public class TareaPeriodica {
int periodoSegs;
Date ultimaEj;
boolean activa;
public TareaPeriodica(int aPeriodoSegs) {
periodoSegs = aPeriodoSegs;
actualizarReloj ();
activa = true;
}
// Constructor para ejecuciones cada segundo
public TareaPeriodica () {
this (1);
}
public void actualizarReloj () {
ultimaEj = new Date (); // Hora actual
}
Herencia en Java
Programacin OO en
Programacin Avanzada
Java
Herencia en Java
Programacin OO en
Programacin Avanzada
Java
Herencia en Java
Programacin OO en
Java
Programacin Avanzada
import java.lang.Runtime;
import java.io.IOException;
public class TPEjecucion extends TareaPeriodica {
String cmd;
public TPEjecucion(String aCmd, int aPeriodoSegs) {
periodoSegs = aPeriodoSegs;
actualizarReloj ();
activa = true;
cmd = aCmd;
}
String leerCmd () { return cmd; }
}
Herencia en Java
Programacin OO en
Programacin Avanzada
Java
...
...
...
...
...
Herencia en Java
Programacin OO en
Programacin Avanzada
Java
Herencia en Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Java
Programacin Avanzada
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TPReloj extends TareaPeriodica {
public TPReloj () {
super (60);
}
public String leerHora () {
Calendar cal = new GregorianCalendar ();
return cal.get (Calendar.HOUR_OF_DAY) + ":"
+ cal.get (Calendar.MINUTE);
}
}
import java.lang.Runtime;
import java.io.IOException;
public class TPEjecucion extends TareaPeriodica {
String cmd;
public TPEjecucion(String aCmd, int aPeriodoSegs) {
super (aPeriodoSegs);
cmd = aCmd;
}
String leerCmd () { return cmd; }
}
Herencia en Java
Programacin OO en
Programacin Avanzada
Java
super (...)
B
super (...)
super (...)
Herencia en Java
Programacin OO en
Programacin Avanzada
Java
Herencia en Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
TPReloj
TPAviso
TPEjecucion
msg: String
cmd: String
Adicin,
redefinicin y
anulacin
Programacin OO en
Programacin Avanzada
Java
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TPReloj extends TareaPeriodica {
public TPReloj () {
super (60);
}
public String leerHora () {
Calendar cal = new GregorianCalendar ();
return cal.get (Calendar.HOUR_OF_DAY) + ":" + cal.get (Calendar.MINUTE);
}
public void ejecutarTarea () {
Calendar cal = new GregorianCalendar ();
int min = cal.get (Calendar.MINUTE);
if (min == 0 || min == 30)
System.out.println ("Hora: " + cal.get (Calendar.HOUR_OF_DAY) + " " + min);
}
}
Adicin,
redefinicin y
anulacin
Programacin OO en
import java.lang.Runtime;
import java.io.IOException;
Java
Programacin Avanzada
Adicin,
redefinicin y
anulacin
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Adicin,
redefinicin y
anulacin
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Adicin,
redefinicin y
anulacin
Programacin OO en
Programacin Avanzada
Java
Proteccin y herencia
Hemos visto anteriormente como los distintos niveles
de proteccin limitan el acceso a los miembros de la
clase desde el exterior. Pero como afectan estos
niveles de proteccin a los miembros heredados?
Miembros pblicos. Son accesibles desde los descendientes, y se heredan como
pblicos
Miembros privados. No son accesibles desde los descendientes
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
Programacin OO en
Programacin Avanzada
Java
Proteccin y
herencia
Programacin OO en
Programacin Avanzada
Java
Clases abstractas
Existen clases que representan conceptos tan
genricos que no tiene sentido su instanciacin en
objetos
Adems en este tipo de clases puede ser imposible o
intil la implementacin de ciertas operaciones
La utilidad de este tipo de clases est en la aplicacin
de herencia para obtener clases que representan
conceptos concretos para los que s que tiene sentido
su instanciacin
La clase TareaPeriodica es un claro ejemplo: por s sola no tiene utilidad, pero
simplifica mucho la construccin de las otras tres clases. De hecho, la operacin
ejecutarTarea en TareaPeriodica no tiene una implementacin til
Clases abstractas
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Clases abstractas
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
TPAviso
TPReloj
TPEjecucion
+leerHora (): String
+necesitaEjecucion (): Boolean
+actualizarReloj ()
+ejecutarTarea ()
+activar ()
+desactivar ()
cmd: String
+leerCmd (): String
+necesitaEjecucion (): Boolean
+actualizarReloj ()
+ejecutarTarea ()
+activar ()
+desactivar ()
msg: String
+leerMsg (): String
+necesitaEjecucion (): Boolean
+actualizarReloj ()
+ejecutarTarea ()
+activar ()
+desactivar ()
Clases abstractas
Programacin OO en
Programacin Avanzada
Java
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TPReloj implements TareaPeriodica {
Date ultEjecucion;
boolean activa;
public TPReloj () { activa = true; ultEjecucion = new Date () }
public void ejecutarTarea () {
Calendar cal = new GregorianCalendar ();
int min = cal.get (Calendar.MINUTE);
System.out.println ("Hora: " + cal.get (Calendar.HOUR_OF_DAY)
+ " " + min);
ultEjecucion = cal.getTime ();
}
Clases abstractas
Programacin OO en
Java
Programacin Avanzada
Clases abstractas
Programacin OO en
Programacin Avanzada
Java
Clases abstractas
Programacin OO en
Programacin Avanzada
Java
Herencia mltiple
Consiste en la posibilidad de que una clase tenga
varios ascendientes directos
Puede surgir de manera relativamente frecuente y
natural durante el diseo
almacena
FiguraGeometrica
Punto
Lista
*
Poligono
FicheroLectura
FicheroEscritura
FicheroLecturaEscritura
Imagen
EnlaceURL
ImagenSensible
Herencia mltiple
Programacin OO en
Programacin Avanzada
Java
atributoX
atributoX
A
C
C
Herencia mltiple
Programacin OO en
Programacin Avanzada
Java
Poligono
contiene
almacena
1
Segmento
Lista
FiguraGeometrica
Poligono
contiene
almacena
1
Lista
Segmento
Herencia mltiple
Programacin OO en
Programacin Avanzada
Java
almacena
Lista
Segmento
*
Poligono
Herencia mltiple
Programacin OO en
Programacin Avanzada
Java
Polimorfismo
Son dos mecanismos relacionados que otorgan a la
OOP una gran potencia frente a otros paradigmas de
programacin
nicamente tienen sentido por la existencia de la
herencia
El polimorfismo (o upcasting) consiste en la posibilidad
de que una referencia a objetos de una clase pueda
conectarse tambin con objetos de descendientes de
sta
B
objeto: B
rb: B
ra: A
Polimorfismo
Programacin OO en
Programacin Avanzada
Java
El sentido del polimorfismo es realizar una generalizacin, olvidar los detalles concretos de uno o varios
objetos de distintas clases y buscar un punto comn a
todos ellos en un ancestro
Se trata de algo que realiza comnmente la mente
humana durante el proceso de razonamiento
Polimorfismo
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Polimorfismo
Programacin OO en
Java
// Continuacin de la clase GestorTareas
Programacin Avanzada
Programacin OO en
Programacin Avanzada
Java
Polimorfismo
Programacin OO en
Programacin Avanzada
Java
En Java, una referencia a Object puede ser conectada a cualquier objeto, puesto que como sabemos es
un ancestro de todas las clases
public class AppGestorTareas {
public static void main (String[] args) {
TPReloj tpr = new TPReloj ();
Object o;
o = tpr;
System.out.println (o.getClass ().getName ());
}
}
Programacin OO en
Programacin Avanzada
Java
Ligadura dinmica
Entendemos por resolucin de una llamada el proceso
por el cual se sustituye una llamada a una funcin por
un salto a la direccin que contiene el cdigo de esta
funcin
Normalmente, la resolucin de llamadas se realiza en
en tiempo de compilacin, porque resulta ms sencillo
y sobre todo ms eficiente. Cuando la aplicacin se
est ejecutando, las llamadas ya estn preparadas.
Este enfoque se denomina ligadura esttica
f ()
CALL _f
Ligadura dinmica
Programacin OO en
Programacin Avanzada
Java
f ()
f ()
f ()
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
// downcasting ?
}
}
AppGestorTareas.java:XX: incompatible types
found
: TareaPeriodica
required: TPReloj
TPReloj tr = tp;
^
1 error
// downcasting
Informacin de
clases en tiempo de
ejecucin
Programacin OO en
Programacin Avanzada
Java
// downcasting ok
Informacin de
clases en tiempo de
ejecucin
Programacin OO en
Programacin Avanzada
Java
Informacin de
clases en tiempo de
ejecucin
Programacin OO en
Java
Programacin Avanzada
import java.lang.*;
public class AppGestorTareas {
public static void main (String[] args) {
TareaPeriodica tp; TPReloj tr; TPAviso ta; TPEjecucion te;
// tp es conectada a algn objeto
...
try {
tr = (TPReloj) tp;
// Operar con tr
return;
}
catch (ClassCastException e) {
// Si no es de tipo TPReloj, continuamos por aqu
}
try {
ta = (TPAviso) tp;
// Operar con ta
return;
}
catch (ClassCastException e) {
// Si no es de tipo TPAviso, continuamos por aqu
}
try {
te = (TPEjecucion) tp;
// Operar con te
return;
}
catch (ClassCastException e) {
// Si tampoco es de tipo TPEjecucin Entonces de que tipo es?
System.out.println (Error: objeto de clase desconocida);
}
}
}
Informacin de
clases en tiempo de
ejecucin
Programacin OO en
Programacin Avanzada
Java
Informacin de
clases en tiempo de
ejecucin
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Otros temas de
inters en Java
Programacin OO en
Programacin Avanzada
Java
Otros temas de
inters en Java
Programacin OO en
Programacin Avanzada
Java
Programacin OO en
Programacin Avanzada
Java
Otros temas de
inters en Java
Programacin OO en
Java
Programacin Avanzada
Otros temas de
inters en Java
Programacin OO en
Programacin Avanzada
Java
Esta aplicacin contara con dos hilos de ejecucin en paralelo, uno principal y otro
asociado al gestor de tareas
import java.lang.System;
import java.io.IOException;
public class AppGestorTareas {
public AppGestorTareas() {}
public static void main(String[] args) {
GestorTareas gt = new GestorTareas (10);
try {
gt.nuevaTarea (new TPReloj ());
gt.nuevaTarea (new TPAviso ("Ha pasado 1 minuto", 60));
} catch (DemasiadasTareas dt) {}
gt.start (); // Arrancar hilo
System.out.println ("Hilo de ejecucion principal");
System.out.println ("Pulsa una tecla para terminar");
try {
System.in.read ();
}
catch (IOException e) {}
gt.terminar ();
System.out.println ("Final de hilo de aplicacion");
}
}
Otros temas de
inters en Java