1. Desarrollo de software
Se tratan diferentes
aspectos de Java, desde las
aplicaciones hasta los
applets a través de
numerosos ejemplos.
Como herramientas de
desarrollo se utilizan
Microsoft Visual J++ 6 y
JBuilder. La versión tratada
del lenguaje es la estándar
de Sun Microsystems.
Se pretende adiestrar sobre:
• Programación Orientada
a Objetos.
• Construcción de
aplicaciones Java.
• Creación de applets Java.
• Tratamiento de eventos y
construcción de
interfaces de usuario.
• Utilización de Visual J++
6.
• Programación multihilo.
• Acceso a ficheros y
conexiones a través de
Internet.
El único requisito es conocer
algún lenguaje de
programación
PROGRAMACIÓN EN JAVA
ÁNGEL ESTEBAN
5. Índice
ÍNDICE................................................................................................................................................... 5
INTRODUCCIÓN A LA POO ........................................................................................................... 11
¿QUÉ ES LA POO?.............................................................................................................................. 11
OBJETOS ............................................................................................................................................. 12
MENSAJES .......................................................................................................................................... 13
CLASES............................................................................................................................................... 14
HERENCIA .......................................................................................................................................... 14
MÉTODOS ........................................................................................................................................... 15
POLIMORFISMO .................................................................................................................................. 16
SOBRECARGA ..................................................................................................................................... 16
LA LEY DE DEMETER ......................................................................................................................... 16
MODELO DE OBJETOS ......................................................................................................................... 17
RELACIONES ENTRE CLASES .............................................................................................................. 17
VENTAJAS E INCONVENIENTES DE LA POO ....................................................................................... 18
UN EJEMPLO SENCILLO ...................................................................................................................... 19
INTRODUCCIÓN AL LENGUAJE JAVA ...................................................................................... 21
INTRODUCCIÓN .................................................................................................................................. 21
BREVE HISTORIA DEL LENGUAJE ....................................................................................................... 22
DESCRIPCIÓN DEL LENGUAJE ............................................................................................................. 22
PROGRAMAS EN JAVA: APPLETS Y APLICACIONES ............................................................................ 25
SIMILITUDES Y DIFERENCIAS ENTRE JAVA Y C++ ............................................................................. 26
VERSIONES DEL LENGUAJE ................................................................................................................ 26
ENTORNOS DE DESARROLLO .............................................................................................................. 27
CARACTERÍSTICAS DE LA PLATAFORMA JAVA 2 ............................................................................... 29
6. SINTAXIS DEL LENGUAJE JAVA................................................................................................. 33
INTRODUCCIÓN .................................................................................................................................. 33
IDENTIFICADORES .............................................................................................................................. 33
PALABRAS CLAVE .............................................................................................................................. 35
LITERALES ......................................................................................................................................... 36
Enteros........................................................................................................................................... 36
Coma flotante................................................................................................................................. 37
Booleanos ...................................................................................................................................... 37
Caracteres...................................................................................................................................... 37
Cadenas ......................................................................................................................................... 38
El literal null.................................................................................................................................. 38
OPERADORES ..................................................................................................................................... 38
SEPARADORES.................................................................................................................................... 39
COMENTARIOS ................................................................................................................................... 39
TIPOS DE DATOS EN JAVA .................................................................................................................. 40
Enteros........................................................................................................................................... 40
Coma flotante................................................................................................................................. 41
Booleanos ...................................................................................................................................... 41
Carácter......................................................................................................................................... 41
Cadenas ......................................................................................................................................... 41
Arrays ............................................................................................................................................ 42
EMPAQUETAR TIPOS PRIMITIVOS ....................................................................................................... 43
CONVERSIÓN DE TIPOS DE DATOS ...................................................................................................... 44
BLOQUES Y ÁMBITOS ......................................................................................................................... 45
Bloques .......................................................................................................................................... 45
Ámbitos .......................................................................................................................................... 46
EXPRESIONES ..................................................................................................................................... 46
CLASIFICACIÓN DE OPERADORES ...................................................................................................... 48
Aritméticos..................................................................................................................................... 48
Operadores sobre enteros........................................................................................................... 48
Operadores sobre reales............................................................................................................. 50
Booleanos ...................................................................................................................................... 50
Relacionales................................................................................................................................... 51
Cadena........................................................................................................................................... 51
Asignación ..................................................................................................................................... 52
PRECEDENCIA DE LOS OPERADORES .................................................................................................. 52
CONTROL DE FLUJO............................................................................................................................ 53
If-else ............................................................................................................................................. 53
Switch............................................................................................................................................. 54
For ................................................................................................................................................. 55
While.............................................................................................................................................. 56
Do-while: ....................................................................................................................................... 57
Break, continue y etiquetas............................................................................................................ 57
Return ............................................................................................................................................ 59
Try, catch, finally y throws: ........................................................................................................... 59
POO EN JAVA: OBJETOS................................................................................................................ 61
INTRODUCCIÓN .................................................................................................................................. 61
OBJETOS ............................................................................................................................................. 61
CREACIÓN DE OBJETOS ...................................................................................................................... 62
Declaración ................................................................................................................................... 62
Instanciación.................................................................................................................................. 63
Inicialización ................................................................................................................................. 64
UTILIZACIÓN DE OBJETOS .................................................................................................................. 64
7. DESTRUCCIÓN DE OBJETOS ................................................................................................................ 66
POO EN JAVA: CLASES................................................................................................................... 69
CLASES............................................................................................................................................... 69
DECLARACIÓN DE LA CLASE .............................................................................................................. 70
Superclase de la clase.................................................................................................................... 70
Interfaces de la clase ..................................................................................................................... 70
Modificadores de la clase.............................................................................................................. 71
CUERPO DE LA CLASE. DECLARACIÓN DE ATRIBUTOS ...................................................................... 72
Modificadores ................................................................................................................................ 72
Tipo................................................................................................................................................ 74
Nombre variable ............................................................................................................................ 75
CUERPO DE LA CLASE. IMPLEMENTACIÓN DE MÉTODOS ................................................................... 75
Declaración del método................................................................................................................. 75
Declaración de variables............................................................................................................... 80
Implementación del método........................................................................................................... 80
HERENCIA .......................................................................................................................................... 82
Sustituir la implementación de un método..................................................................................... 84
Ampliar la implementación de un método ..................................................................................... 85
Métodos que una clase heredada no puede redefinir .................................................................... 85
Métodos que una clase heredada tiene que redefinir .................................................................... 86
CLASES ABSTRACTAS......................................................................................................................... 86
POO EN JAVA: OTROS CONCEPTOS .......................................................................................... 89
INTRODUCCIÓN .................................................................................................................................. 89
INTERFACES ....................................................................................................................................... 89
Declaración del interfaz ................................................................................................................ 90
Cuerpo del interfaz ........................................................................................................................ 90
EXCEPCIONES..................................................................................................................................... 91
PAQUETES .......................................................................................................................................... 94
PRINCIPALES PAQUETES DEL LENGUAJE JAVA................................................................................... 98
LA CLASE OBJECT ............................................................................................................................ 100
POO EN JAVA: UN EJEMPLO. RESUMEN DE CONCEPTOS................................................ 103
INTRODUCCIÓN ................................................................................................................................ 103
DESCRIPCIÓN DEL PROBLEMA.......................................................................................................... 103
UTILIZANDO EL JDK 1.3.................................................................................................................. 104
CREANDO LAS CLASES ..................................................................................................................... 105
APLICACIONES JAVA ................................................................................................................... 111
INTRODUCCIÓN ................................................................................................................................ 111
INTRODUCCIÓN A VISUAL J++ 6...................................................................................................... 112
INTRODUCCIÓN A JBUILDER 3.5 ...................................................................................................... 117
EL MÉTODO MAIN().......................................................................................................................... 122
LA CLASE SYSTEM ........................................................................................................................... 125
LA CLASE RUNTIME ......................................................................................................................... 128
ALGUNAS CONSIDERACIONES SOBRE VISUAL J++ 6 ....................................................................... 130
CONSIDERACIONES SOBRE JBUILDER .............................................................................................. 135
INTERFACES DE USUARIO EN JAVA: COMPONENTES AWT ........................................... 145
INTRODUCCIÓN ................................................................................................................................ 145
EL AWT (ABSTRACT WINDOW TOOLKIT) ...................................................................................... 145
UTILIZANDO LOS COMPONENTES DEL AWT.................................................................................... 148
Frame........................................................................................................................................... 148
Cursor.......................................................................................................................................... 149
7
8. MenuBar ...................................................................................................................................... 150
Menu ............................................................................................................................................ 150
MenuItem ..................................................................................................................................... 150
CheckboxMenuItem ..................................................................................................................... 150
Dialog .......................................................................................................................................... 152
FileDialog.................................................................................................................................... 153
Container ..................................................................................................................................... 153
Button........................................................................................................................................... 154
Label ............................................................................................................................................ 156
List, Choice .................................................................................................................................. 157
TextField, TextArea ..................................................................................................................... 158
Checkbox, CheckboxGroup ......................................................................................................... 160
ScrollPane.................................................................................................................................... 162
INTERFACES DE USUARIO EN JAVA: GESTORES DE DISEÑO Y EVENTOS................. 165
INTRODUCCIÓN ................................................................................................................................ 165
GESTORES DE DISEÑO ...................................................................................................................... 165
FlowLayout .................................................................................................................................. 167
BorderLayout............................................................................................................................... 167
CardLayout .................................................................................................................................. 168
GridLayout................................................................................................................................... 170
GridBagLayout ............................................................................................................................ 171
TRATAMIENTO DE EVENTOS EN JAVA .............................................................................................. 173
INTERFACES DE USUARIO EN JAVA: COMPONENTES SWING / CONTENEDORES... 189
INTRODUCCIÓN ................................................................................................................................ 189
JFC Y SWING ................................................................................................................................... 190
COMPONENTES SWING FRENTE A COMPONENTES AWT.................................................................. 191
CONTENEDORES DE ALTO NIVEL...................................................................................................... 192
JFrame......................................................................................................................................... 197
JDialog, JOptionPane ................................................................................................................. 199
JApplet ......................................................................................................................................... 208
CONTENEDORES INTERMEDIOS ........................................................................................................ 208
JPanel .......................................................................................................................................... 209
JTabbedPane ............................................................................................................................... 212
JToolBar ...................................................................................................................................... 216
JLayeredPane .............................................................................................................................. 217
INTERFACES DE USUARIO EN JAVA: COMPONENTES ATÓMICOS DE SWING ......... 223
INTRODUCCIÓN ................................................................................................................................ 223
COMPONENTES ATÓMICOS ............................................................................................................... 223
COMPONENTES PARA OBTENER INFORMACIÓN ............................................................................... 225
JButton......................................................................................................................................... 225
JCheckbox.................................................................................................................................... 227
JRadioButton ............................................................................................................................... 229
JComboBox.................................................................................................................................. 231
JMenu .......................................................................................................................................... 233
JSlider.......................................................................................................................................... 238
COMPONENTES PARA MOSTRAR INFORMACIÓN ............................................................................... 242
JLabel .......................................................................................................................................... 242
JToolTip....................................................................................................................................... 245
JProgressBar ............................................................................................................................... 245
COMPONENTES QUE MUESTRAN INFORMACIÓN ESTRUCTURADA.................................................... 247
JColorChooser............................................................................................................................. 247
JFileChooser................................................................................................................................ 252
9. INTERFACES DE USUARIO EN JAVA: OTRAS CARACTERÍSTICAS DE SWING........... 257
INTRODUCCIÓN ................................................................................................................................ 257
EL GESTOR DE DISEÑO BOXLAYOUT ............................................................................................... 257
ESTABLECIENDO EL LOOK & FEEL .................................................................................................. 262
APPLETS DE JAVA: INTRODUCCIÓN A LOS APPLETS....................................................... 269
CONCEPTOS PREVIOS ....................................................................................................................... 269
Internet......................................................................................................................................... 269
URLs y direcciones IP ................................................................................................................. 270
Clientes y Servidores Web ........................................................................................................... 271
HTML........................................................................................................................................... 272
HTTP ........................................................................................................................................... 272
INTRODUCCIÓN A LOS APPLETS DE JAVA ......................................................................................... 272
EL CICLO DE VIDA DE LOS APPLETS ................................................................................................. 282
SEGURIDAD EN LOS APPLETS ........................................................................................................... 285
TRUSTED/UNTRUSTED APPLETS ...................................................................................................... 289
DIFERENCIAS ENTRE APPLETS Y APLICACIONES .............................................................................. 289
LA ETIQUETA APPLET ....................................................................................................................... 290
Codebase ..................................................................................................................................... 291
Code............................................................................................................................................. 291
Alt................................................................................................................................................. 291
Name............................................................................................................................................ 291
Width, Height............................................................................................................................... 291
Align............................................................................................................................................. 291
Vspace, Hspace............................................................................................................................ 292
<PARAM>................................................................................................................................... 292
Etiquetas HTML alternativas ...................................................................................................... 292
APPLETS DE JAVA: UTILIZANDO LOS APPLETS ................................................................. 293
INTERACCIÓN DE LOS APPLETS CON EL NAVEGADOR WEB .............................................................. 293
EVENTOS, GRÁFICOS Y FUENTES EN LOS APPLETS ........................................................................... 303
COMPRESIÓN DE APPLETS ................................................................................................................ 322
COMPONENTES SWING Y APPLETS ................................................................................................... 325
LA CLASE JAPPLET .......................................................................................................................... 327
ASPECTOS AVANZADOS DE JAVA: PROCESOS.................................................................... 331
INTRODUCCIÓN ................................................................................................................................ 331
PROCESOS Y MULTIPROCESO ........................................................................................................... 331
HOLA MUNDO CON HILOS ................................................................................................................ 332
PARALELISMO .................................................................................................................................. 333
UTILIZANDO PROCESOS. EL INTERFAZ RUNNABLE .......................................................................... 337
COORDINANDO LOS PROCESOS ........................................................................................................ 344
Sin derecho preferente................................................................................................................. 344
Con derecho preferente ............................................................................................................... 344
ASPECTOS AVANZADOS DE JAVA: CANALES Y SOCKETS............................................... 345
INTRODUCCIÓN A LOS CANALES ...................................................................................................... 345
CANALES ESTÁNDAR DE ENTRADA/SALIDA ..................................................................................... 346
CANALES DE JAVA.IO ....................................................................................................................... 348
CANALES DE TRANSMISIÓN (DATA SINK STREAMS) .......................................................................... 350
CANALES DE PROCESO (PROCESSING STREAMS)............................................................................... 352
Canales de Filtrado ..................................................................................................................... 353
Canales de buffer......................................................................................................................... 353
Canal de Concatenación.............................................................................................................. 354
Canales de conversión de tipos ................................................................................................... 354
9
10. Serialización de Objetos .............................................................................................................. 356
Canal Contador de Líneas........................................................................................................... 357
Canales de impresión .................................................................................................................. 358
Canales de vuelta atrás ............................................................................................................... 359
APLICACIONES CLIENTE/SERVIDOR EN JAVA ................................................................................... 359
11. Introducción a la POO
¿Qué es la POO?
Las siglas POO se corresponden con Programación Orientada a Objetos, aunque muchas veces las
podemos encontrar escritas en inglés OOP (Object Oriented Programming).
En este primer capítulo de este curso vamos a tratar de explicar de forma sencilla los principales
conceptos y términos que se utilizan dentro de este tipo de programación, es decir, dentro de la
Programación Orientada a Objetos. No vamos a entrar en sesudas divagaciones filosóficas respecto a
la POO, sino que vamos a definir lo más claramente posible cada uno de los elementos clave que
aparecen en la POO para después poder aplicarlos al lenguaje que nos ocupa, es decir, al lenguaje
Java.
Este tema es muy necesario debido a que el lenguaje Java, como veremos en el siguiente capítulo, es
un lenguaje que se basa en la Programación Orientada a Objetos, por lo tanto para conocer el lenguaje
Java, es necesario conocer la Programación Orientada a Objetos.
La Programación Orientada a Objetos trata de utilizar una visión real del mundo dentro de nuestros
programas. La visión que se tiene del mundo dentro de la POO es que se encuentra formado por
objetos.
Para comprender bien la POO debemos olvidar un poco la Programación Estructurada, que si nos
fijamos bien es algo artificial, la POO es una forma de abordar los problemas más natural. Aquí
natural significa más en contacto con el mundo real que nos rodea, de esta forma si queremos resolver
un problema determinado, debemos identificar cada una de las partes del problema con objetos
presentes en el mundo real.