Académique Documents
Professionnel Documents
Culture Documents
Introducci
on al lenguaje de programaci
on Java
2 [2 - 2]
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Parte I
Fundamentos del lenguaje
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Indice
3 [3 - 4]
Introduccion
Historia
Herramientas
Empaquetador JAR
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Este
curso
4 [3 - 4]
Que es Java?
Herramientas basicas
Sintaxis basica
Manejo de objetos
Threads
Mecanismos de E/S
Clases de u
tilidad mas usadas
...
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Breve historia
5 [5 - 6]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Breve historia
6 [5 - 6]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Interprete
7 [7 - 11]
Aplicaciones independientes
En una aplicacion independiente, una clase contiene el metodo
main(), que contiene sentencias para ejecutar al inicio. Para que la
aplicacion se ejecute, se ejecuta el interprete indicando esa clase
como argumento.
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Interprete
Aplicaciones independientes
8 [7 - 11]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Compilador
9 [7 - 11]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Compilador
Ejemplo
10 [7 - 11]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Compilador
11 [7 - 11]
Si queremos que al compilar las clases se generen en un directorio distinto del actual usamos la opcion -d del compilador:
javac -d clases HolaMundo.java
java -cp clases HolaMundo
Se pueden especificar m
ultiples archivos .java en un u
nico
comando javac. El compilador crea un archivo de clase por
cada archivo fuente.
No es necesario listar los archivos fuente de todas las clases
utilizadas, estas se buscan usando la ruta de clases.
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Empaquetador JAR
12 [12 - 18]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Empaquetador JAR
Con la utilidad jar podemos crear o leer ficheros JAR. La sintaxis
imita a la de la utilidad tar de Unix:
13 [12 - 18]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Empaquetador JAR
Ejemplo
manifest agregado
agregando: clases/(entrada = 0) (salida= 0)(almacenado 0%)
agregando: clases/HolaMundo.class(entrada = 423) (salida= 288)(desinflado 31%)
14 [12 - 18]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Empaquetador JAR
Ejemplo
Desempaquetamos el JAR:
jar -xfv holamundo.jar
15 [12 - 18]
creado: META-INF/
extra
do: META-INF/MANIFEST.MF
creado: clases/
extra
do: clases/HolaMundo.class
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Empaquetador JAR
Ejemplo
16 [12 - 18]
Fri
Fri
Thu
Wed
Dec
Dec
Nov
Nov
03
03
11
10
08:37:10
08:37:12
09:33:22
13:17:16
CET
CET
CET
CET
2004
2004
2004
2004
META-INF/
META-INF/MANIFEST.MF
clases/
clases/HolaMundo.class
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Empaquetador JAR
Manifiesto
17 [12 - 18]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Historia
Herramientas
Empaquetador JAR
Empaquetador JAR
Manifiesto: Ejemplo
18 [12 - 18]
Invocamos:
jar -cvmf manifesto.mf holamundo.jar .
Para ejecutar la aplicacion se usar la opcion -jar de java:
java -jar holamundo.jar
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Indice
19 [19 - 19]
Sintaxis
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Comentarios
En Java se pueden hacer comentarios de bloque y de lnea. Los
primeros estan delimitados por /* y */ y los segundos por //:
20 [20 - 25]
/ C o m e n t a r i o de
b l o q u e con mas de
una l i n e a
/
// C o m e n t a r i o de una l i n e a
// Otro c o m e n t a r i o de una l i n e a
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Comentarios
Observaciones
21 [20 - 25]
/ C o m e n t a r i o de b l o q u e con mas de
una l i n e a
// e s t o c o m p i l a
/
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Comentarios Javadoc
22 [20 - 25]
Estos
estan dise
nados para ser extrados por generadores
automaticos de documentacion como el programa javadoc.
En estos comentarios se usan marcas especiales para a
nadir
informacion: cada espacio en una lnea hasta un * es ignorado
y las lneas que empiezen por un @ se interpretan como
etiquetas especiales para el generador de documentacion.
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Comentarios Javadoc
Ejemplo
23 [20 - 25]
/
E s t a una c l a s e h o l a mundo . E s t a c l a s e e s c r i b e h o l a
mundo en l a s a l i d a e s t a n d a r
@see H o l a P l a n e t a
@ a u t h o r C a r l o s V a r e l a Paz
@ v e r s i o n 1 . 0 0 , 3 Dec 2004
/
p u b l i c c l a s s HolaMundo {
/
Metodo p r i n c i p a l de H o l a mundo
@param a r g s Argumentos p a s a d o s a l i n t e r p r e t e
@ r e t u r n nada
/
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n ( H o l a mundo ! ) ;
}
}
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Comentarios Javadoc
24 [20 - 25]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Comentarios Javadoc
Etiquetas
25 [20 - 25]
Etiqueta
@see
Descripci
on
Nombre de clase asociada
@auhor
@version
@param
@return
@exception
@deprecated
Se aplica a
Clase, metodo o variable
Clase
Clase
Metodo
Metodo
Metodo
Clase, metodo o variable
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos
26 [26 - 40]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos primitivos
Los elementos fundamentales en Java son n
umeros, caracteres
y valores booleanos.
A diferencia de otros lenguajes orientados a objetos, estos no
son objetos. Para aquellas situaciones en las que es deseable
tratar en valor primitivo como un objeto, Java proporciona
clases envolventes1 .
Una de las ventajas de tratar con valores primitivos es que el
compilador esta mas preparado para optimizar su uso.
Otra caracterstica esta relacionada con la portabilidad de
Java, los tipos primitivos estan definidos con precision. p.e: un
int tiene un tama
no de 32 bits en cualquier plataforma
1
27 [26 - 40]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos primitivos
Tipos de datos
28 [26 - 40]
Tipo
boolean
char
byte
short
int
long
float
double
Definici
on
true o false
Caracter Unicode de 16 bits
Entero de complemento 2 con signo de 8 bits
Entero de complemento 2 con signo de 16 bits
Entero de complemento 2 con signo de 32 bits
Entero de complemento 2 con signo de 64 bits
Valor en coma flotante 754 IEEE de 32 bits
Valor en coma flotante 754 IEEE de 64 bits
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos primitivos
Declaraci
on e inicializaci
on de variables
29 [26 - 40]
i n t u n E n t e r o =4;
double d1 =4.6 , d2 =25+7;
boolean t e r m i n a d o=t r u e ;
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos primitivos
Declaraci
on e inicializaci
on de variables
30 [26 - 40]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos primitivos
Literales enteros
31 [26 - 40]
i n t i =1234;
Octales: comienzan por un cero
i n t i =01230; // i = 644 en d e c i m a l
Hexadecimales: se representas comenzandolos por 0x,
siguiendo con los dgitos y caracteres de a-f o A-F, que
representan los valores decimales de 10-15:
i n t i =0xFFFFFF ; // i = 65535 en d e c i m a l
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos primitivos
Literales enteros
Los literales enteros son del tipo int salvo que lleven una L como
sufijo que indique que es un long:
long i =13L ;
long i =13; // e q u i v a l e n t e : 13 s e c o n v i e r t e
// de un t i p o i n t
Cuando se usa un tipo numerico en una expresion donde aparece
un tipo con rango superior, el tipo inicial se puede convertir al tipo
mayor (como en el ejemplo anterior). Algunas operaciones
numericas y de comparacion tambien crean estas conversiones.
32 [26 - 40]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos primitivos
Literales enteros
33 [26 - 40]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos primitivos
Literales en coma flotante
34 [26 - 40]
double d
double e
float f
float g
=
=
=
=
8.31;
3 . 0 0 e +8;
8.31F ;
3 . 0 0 e+8F ;
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos primitivos
Literales car
acter
35 [26 - 40]
char a = a ;
char n u e v a L i n e a = \n ;
char s m i l e y = \ u263a ;
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos referencia
36 [26 - 40]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos referencia
Ejemplo
37 [26 - 40]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos referencia
38 [26 - 40]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos referencia
Notas acerca de los strings
39 [26 - 40]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Tipos referencia
Notas acerca de los strings: Ejemplo
40 [26 - 40]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
41 [41 - 51]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
Bloques de c
odigo
42 [41 - 51]
{
i n t tam = 5 ;
setNombre ( KK ) ;
...
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
Bloques de c
odigo: Metodos
43 [41 - 51]
{
int i = 5;
}
i = 6 ; // E r r o r de c o m p i l a c i o n
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
Bloques de c
odigo: Condicionales
44 [41 - 51]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
Bloques de c
odigo: Condicionales
45 [41 - 51]
while ( c o n d i c i o n ) {
sentencia ;
sentencia ;
...
};
do {
sentencia ;
sentencia ;
...
} while ( c o n d i c i o n ) ;
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
Bloques de c
odigo: For
46 [41 - 51]
f o r ( i n t i = 0 ; i < 1 0 0 ; i ++) {
System . o u t . p r i n t l n ( i ) ;
int j = i ;
...
}
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
Bloques de c
odigo: for
Se pueden usar m
ultiples expresiones separadaspor coma en
secciones de inicializacion y de incremento de un bucle for. Por
ejemplo:
47 [41 - 51]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
Bloques de c
odigo: switch
48 [41 - 51]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
Bloques de c
odigo: switch
49 [41 - 51]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
Bloques de c
odigo: etiquetas
50 [41 - 51]
uno :
while ( condicion ) {
...
dos :
while ( condicion ) {
...
// r om pe r o c o n t i n u a r
}
// d e s p u e s de d o s
}
// d e s p u e s de uno
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Sentencias
Bloques de c
odigo: ejemplo
51 [41 - 51]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Expresiones
52 [52 - 63]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Operadores
53 [52 - 63]
Precedente
1
1
1
1
1
2
Operador
++,
+,
~
!
(type)
, /, %
Tipo
Aritm
etico
Aritm
etico
Integral
Boolean
Cualquiera
Aritm
etico
3
3
+,
+
Aritm
etico
Cadena
4
4
<<
>>
Integral
Integral
>>>
Integral
5
5
Aritm
etico
Objeto
Descripci
on
Incrementa y decrementa.
M
as y menos unarios.
Complemento bitwise.
Complemento l
ogico.
Cast.
Multiplicaci
on, divisi
on,
resto de la divisi
on.
Adici
on y sustracci
on.
Concatenaci
on de cadenas.
Cambia a la izquierda.
Cambio por la derecha con
la extensi
on del signo.
Cambio por la derecha sin
extensi
on.
Comparaci
on num
erica.
Comparaci
on del tipo.
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Operadores
54 [52 - 63]
Precedente
6
Operador
==, !=
Tipo
Primitivo
==, !=
Objeto
7
7
8
8
9
9
10
11
12
&
&
^
^
|
|
&&
||
?:
Integral
Boolean
Integral
Boolean
Integral
Boolean
Boolean
Boolean
NA
13
13
Cualquiera
Cualquiera
=, / =, %=, + =,
Descripci
on
Igualdad y desigualdad de
valor.
Igualdad y desigualdad de
referencia.
AND bitwise.
AND booleano.
XOR bitwise.
XOR booleano.
OR bitwise.
OR booleano.
AND condicional.
OR condicional.
Operador ternario condicional.
Asignaci
on.
Asignaci
on con operaci
on.
=, <<=, >>=,
>>>=, &=, ^=, | =
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Operadores: observaciones
55 [52 - 63]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
56 [52 - 63]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
57 [52 - 63]
i n t l e n = m i O b j e t o . nombre . l e n g t h ( ) ;
int i n i c i a l i z a c i o n =
m i O b j e t o . nombre . s u b s t r i n g ( 5 , 1 0 ) . l e n g t h ( ) ;
Aqu hemos consultado la longitud de la variable nombre
invocando el metodo length() del objeto String.
El segundo caso, se solicita una subcadena de la cadena
nombre y preguntamos su longitud.
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
58 [52 - 63]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
59 [52 - 63]
S t r i n g temp1 = m i O b j e t o . nombre ;
S t r i n g temp2 = temp1 . s u b s t r i n g ( 5 , 1 0 ) ;
i n t i n i c i a l i z a c i o n = temp2 . l e n g t h ( ) ;
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Operadores: new
El operador new se usa para crear objetos:
O b j e c t o = new O b j e c t ( ) ;
El argumento para new es el constructor de la clase.
El constructor es un metodo que siempre tiene el mismo
nombre que la clase y especifica cuales son los parametros
necesarios para construir la clase.
El valor de la expresion new es una referencia del tipo de
objeto creado.
Los objetos siempre tienen uno mas constructores. Ya veremos
mas adelante la creacion de un objeto con detalle.
Podemos crear un objeto e invocar un metodo con el directamente:
60 [52 - 63]
i n t h o r a s = new Date ( ) . g e t H o u r s ( ) ;
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Operadores: instanceof
Para determinar el tipo de un objeto en tiempo de ejecucion se usa
el operador instanceof. Este operador comprueba si un objeto es
de un tipo concreto y devuelve un boolean que indica si el objeto
es de una clase especificada:
Boolean b ;
S t r i n g s t r = cosa ;
b = ( s t r i n s t a n c e o f S t r i n g ) ; // t r u e
b = ( s t r i n s t a n c e o f O b j e c t ) ; // t r u e
b = ( s t r i n s t a n c e o f Date ) ;
// f a l s e
instanceof tambien informa correctamente si el objeto es del tipo
del array o de la interfaz especificada:
61 [52 - 63]
i f ( c o s a i n s t a n c e o f byte [ ] )
...
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Operadores: instanceof
62 [52 - 63]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Este
operador es equivalente a la sentencia if, su sintaxis es de la
forma:
condici
on?expresi
on:expresi
on
por ejemplo:
a == b ? X . f u n c i o n 1 ( ) : X . f u n c i o n 2 ( ) ;
es equivalente a:
63 [52 - 63]
i f ( a == b )
X. funcion1 ( ) ;
else
X. funcion2 ( ) ;
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
64 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
65 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Clases de excepciones y errores
66 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Tratamiento de excepciones
67 [64 - 80]
try {
readFromFile ( f i c h e r o ) ;
...
} catch ( E x c e p t i o n e ) {
// Manejar e l e r r o r
System . o u t . p r i n t l n ( E x c e p c i o n : +e ) ;
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Tratamiento de excepciones
68 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Tratamiento de excepciones
69 [64 - 80]
try {
readFromFile ( f i c h e r o ) ;
...
} catch ( F i l e N o t F o u n d E x c e p t i o n e ) {
// A r c h i v o no e n c o n t r a d o
...
} catch ( I O E x c e p t i o n e ) {
// E r r o r de E/S
...
} catch ( E x c e p t i o n e ) {
// C u a l q u i e r o t r o e r r o r
...
}
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Tratamiento de excepciones
70 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Tratamiento de excepciones
71 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Tratamiento de excepciones
72 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Lanzar excepciones
73 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Propagaci
on de excepciones
74 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Propagaci
on de excepciones: Ejemplo
[ ] args ) {
s t a t i c v o i d metodo1 ( ) t h r o w s E x c e p t i o n {
metodo2 ( ) ;
}
s t a t i c v o i d metodo2 ( ) t h r o w s E x c e p t i o n {
throw new E x c e p t i o n ( E r r o o o o o o o o o o o o o o o o o o o r ! ! ! ! ! ! ) ;
}
}
75 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Propagaci
on de excepciones
76 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Acerca del try
77 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
Acerca del try
78 [64 - 80]
v o i d metodo ( ) {
int cosa ;
try {
cosa = cogerResultados ( ) ;
...
} catch ( E x c e p t i o n e ) {
...
}
i n t v a r = c o s a ; // E r r o r de c o m p i l a c i o n
}
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
La cl
ausula finally
79 [64 - 80]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Excepciones
La cl
ausula finally
try {
// C o s a s
} catch ( Excepcion1 e ) {
...
} catch ( Exception2 e ) {
...
} finally {
// L i m p i a r
}
80 [64 - 80]
try {
// H a c e r c o s a s
...
return ;
} finally {
System . o u t . p r i n t l n ( me e j e c u t o i g u a l ) ;
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
81 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Para crear un array un array de una longitud especfica y acceder a
sus elementos utilizamos el operador ndice []. Los objetos array
se diferencian del resto de los objetos Java en tres cosas:
82 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Tipos de arrays
Una variable del tipo array se representa con un tipo base seguido
por corchetes vacos [], aunque tambien es valido poner los
corchetes antes del nombre del array. Por ejemplo, estas dos
declaraciones son equivalentes:
int [ ] arrayEnteros ;
int arrayEnteros [ ] ;
En estas declaraciones no dimos el tama
no del array, solo estamos
declarando la variable de tipo array. El tama
no lo daremos al crear
el array.
Podemos crear un array de objetos con la misma sintaxis:
83 [81 - 97]
String [ ] strings ;
Cosa c o s a s [ ] ;
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Creaci
on e inicializaci
on de arrays
84 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Creaci
on e inicializaci
on de arrays
85 [81 - 97]
i n t [ ] numeros = i n t [ 1 0 ] ;
numeros [ 0 ] = 4 ;
numeros [ 1 ] = 7 ;
// numeros [ 2 ] == 0
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Creaci
on e inicializaci
on de arrays
86 [81 - 97]
S t r i n g nombres [ ] = new S t r i n g [ 4 ] ;
nombres [ 0 ] = new S t r i n g ( ) ;
nombres [ 1 ] = C a r l o s ;
nombres [ 2 ] = c u a l q u i e r O b j e t o . g e t S t r i n g ( ) ;
// nombres [ 3 ] == n u l l
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Creaci
on e inicializaci
on de arrays
87 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Creaci
on e inicializaci
on de arrays
88 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Uso de arrays
El tama
no de un array se encuentra en la variable p
ublica length:
char [ ] a l f a b e t o = new char [ 2 6 ] ;
i n t a l f L o n g = a l f a b e t o . l e n g t h ; // a l f L o n g == 2 6 ;
S t r i n g numeros [ ] = { uno , d o s , t r e s } ;
i n t num = numeros . l e n g t h ; //num == 3
length es el u
nico campo accesible del array. Es una variable, no
un metodo.
89 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Uso de arrays
90 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Uso de arrays
91 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Arrays an
onimos
92 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Arrays multidimensionales
93 [81 - 97]
C o l o r [ ] [ ] [ ] cuboRGB = new C o l o r [ 2 5 6 ] [ 2 5 6 ] [ 2 5 6 ] ;
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Arrays multidimensionales
94 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Arrays multidimensionales
95 [81 - 97]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Arrays multidimensionales: Ejemplo
96 [81 - 97]
boolean [ ] [ ]
t a b l e r o = new boolean [ 8 ] [ 8 ] ;
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Comentarios
Tipos
Sentencias
Expresiones
Excepciones
Arrays
Arrays
Arrays multidimensionales
Hay que observar que como la longitud no forma parte del tipo, las
dimensiones no tienen porque tener todas la misma longitud. Es
decir, los arrays multidimensionales no tienen porque ser
rectangulares, por ejemplo:
t a b l e r o [ 2 ] = new boolean [ 3 ] ;
t a b l e r o [ 3 ] = new boolean [ 1 0 ] ;
97 [81 - 97]
i n t [ ] [ ] t r i a n g u l o = new i n t [ 5 ] [ ] ;
f o r ( i n t i =0; i < t r i a n g u l o . l e n g t h ; i ++) {
t r i a n g u l o [ i ] = new i n t [ i + 1 ] ;
f o r ( i n t j =0; j <i +1; j ++) {
t r i a n g u l o [ i ] [ j ] = i+j ;
}
}
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Indice
98 [98 - 99]
Objetos en java
Clases
Creacion de objetos
Destruccion de objetos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
99 [98 - 99]
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Clases
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Clases
Podemos ver una clase como una plantilla o modelo que se utiliza
para crear objetos concretos.
Consta de variables denominadas campos junto con metodos
que operan sobre esos campos.
Encapsula los componentes pasivos (campos) y componentes
activos (metodos) en una u
nica entidad.
Una vez se declara una clase, se debe instanciar, es decir,
crear un objeto de ella, antes de que se pueda utilizar.
Cuando se crea una instancia de una clase, se crea un objeto
de ese tipo y el sistema asigna memoria para las variables
declaradas por la clase.
A continuacion se puede invocar a los metodos del objeto.
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Clases
c l a s s MiClase {
int var1 ;
Object var2 ;
...
v o i d metodo1 ( f l o a t n ) { . . . }
S t r i n g metodo2 ( ) { . . . }
...
}
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Clases
c . var1 = 8;
c . metodo1 ( 5 . 7 ) ;
S t r i n g s = c . metodo2 ( ) ;
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Variables
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Variables: Ejemplo
c l a s s MiClase {
...
static float var3 = 4 . 0 ;
...
}
Ahora todos los objetos de la clase MiClase tendran como valor
para var3 4.0 y si el valor se modifica desde uno de ellos queda
modificado para todos. Como los miembros static existen en la
misma clase tambiem podemos acceder a ellos empleando
directamente la clase:
MiClase . var3 = 8;
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Variables
c l a s s Cons {
s t a t i c f i n a l f l o a t PI = 3 . 1 4 ;
s t a t i c f i n a l f l o a t G= 9 . 8 0 ;
...
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Metodos
}
107 [100 - 112]
s t a t i c v o i d metodo1 ( ) {
System . o u t . p r i n t l n ( v a r 1 = +v a r 1 ) ;
System . o u t . p r i n t l n ( v a r 2 = +v a r 2 ) ; // E r r o r de
// c o m p i l a c i o n
}
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Metodos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Metodos: Ocultaci
on de variables
En este ejemplo (un poco forzado) las variables xPos e yPos son
ocultadas en el metodo flyToNext().
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Metodos: Ocultaci
on de variables
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Sobrecarga de metodos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Sobrecarga de metodos
A
un no vimos la herencia de clases, pero anticiparemos que si un
tipo encajaen mas de un metodo, se ejecutara el que reciba el
tipo mas especfico.
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Creaci
on de objetos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Creaci
on de objetos: Ejemplo
c l a s s Persona {
i n t edad ;
Persona () {
edad = 1 8 ;
}
P e r s o n a ( i n t edad ) {
t h i s . edad = edad ;
}
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Creaci
on de objetos
Si no se declara ning
un constructor Java crea un constructor
por defecto sin argumentos.
Un constructor puede invocar a otro constructor sobrecargado
usando la referencia this() con los argumentos necesarios
para llamar al constructor deseado.
Si hace una llamada a this() debe ser la primera del
constructor que la realiza.
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Creaci
on e objetos: Ejemplo
c l a s s Persona {
String calle ;
i n t edad ;
Persona () {
t h i s ( , 1 8 ) ;
}
Persona ( S t r i n g c , i n t e ) {
calle = c;
edad = e ;
}
Persona ( i n t e ) {
S t r i n g c = mi c a l l e ; // E r r o r de
this (c , e );
// c o m p i l a c i o n
}
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Creaci
on de objetos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Creaci
on de objetos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Creaci
on de objetos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Creaci
on de objetos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Destrucci
on de objetos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Clases
Creaci
on de objetos
Destrucci
on de objetos
Objetos
Destrucci
on de objetos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Indice
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
c l a s s Animal {
i n t peso ;
...
v o i d come ( ) { . . . }
...
}
P e r r o p = new P e r r o ( ) ;
p. ladra ();
p . come ( ) ;
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
S
olo se permite heredar de una u
nica clase, esto es herencia
u
nica.
No se heredan los miembros de la superclase que hayan sido
declarados como private.
Una subclase siempre tiene el mismo conjunto de miembros
visibles que su ascendente, por eso las subclases pueden usarse
en todos los sitios donde se puede usar la superclase:
P e r r o p = new P e r r o ( ) ;
Animal a = p ;
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Anulaci
on de variables
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Anulaci
on de variables
public c l a s s Anulacion {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
B b = new B ( ) ;
b . imprimeVarA ( ) ; // v a r = 2
b . imprimeVarB ( ) ; // v a r = 4
}}
class A {
int var = 2;
p u b l i c v o i d imprimeVarA ( ) {
System . o u t . p r i n t l n ( metodo A v a r=+v a r ) ;
}}
c l a s s B extends A {
int var = 4;
p u b l i c v o i d imprimeVarB ( ) {
System . o u t . p r i n t l n ( metodo B v a r=+v a r ) ;
}}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Anulaci
on de variables
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Anulaci
on de metodos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Anulaci
on de metodos
class A {
int var = 2;
p u b l i c v o i d imprimeVarA ( ) {
System . o u t . p r i n t l n ( metodo A v a r=+v a r ) ;
}
}
c l a s s B extends A {
int var = 4;
p u b l i c v o i d imprimeVarA ( ) {
System . o u t . p r i n t l n ( metodo A v a r=+v a r ) ;
}
p u b l i c v o i d imprimeVarB ( ) {
System . o u t . p r i n t l n ( metodo B v a r=+v a r ) ;
}
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Anulaci
on de metodos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Anulaci
on de metodos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Anulaci
on de metodos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Anulaci
on de metodos
class A {
int var = 2;
p u b l i c void imprimeVar ( ) {
System . o u t . p r i n t l n ( v a r=+v a r ) ;
}
}
c l a s s B extends A {
int var = 4;
p u b l i c void imprimeVar ( ) {
System . o u t . p r i n t l n ( v a r=+v a r ) ;
super . imprimeVar ( ) ;
}
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Casting
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Casting
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Contructores de superclase
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Contructores de superclase
c l a s s Animal {
...
A n i m a l ( S t r i n g nombre ) {
// I n i c i a l i z a c i o n de v a l o r e s
...
}
}
c l a s s Perro extends Animal {
...
P e r r o ( S t r i n g nombre , S t r i n g dueno ) {
s u p e r ( nombre ) ;
// mas v a l o r e s
...
}
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Constructores de superclase
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Constructores de superclase: Reglas
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Constructores de superclase: Reglas
En la u
ltima regla, la llamada al constructor de la superclase se
produjo con el constructor sobrecargado, bien implcita o
explcitamente, con cual la inicializacion de variables ya se ha
producido.
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Metodos y clases abstract
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Herencia
Metodos y clases abstract
a b s t r a c t c l a s s Animal {
...
abstract void s a l t a ( ) ;
}
c l a s s P e r r o extends Animal
...
void s a l t a ( ) { . . . }
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Interfaces
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Interfaces
Ejemplo
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Interfaces
Ejemplo
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Interfaces
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Interfaces
Ejemplo de jerarqua
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Interfaces
Ejemplo de jerarqua
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Paquetes
Un paquete es un nombre para un grupo de clases e interfaces
relacionadas, ademas crean un nivel de alcance para sus clases
y las variables y metodos que estan dentro de ellas.
Para declarar que una clase pertenece a un paquete concreto
se utiliza la sentencia package, esta sentencia debe ser la
primera en el fichero y no puede aparecer mas de una:
package a n i m a l e s ;
c l a s s Animal {
...
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Paquetes
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Paquetes
Si no queremos estar anteponiendo el nombre del paquete al de la
clase todo el tiempo podemos utilizar la sentencia import que
indica al compilador cual es el paquete al que pertenece la clase:
i m p o r t a n i m a l e s . A ni ma l ;
c l a s s Zoo {
....
void blabla () {
A n i m a l a = new A n i m a l ( ) ;
..
}
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Visibilidad
Visibilidad de clases
Por defecto una clase solo es accesible para otras clases dentro de
su propio paquete. Para que sea visible en cualquier parte hay que
declararla como public:
package a n i m a l e s ;
p u b l i c c l a s s A n i ma l { . . . }
S
olo puede exitir un clase p
ublica por fichero y el nombre de
la clase p
ublica debe ser igual al nombre del fichero.
Al hacer publicas solo algunas clases de un paquete
proporcionamos a los usuarios del paquete una interfaz bien
definida para su uso, ocultando partes internas del mismo.
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Visibilidad
Visibilidad de variables y metodos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Visibilidad
Visibilidad de variables y metodos
Modificador
private
(ninguno)
protected
public
Visibilidad
Ninguna
Clases en el paquete
Clases en el paquete y en las subclases dentro o fuera del paquete
Todas las clases
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Visibilidad
Visibilidad de interfaces
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
La clase Cerebro es una clase interna de Animal. Ahora a
nadimos
un metodo a la clase Animal:
p u b l i c c l a s s Animal {
S t r i n g nombre ;
c l a s s Cerebro {
public void piensa () { . . . }
}
public void realizaComportamiento () { . . .
C e r e b r o c = new C e r e b r o ( ) ;
c . piensa ();
...
}
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Nos gustara que esta clase nos proporcionara sus elementos por
medio de un iterador, que es una interfaz sencilla para listar
objetos. La interfaz java.util.Iterator tiene varios metodos
como:
public interface I t e r a t o r {
p u b l i c boolean h a s N e x t ( ) ;
public Object next ( ) ;
p u b l i c v o i d remove ( ) ;
}
Esto nos permite ver los elementos preguntando por el siguiente y
preguntando si queda alguno mas.
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Para crear un iterador podemos usar una clase interna:
public c l a s s ListaEmpleados {
p r i v a t e Empleado [ ] e m p l e a d o s = . . . ;
...
c l a s s I t e r a d o r implements j a v a . u t i l . I t e r a t o r {
i n t elemento = 0;
p u b l i c boolean hasNext ( ) {
r e t u r n e l e m e n t o<e m p l a d o s . l e n g t h ;
}
p u b li c Object next () {
i f ( hasNext ( ) ) {
r e t u r n e m p l e a d o s [ e l e m e n t o ++];
} else {
throw new R u n t i m e E x c e p t i o n ( No hay mas e l e m e n t o s ) ;
}
}
p u b l i c v o i d remove ( ) {
throw new U n s u p p o r t e d O p e r a t i o n E x c e p t i o n ( ) ;
}
}
...
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Clases internas dentro de metodos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Clases internas dentro de metodos
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Ocultaci
on de variables
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Ocultaci
on de variables: Ejemplo
class Cerebro {
Animal miAnimal = Animal . t h i s ;
}
Tambien podemos hacer referencia a las variables de la clase del
mismo modo:
c l a s s Animal {
int s i z e = 10;
class Cerebro {
int size = 2;
i n t a n i m a l S i z e = Animal . t h i s . s i z e ;
}
}
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Clases internas an
onimas
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Clases internas an
onimas: Ejemplo
public c l a s s ListaEmpleados {
p r i v a t e Empleado [ ] e m p l e a d o s ;
...
I t e r a t o r getIterator () {
r e t u r n new j a v a . u t i l . I t e r a t o r ( ) {
i n t elemento = 0;
}
170 [158 - 171]
p u b l i c boolean hasNext ( ) {
r e t u r n e l e m e n t o<e m p l a d o s . l e n g t h ;
}
p u b l i c Object next () {
i f ( hasNext ( ) ) {
r e t u r n e m p l e a d o s [ e l e m e n t o ++];
} else {
throw new R u n t i m e E x c e p t i o n ( No hay mas e l e m e n t o s ) ;
}
}
p u b l i c v o i d remove ( ) {
throw new U n s u p p o r t e d O p e r a t i o n E x c e p t i o n ( ) ;
}
}
}
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Introducci
on
Sintaxis
Objetos en java
Relaciones entre clases
Herencia
Interfaces
Paquetes
Visibilidad
Clases internas
Clases internas
Clases internas an
onimas: Ejemplo
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Parte II
Usos del lenguaje
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Indice
Threads
Introduccion
Sincronizacion
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Composicion
Al usar threads siempre hay dos actores principales:
Uno representa al thread
El otro contiene el metodo que el thread va a ejecutar.
A veces, es posible combinarlos, pero esto no cambia la relacion.
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Ejemplo
c l a s s A n i m ac i o n implements R u n n a b l e {
...
public void run ( ) {
while ( true ) {
// d i b u j a
...
}
}
}
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Ejemplo
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Ejemplo
public cla ss Corredor {
p r i v a t e S t r i n g nombre ;
p u b l i c C o r r e d o r ( S t r i n g nombre ) {
t h i s . nombre = nombre ;
}
public void corre ( int n) {
f o r ( i n t i =0; i <n ; i ++) {
System . o u t . p r i n t l n ( +nombre+ : +i ) ;
// S i m u l a una o p e r a c i o n c o s t o s a de d u r a c i o n
// v a r i a b l e
try {
i n t t = ( i n t ) ( Math . random ( ) 1 0 0 ) ;
Thread . s l e e p ( t ) ;
} c a t c h ( E x c e p t i o n e ) {}
}
System . o u t . p r i n t l n ( +nombre+ : T e r m i n e e e e ! ! ! ) ;
}
}
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Ejemplo
public class Carrera {
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) {
Corredor corredor1 , corredor2 ;
c o r r e d o r 1 = new C o r r e d o r ( A ) ;
c o r r e d o r 2 = new C o r r e d o r ( B ) ;
corredor1 . corre (10);
corredor2 . corre (10);
}
}
Que sucede?
Primero se ejecuta uno y desp
ues el otro. Vamos a a
nadir
concurrencia para que sea una carrera de verdad.
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Ejemplo: A
nadiendo concurrencia
c l a s s Corredor2 implements Runnable {
...
p u b l i c void run ( ) {
corre (10);
}
}
public class Carrera2 {
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) {
Thread c o r r e d o r 1 , c o r r e d o r 2 ;
c o r r e d o r 1 = new Thread ( new C o r r e d o r 2 ( A ) ) ;
c o r r e d o r 2 = new Thread ( new C o r r e d o r 2 ( B ) ) ;
corredor1 . start ();
corredor2 . start ();
}
}
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Recordamos
Este
es el uso general mas importante de la clase Thread.
En la mayora de los casos en los que se tiene que usar threads
se creara una clase que implemente la interfaz Runnable.
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Otro modo
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Otro modo
Anim a c i o n a n i m a c i o n = new A n i m a c i on ( ) ;
animacion . s t a r t ( ) ;
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Control de un Thread
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Control de un Thread
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Control de un Thread
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Control de un Thread
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Vida de un Thread
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Introduccion
Control de un Thread
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Acceso en serie a metodos
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Acceso en serie a metodos: Ejemplo
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Acceso en serie a metodos: Ejemplo
public class Sincronizacion {
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) {
S i n t e t i z a d o r V o z s = new S i n t e t i z a d o r V o z ( ) ;
di ( s , hola a todos ) ;
d i ( s , HOLA A TODOS ) ;
}
s t a t i c void di ( f i n a l SintetizadorVoz s ,
final String frase ) {
( new Thread ( new R u n n a b l e ( ) {
p u b l i c void run ( ) {
s . di ( frase );
}
})). start ();
}
}
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Acceso en serie a metodos: Ejemplo
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Acceso en serie a metodos: Ejemplo
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Acceso en serie a metodos: Ejemplo
Vuelven a mezclarse
El motivo es que el cierre esta en el objeto
Se soluciona haciendo el metodo di(String frase) estatico
con lo que el cierre pasa a la clase
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Si se pone mas de un metodo synchronized, solo se ejecuta
uno de ellos a la vez.
Esto es debido a que todos tienen el mismo cierre.
Con esto mantenemos la consistencia en los resultados
Ejemplo:
int a , b ;
s y n c h r o n i z e d i n t sum ( ) { r e t u r n a+b ; }
synchronized void s e t ( i n t a , i n t b ) {
this . a = a ;
this . b = b ;
}
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Bloques de c
odigo
es equivalente a:
v o i d metodo ( ) { s y n c h r o n i z e d ( t h i s ) { . . . } }
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Metodos wait() y notify()
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Metodos wait() y notify(): Ejemplo
p u b l i c c l a s s C o n s u m i d o r e x t e n d s Thread {
Productor productor ;
S t r i n g nombre ;
Consumidor ( S t r i n g n , Pr o duc t o r p ) {
nombre = n ;
productor = p ;
}
p u b l i c void run ( ) {
try {
while ( true ) {
S t r i n g mensaje = productor . getMensaje ( ) ;
System . o u t . p r i n t l n ( nombre+ o b t i e n e m e n s a j e : +m e n s a j e ) ;
sleep (2000);
}
} catch ( I n t e r r u p t e d E x c e p t i o n e ) {
}
}
}
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Metodos wait() y notify(): Ejemplo
import j a v a . u t i l . Vector ;
p u b l i c c l a s s P r o d u c t o r e x t e n d s Thread {
s t a t i c f i n a l i n t LONG COLA = 5 ;
p r i v a t e V e c t o r m e n s a j e s = new V e c t o r ( ) ;
p u b l i c void run ( ) {
try {
while ( true ) {
generaMensaje ( ) ;
sleep (1000);
}
} c a t c h ( I n t e r r u p t e d E x c e p t i o n e ) {}
}
p r i v a t e synchronized void generaMensaje ( ) throws I n t e r r u p t e d E x c e p t i o n {
w h i l e ( m e n s a j e s . s i z e ( ) == LONG COLA)
wait ( ) ;
m e n s a j e s . a d d E l e m e n t ( new j a v a . u t i l . Date ( ) . t o S t r i n g ( ) ) ;
notifyAll ();
}
p u b l i c synchronized S t r i n g getMensaje ( ) throws I n t e r r u p t e d E x c e p t i o n {
notify ();
w h i l e ( m e n s a j e s . s i z e ( ) == 0 ) w a i t ( ) ;
S t r i n g mensaje = ( S t r i n g ) mensajes . f i r s t E l e m e n t ( ) ;
mensajes . removeElement ( mensaje ) ;
retur n mensaje ;
}
}
203 [192 - 204]
Carlos Varela Paz (cvarela@dc.fi.udc.es)
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Introducci
on
Sincronizaci
on
Sincronizacion
Metodos wait() y notify(): Ejemplo
En la clase principal:
P r o d u c t o r p = new P r o d u c t o r ( ) ;
p. start ();
new C o n s u m i d o r ( Uno : , p ) . s t a r t ( ) ;
new C o n s u m i d o r ( Dos : , p ) . s t a r t ( ) ;
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Indice
Entrada/Salida
E/S Estandar
Ficheros
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Primer ejemplo
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Primer ejemplo
import j a v a . i o . ;
p u b l i c c l a s s Ejemplo {
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] )
throws IOException {
int c ;
int contador = 0;
w h i l e ( ( c = System . i n . r e a d ( ) ) != 1 ) {
c o n t a d o r ++;
System . o u t . p r i n t ( ( c h a r ) c ) ;
}
System . o u t . p r i n t l n ( ) ;
// L i n e a en b l a n c o
System . e r r . p r i n t l n ( C o n t a d o s + c o n t a d o r + b y t e s . ) ;
}
}
208 [207 - 208]
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Ficheros
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Ficheros: Ejemplo
import j a v a . i o . ;
class InfoFichero {
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) t h r o w s I O E x c e p t i o n {
i f ( args . length > 0 ) {
f o r ( i n t i =0; i < a r g s . l e n g t h ; i++ ) {
F i l e f = new F i l e ( a r g s [ i ] ) ;
System . o u t . p r i n t l n ( Nombre : +f . getName ( ) ) ;
System . o u t . p r i n t l n ( Camino : +f . g e t P a t h ( ) ) ;
i f ( f . e x i s t s () ) {
System . o u t . p r i n t ( F i c h e r o e x i s t e n t e ) ;
System . o u t . p r i n t ( ( f . canRead ( ) ?
, s e pue de L e e r : ) ) ;
System . o u t . p r i n t ( ( f . c a n W r i t e ( ) ?
, se puese E s c r i b i r : ) ) ;
System . o u t . p r i n t l n ( . ) ;
System . o u t . p r i n t l n ( La l o n g i t u d d e l f i c h e r o s o n +
f . l e n g t h ()+ b y t e s ) ;
} else
System . o u t . p r i n t l n ( E l f i c h e r o no e x i s t e . ) ;
}
} else
System . o u t . p r i n t l n ( Debe i n d i c a r un f i c h e r o . ) ;
}
}
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Ficheros: Lectura
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Ficheros: Lectura
import j a v a . i o . ;
public class VerFichero {
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) {
i f ( args . length > 0 ) {
try {
int c ;
F i l e I n p u t S t r e a m f i s = new F i l e I n p u t S t r e a m ( a r g s [ 0 ] ) ;
w h i l e ( ( c= f i s . r e a d ())!= 1) {
System . o u t . p r i n t ( ( c h a r ) c ) ;
}
} catch ( FileNotFoundException e ) {
System . o u t . p r i n t l n ( E l f i c h e r o no e x i s t e . ) ;
return ;
} catch ( IOException e ) {
System . o u t . p r i n t l n ( E r r o r de E/S . ) ;
}
} else
System . o u t . p r i n t l n ( Debe i n d i c a r un f i c h e r o . ) ;
}
}
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Ficheros: Escritura
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Ficheros: Escritura
import j a v a . i o . ;
public class Salida {
s t a t i c FileOutputStream fos ;
public s t a t i c f i n a l int longLinea = 81;
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) t h r o w s I O E x c e p t i o n {
b y t e d a t o s [ ] = new b y t e [ l o n g L i n e a ] ;
f o s = new F i l e O u t p u t S t r e a m ( d a t o s . d a t ) ;
while ( true ) {
System . e r r . p r i n t ( T e c l e a a l g o : ) ;
leeLinea ( datos ) ;
f o r ( i n t i =0; d a t o s [ i ] != 0 ; i++ )
fos . write ( datos [ i ] ) ;
f o s . w r i t e ( \n ) ;
}
}
p r i v a t e s t a t i c void l e e L i n e a ( byte l i n e a [ ] ) throws IOException {
int b = 0 , i = 0;
w h i l e ( ( i < ( l o n g L i n e a 1) ) &&
( ( b = System . i n . r e a d ( ) ) != \n ) )
l i n e a [ i ++] = ( b y t e ) b ;
l i n e a [ i ] = ( byte ) 0 ;
}
}
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Ficheros
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Ficheros
InputStreamReader/OutputStreamReader
Convierten un InputStream/OutputStream en un
Reader/Writer.
BufferedInputStream/BufferedOutputStream/BufferedReader/BufferedWriter
A
naden memoria de almacenamiento temporal.
DataInputStream/DataOutputStream
Permiten leer modelos simples de datos como tipos
primitivos y String
PrintWriter/PrintStream
Simplifican la impresion de texto
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Ficheros: Ejemplo
import j a v a . i o . ;
public class Salida2 {
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) t h r o w s I O E x c e p t i o n {
P r i n t W r i t e r pw =
new P r i n t W r i t e r ( new F i l e W r i t e r ( d a t o s . d a t ) ) ;
BufferedReader br =
new B u f f e r e d R e a d e r ( ( new I n p u t S t r e a m R e a d e r ( System . i n ) ) ) ;
while ( true ) {
System . e r r . p r i n t ( T e c l e a a l g o : ) ;
pw . p r i n t l n ( b r . r e a d L i n e ( ) ) ;
}
}
}
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
E/S Est
andar
Ficheros
Entrada/Salida
Ficheros: Ejemplo
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Indice
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
JFrame . s e t D e f a u l t L o o k A n d F e e l D e c o r a t e d ( t r u e ) ;
JFrame f r a m e = new JFrame ( Ventana h o l a mundo ) ;
...
f r a m e . pack ( ) ;
frame . s e t V i s i b l e ( true ) ;
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
javax . swing . S w i n g U t i l i t i e s . i n v o k e L a t e r (
new R u n n a b l e ( ) {
p u b l i c void run ( ) {
/ c r e a r y m o s t r a r l a GUI /
}
});
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Con UIManager.setLookAndFeel(LOOKANDFEEL);
establecemos la apariencia de la aplicacion.
El parametro es el nombre del Look and Feel
Hay unos cuantos predefinidos:
com.sun.java.swing.plaf.gtk.GTKLookAndFeel
javax.swing.plaf.metal.MetalLookAndFeel
com.sun.java.swing.plaf.windows.WindowsLookAndFeel
com.sun.java.swing.plaf.motif.MotifLookAndFeel
Ademas:
UIManager.getCrossPlatformLookAndFeelClassName():
Devuelve un look and feel multiplataforma.
UIManager.getSystemLookAndFeelClassName(): Look and
feel de la plataforma actual
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Tipo
ActionListener
WindowListener
MouseListener
MouseMotionListener
ComponentListener
FocusListener
ListSelectionListener
PropertyChangeListener
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
);
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Para a
nadir el borde, usamos
pane . s e t B o r d e r (
BorderFactory . createEmptyBorder (
30 , 30 , 10 , 30) ) ;
Crea un borde al panel de manera que separa los componentes
a
nadidos del borde exterior.
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
tempCelsius . getText ( ) ;
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
J P a n e l p a n e l = new J P a n e l ( new B o r d e r L a y o u t ( ) ) ;
Container contentPane = frame . getContentPane ( ) ;
c o n t e n t P a n e . s e t L a y o u t ( new F l o w L a y o u t ( ) ) ;
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Podemos a
nadir menus a las ventanas. Para ellos creamos un
JMenuBar y se lo a
nadimos al JFrame haciendo
setJMenuBar(menu)
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Ademas podemos a
nadir un menu popup a nuestro editor.
Usamos un JPopupMenu
Son parecidos a los JMenu, contienen JMenuItem
Para hacer que aparezca al pulsar el boton derecho tenemos
que registrarnos en los eventos del raton.
Usamos el metodo addMouseListener que espera recibir un
MouseListener. Podemos extender la clase MouseAdapter y
anular los metodos que nos interesan.
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
c l a s s P o p u p L i s t e n e r extends MouseAdapter {
p u b l i c v o i d m o u s e P r e s s e d ( MouseEvent e ) {
maybeShowPopup ( e ) ;
}
p u b l i c v o i d m o u s e R e l e a s e d ( MouseEvent e ) {
maybeShowPopup ( e ) ;
}
p r i v a t e v o i d maybeShowPopup ( MouseEvent e ) {
i f ( e . isPopupTrigger ()) {
popup . show ( e . getComponent ( ) ,
e . getX ( ) , e . getY ( ) ) ;
}
} Varela Paz (cvarela@dc.fi.udc.es)
Carlos
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Hola mundo
Mini-aplicaci
on
Entrada de datos
Layouts
Ejercicio
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Indice
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
j a v a . n e t . URL imgURL =
NombreDeClase . c l a s s . g e t R e s o u r c e ( p a t h ) ;
El metodo getResource hace que el cargador de clases busque en
los directorios del classpath y en los .jar y devuelva una URL con la
direcci
on del fichero.
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
JTabbedPane.TOP
JTabbedPane.BOTTOM;
JTabbedPane.LEFT
JTabbedPane.RIGHT
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java
Threads
Entrada/Salida
Interfaces Gr
aficas de usuario
Interfaces Gr
aficas de usuario II
Checkboxes
Botones de radio
ComboBox
Im
agenes
Tabs
SplitPane
Rendimiento
Introducci
on al lenguaje de programaci
on Java