Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Contenidos
Tecnologa Java
Un lenguaje de programacin Un entorno de desarrollo
El JDK
Un entorno de aplicaciones
El JRE la JVM
Un entorno de implantacin
En local la JVM, en remoto el Navegador
3
Caractersticas de la plataforma
La JVM
Virtual Portable entre S.O.
Ejemplo
Compilacin y ejecucin
Contenidos
10
Conceptos clave:
Ocultacin de informacin Encapsulacin Herencia Polimorfismo
12
Declaraciones:
De clase
De atributo
De mtodo
13
Declaraciones: ejemplos
14
Ocultacin de informacin
Impedir manipulaciones descontroladas de los atributos
15
16
Encapsulacin
Usando los mecanismos de ocultacin conseguimos encapsulacin
Ofrecer una vista pblica (interfaz) sin dar detalles de cmo es la implementacin
17
Constructores
Sin argumentos
Por defecto
Con argumentos
Anula la generacin por defecto de constructor sin argumentos A veces se necesitan los dos aunque el constructor sin argumento no haga nada
18
19
Declaracin de importacin
20
Agrupacin en paquetes
Si el sistema software es grande se subdivide en paquetes Cuidado con las dependencias entre paquetes
21
22
23
24
Contenidos
25
Comentarios
26
Comentarios JavaDoc
27
Tipos primitivos
Lgicos: boolean Textuales: char
Enteros: byte, short, int y long Reales en coma flotante: double y float
28
Tipo String
29
30
Los literales en coma flotante se consideran double a menos que se declaren expresamente como float
2.718F 2.718f
31
32
Tipos referencia
Construccin e inicializacin
1. Se asigna e inicializa el espacio al nuevo objeto como 0 o vaco (null).
En programacin Java, esta fase es indivisible para garantizar que no habr objetos que contengan valores aleatorios.
4. El valor resultante de new es una referencia al nuevo objeto en el espacio de memoria dinmica. 5. Esta referencia se guarda en la variable de referencia.
34
Construccin e inicializacin
1
35
Construccin e inicializacin
3
36
Construccin e inicializacin
5
37
Uso de this
Desambiguacin Autoreferencia
38
Asignacin de referencias
39
Convenios de codificacin
Constantes: en maysculas, separando palabras
subrayado TOTAL_NOMINA CANTIDAD_MAXIMA Estructuras de control: if-else o for, escribirlas entre llaves ({ }), aunque sean sentencias sencillas.
if ( condicin ) { sentencia1; } else { sentencia2; }
41
Contenidos
42
mbito de variables
43
Operadores, precedencia
45
Operadores lgicos
Operan en cortocircuito
46
47
<< a la izquierda
48
49
Concatenacin de cadenas:
50
Conversin de tipos
51
Todas las operaciones binarias dan como mnimo int, o el tipo ms largo de los operandos
Ok Error
52
53
Sentencia switch
54
Bucles for
55
Bucle while
56
Bucle do/while
57
58
Contenidos
59
60
61
Arrays de referencias
62
Inicializacin
Cada posicin de s \u0000 Cada posicin de Point null
equivale a
Arrays multidimensionales
Arrays de arrays Arrays dentados (o no rectangulares) Array rentangular
64
65
Equivalentes
66
Copia de arrays
Utilidad de copia en clase System
67
Contenidos
68
Subclases
69
Subclases
70
Herencia sencilla
71
Control de acceso
Niveles de acceso
72
redefine
73
Redefinicin
No se puede reducir la visibilidad
74
75
Polimorfismo
Una variable referencia es polimrfica, puede apuntar a varios tipos de objetos Sin embargo no es posible
76
Mtodos virtuales
A qu mtodo getDetails() se llama?
Al de Gerente? Al de Empleado?
Se determina en runtime
Depende el objeto asociado y de la declaracin del mtodo En java por defecto todos los mtodo son virtuales En este caso se ejecutara el de Gerente
77
Argumentos polimrficos
78
Operador instanceof
Usando bien el polimorfismo es muy poco habitual hacer estos chequeos. A menudo indicacin de un mal diseo
79
Conversin de objetos
Sobrecarga de mtodos
Reglas:
Las listas de argumentos deben ser diferentes Los tipos de retorno pueden ser diferentes
Pero no es suficiente si es la nica diferencia
81
82
Sobrecarga de constructores
83
Ms sobre constructores
Los constructores no se heredan Se puede llamar a los constructores de las clases padre
Clase Object
Equals
Distinto de ==
Equals equivalencia == misma referencia
toString
Devuelve representacin en String de los valores del objeto
85
Equals y hashCode
86
Clases envoltorio
Java no considera los tipos de datos primitivos como objetos
De String a int
87
Autoboxing, autounboxing
88
Contenidos
89
90 Si no es private
91
Inicializadores estticos
Se ejecutan al cargar la clase
Ejecucin:
92
93
Tipos enumerados
95
Clases abstractas
La clase base indica que operaciones deben soportar las subclases pero no tiene conocimiento para resolver las operaciones
97
Clases abstractas
98
Interfaces
99
Interfaces
Definen un contrato entre cdigo cliente y la clase que proporciona la implementacin
Una clase implementa un interfaz definiendo todos sus mtodos Muchas clases pueden implementar un interfaz sin que haya jerarqua entre ellas Una clase puede implementar varios interfaces herencia mltiple de interfaces Los nombres de interfaz son tipos de variables referencia Conversiones de tipos e instanceOf
100
Interfaces
Sin necesidad de indicarlo:
Todos los mtodos declarados en una interfaz son pblicos y abstract Todos los atributos son public, static y final constantes
101
Mltiples implementaciones
102
Mezcla
103
Mltiples interfaces
104
Contenidos
106
Excepciones y aserciones
Excepciones: mecanismo de gestin de errores
Muy comn en los lenguajes OO
Tipos de Excepciones
Chequeadas
Indican situaciones de error que se espera que el programador gestione (escriba cdigo para ello)
No chequeadas
Indican errores en el cdigo o el entorno de imposible o difcil recuperacin no se obliga al programador a escribir cdigo para gestionarlas Errores: subtipo de no chequeadas, indican problemas en la JVM (OutOfMemoryError, etc)
108
Excepciones, ejemplo
109
Sentencia try-catch
110
111
Ejecucin
113
Ejecucin
114
Clusula finally
Garantiza que el cdigo de su bloque siempre se ejecuta, incluso si se lanza excepcin No detiene la propagacin de la excepcin
115
Categoras de excepciones
No Chequeadas Chequeadas
116
Categoras de excepciones
Error:
Indica problemas en la JVM, no son errores recuperables. La JVM debe parar.
RuntimeException:
Errores de consistencia del programa, generalmente por errores de programacin. El programa no se suele poder recuperar.
Exception:
Problemas en tiempo de ejecucin causados por efectos del entorno y suelen poder gestionarse
117
118
Es hija de IOException
120
Aserciones
Si la expresin booleana no es true se provoca AssertionError y el programa aborta Chequean consistencia interna del programa Implementar programacin por contrato:
Postcondiciones Invariantes Las precondiciones lanzan excepciones
121
122
Las aserciones se deshabilitan cuando el programa est en produccin, este chequeo no se tiene que deshabilitar
123
124
Contenidos
125
API Collections
Una coleccin es un objeto que administra un grupo de objetos Los objetos de la coleccin se llaman
elementos
Las colecciones suelen trabajar con numerosos tipos de objetos, pero todos ellos son de un mismo tipo (todos descienden de un mismo tipo de nivel superior)
126
API Collections
El API Collections contiene interfaces que asignan los objetos a uno de los siguientes grupos: Collection: un grupo de objetos que se denominan elementos
Set: una coleccin sin orden especfico,
que no admite duplicados. List: una coleccin ordenada que admite duplicados.
127
Jerarqua de Collections
128
129
Salida
130
Salida
131
Interfaz Map
Tambin denominados arrays asociativos Un Map guarda asignaciones de claves a valores Map no admite claves duplicadas y una clave slo puede asignarse a un valor Map: tres mtodos para ver contenido como colecciones:
entrySet: devuelve una variable Set que contiene todos los pares formados por una clave y un valor. keySet: devuelve una variable Set con todas las claves del mapa. values: devuelve una variable Collection con todos 132 los valores contenidos en el mapa.
Jerarqua Map
133
134
Ordenacin de colecciones
En las List los elementos se guardan en el orden de insercin
Las List se pueden ordenar creando una nueva lista con los elementos insertados en el orden adecuado Collections.sort()
Ordenacin de collections
Orden natural:
Las clase debe implementar el interfaz
Comparable
136
Uso de comparable
137
Uso de Comparator
138
Uso de Comparator
139
Con genricos
141
Comparacin
142
143
Iteradores
Permiten recorrer la coleccin hacia delante
Iteradores
Todas las colecciones producen iteradores List soporta un iterador especial con funcionalidad aadida
Recorrido inverso Insercin Modificacin
145
146
Contenidos
147
148
Properties almacena pares clave=valor, ambos String Estas propiedades son las que conoce la JVM en el momento del arranque
149
150
151
152
153
154
Flujos de nodos
Son los extremos finales de cadenas de flujos de procesamiento
Fuentes o sumideros
155
156
Flujos en bfer
Buffered[R/W] permite leer lneas enteras Aaden procesamiento a los char servidos por FileReader y FileWriter Son nodos intermedios de procesamiento
157
158
Flujos de procesamiento
Van en la parte intermedia de las cadenas de procesamie nto
No son nodos extremos
Clases de utilidad para implementar procesamiento particular
159
160
161
162
163
164
Codificaciones de caracteres
UTF-8, UTF-16, ISO-8859-1, etc
Diferencia entre tabla de caracteres y representacin binaria de los caracteres Flujos de texto reconocen las codificaciones binarias
166
167
Serializacin
Convertir un objeto a una secuencia de bytes que puede:
Ser guardada en soporte persistente Ser transmitida por la red
Slo se serializan los atributos, no los mtodos La clase debe implementar el interfaz Serializable no tiene mtodos, solo marca
Todos los atributos deben ser serializables Si alguno no lo puede ser se debe marcar como transient
168
Clases serializables
Determinadas clases por su naturaleza no son serializables: Streams, Threads, etc. El modificador de acceso no tiene efecto
169
170
Contenidos
171
E/S de consola
Java permite interaccin con la consola usando java.lang.System
System.out: es un PrintStream inicialmente conectado a la ventana de terminal que haya abierto la aplicacin Java System.in: es un InputStream inicialmente conectado al teclado del usuario System.err: es un PrintStream conectado tambin a la ventana de terminal
172
173
174
175
176
Clase File
178
179
180
Contenidos
181
API de accesibilidad.
lectores y amplificadores de pantallas, transformacin de texto en voz, etc
183
Arquitectura de Swing
Se basa en el patrn MVC, pero con variantes
184
Arquitectura de modelodelegado
Variante de MVC usada por Swing La vista y el controlador se funden, solo queda separado el modelo
Es modelo suele ser una representacin desde el punto de vista del GUI de la implementacin real del modelo
185
Paquetes de Swing
Componentes
Derivan de la clase JComponent: JComboBox, JAbstractButton, JTextComponent, etc
Administradores de diseo
BorderLayout, FlowLayout y GridLayout, etc
187
Elementos de la GUI
188
Contenedores Swing
189
Componentes Swing
Botones Componentes de texto Componentes de visualizacin de informacin no editable Mens Componentes de pantalla con formato Otros controles bsicos
190
191
Administradores de diseo
Determinan el tamao y la posicin de los componentes dentro de un contenedor Alternativas:
Fijar pociones absolutas en pixels
Problemas de portabilidad entre plataformas y disposiitvos de visualizacin
192
Administradores de diseo
194
195
Construccin de la GUI
Con herramientas de generacin de cdigo de interfaces
Borland, EclipseVE, MyEclipse, Matisse ... (no se incluye en este curso)
De forma programtica
til en aprendizaje y experimentacin Programacin poco eficiente, el cdigo es muy tedioso y repetitivo
196
Aplicacin HelloWorldSwing
197
Contenidos
198
Qu es un evento
Cualquier accin del usuario en la interfaz produce un evento El evento captura informacin acerca de lo ocurrido, en qu componente, cuando
199
Modelo de delegacin
Cada fuente de eventos, para cada evento, puede tener asignados varios manejadores de eventos
Tambin se les llama event listeners
201
202
Categoras de eventos
204
ene-09
205
206
Ejemplo complejo
207
Adaptadores de eventos
En vez de implementar directamente las interfaces de los listener
Lo que obliga a implementar todos los mtodos aunque no se est interesado
209
Creacin de un men
212
Contenidos
213
java.lang.Thread:
Clase de Java que permite controlar los hilos (representa una CPU)
CPU virtual
214
216
Estados de un hilo
218
Tiempo mnimo dormido (en milisegundos) a no ser que sea interrumpido su sueo
219
Thread.join() ejemplo
222
Uso de synchronized
Permite controlar hilos que comparten datos
223
224
Synchronized, conclusiones
El mecanismo de sincronizacin slo funciona si todo el acceso a los datos sensibles es sincronizado Los datos de bloques sincronizados deberan ser private Mtodos sincronized
226
227
229
Contenidos
230
231
Esquema de conexin
232
233
234
235