CURSO DE
Febrero 2003
JAVA
Profesores: Albert Llastarri Rezola Roberto Ramírez Vique Autor: Iván Párraga García
Prólogo
Java
1 PRÓLOGO Hola a todos, ante todo quisiera agradecer a Albert Llastarri su inestimable ayuda a la hora de realizar este manual de Java (especialmente en la parte de Swing) así como a los antiguos profesores del curso de los cuales he heredado algunos ejercicios y parte de la estructura del mismo y finalmente a todos los alumnos que han ido pasando por el curso y que gracias a sus comentarios han contribuido a mejorar esta documentación. En esta tercera edición se han añadido nuevos componentes gráficos en el desarrollo de GUI’s y se han revisado, corregido y aumentado todos los capítulos. A pesar de que he corregido todos los errores tipográficos y de contenido que se han ido localizando a lo largo de ya 3 cursos con este manual, el hecho de que soy humano y de que se van añadiendo cada cuatrimestre nuevos contenidos lo hace susceptible de contener errores. Se agradecerá que se notifiquen los mismos (abajo encontráis mi e-mail) para erradicarlos de próximas ediciones.. Todos los ejercicios del curso han sido desarrollados y comprobados por mí y al finalizar el curso se os entregará un CD-ROM con todo el material; además a lo largo del curso se irán colgando versiones correctas de los programas que vayamos haciendo. He tratado de ilustrar todo el manual con ejemplos, gráficos y tablas. Al final del mismo he incorporado índices para acceder rápidamente a estos materiales así como un apéndice con direcciones web interesantes. Al desarrollar el manual he tenido en cuenta las siguientes convenciones: el texto con este formato es código este texto es intérprete de comandos
Ejercicio este texto es un ejercicio
Bueno, pues por el momento esto es todo. Espero sinceramente que el curso os sea provechoso y siempre que tengáis cualquier tipo de duda no dudéis en preguntar. Para cualquier comentario no dudéis en mandarme un e-mail a
[email protected].
El Autor Iván Párraga García
Primera Edición, Febrero 2002 Segunda Edición, Junio 2002 Tercera Edición, Enero 2003
-1-
Índice
Java
2 ÍNDICE 1
Prólogo ...................................................................................................................... 1
2
Índice ........................................................................................................................ 2
3
Introducción.............................................................................................................. 6
4
3.1
Breve historia de Java ....................................................................................... 6
3.2
¿Qué es Java?.................................................................................................... 8
J2SDK, El entorno de programación...................................................................... 11 4.1
Instalación....................................................................................................... 12
4.2 ¿Qué aplicaciones hay en el J2SDK? ............................................................. 13 4.2.1 Compilación: javac ................................................................................. 14 4.2.2 Ejecución de aplicaciones: java .............................................................. 15 4.2.3 Ejecución de applets: appletviewer ........................................................ 16 4.2.4 Corrección de errores: el debugger jdb................................................... 16 5
Estructuras básicas de programación...................................................................... 17 5.1
Comentarios .................................................................................................... 17
5.2
Identificadores ................................................................................................ 18
5.3
Palabras reservadas ......................................................................................... 18
5.4 Tipos de datos primitivos................................................................................ 18 5.4.1 Enteros .................................................................................................... 18 5.4.2 Tipos en coma flotante............................................................................ 19 5.4.3 Caracteres: char ...................................................................................... 19 5.4.4 Booleanos: boolean................................................................................. 20 5.5
Declaraciones de variables ............................................................................. 20
5.6
Constantes ....................................................................................................... 20
5.7
Asignaciones ................................................................................................... 21
5.8
Strings ............................................................................................................. 21
5.9
Arrays ............................................................................................................. 22
5.10
Operadores ...................................................................................................... 23
5.11 Estructuras de control de flujo ........................................................................ 24 5.11.1 Condicionales ......................................................................................... 24 5.11.2 Bucles ..................................................................................................... 25 5.12 Aserciones....................................................................................................... 26 5.12.1 Invariantes internos................................................................................. 27 5.12.2 Invariantes de control de flujo ................................................................ 28 5.12.3 Precondiciones, postcondiciones e invariantes de clase ......................... 29 5.13 6
El método main ............................................................................................... 29
Programación orientada a objetos........................................................................... 33
-2-
Índice
Java
6.1
Conceptos ....................................................................................................... 33
6.2 Uso de clases ya existentes ............................................................................. 35 6.2.1 La API de Java ........................................................................................ 35 6.2.2 Declaración de variables e instanciación de objetos............................... 37 6.2.3 Invocación de métodos y acceso a atributos ........................................... 37 6.3 Creación de nuestras propias clases................................................................ 38 6.3.1 Cuerpo de la clase ................................................................................... 38 6.3.2 Constructores .......................................................................................... 40 6.3.3 Acceso a los miembros del propio objeto ............................................... 40 6.3.4 Visibilidad public y private .................................................................... 40 6.3.5 Paso de parámetros ................................................................................. 41 6.3.6 Asignaciones, copias y comparaciones................................................... 42 6.3.7 Destruir objetos....................................................................................... 43 6.3.8 Miembros de clase .................................................................................. 43 6.4 Herencia .......................................................................................................... 45 6.4.1 Conceptos y terminología ....................................................................... 45 6.4.2 Sobrescribir métodos .............................................................................. 46 6.4.3 La herencia como especialización .......................................................... 47 6.4.4 Visibilidad protected............................................................................... 48 6.4.5 Polimorfismo y dynamic binding ........................................................... 48 6.4.6 Casting de objetos ................................................................................... 49 6.4.7 La clase Object ....................................................................................... 50 6.4.8 Clases abstractas ..................................................................................... 51 6.4.9 Interfaces................................................................................................. 52 6.4.10 Simulando la genericidad mediante herencia ......................................... 55 6.4.11 Agrupación de clases .............................................................................. 58 7
Excepciones ............................................................................................................ 61 7.1 Introducción.................................................................................................... 61 7.1.1 ¿Que es una excepción? .......................................................................... 61 7.1.2 ¿Qué es un error? .................................................................................... 61 7.1.3 Primer ejemplo ........................................................................................ 61 7.2 Manejo de excepciones ................................................................................... 62 7.2.1 Sentencias try y catch ............................................................................. 62 7.2.2 Sentencia finally ..................................................................................... 63 7.2.3 El mecanismo de pila de llamadas .......................................................... 64 7.2.4 Categorías de excepciones ...................................................................... 65 7.2.5 Excepciones más frecuentes ................................................................... 66 7.2.6 La regla de "declarar o capturar" ............................................................ 66 7.3 Creación de excepciones de usuario ............................................................... 67 7.3.1 Introducción............................................................................................ 67 7.3.1.1 Ejemplo ............................................................................................... 68
8
Programación gráfica. El entorno Swing................................................................ 70 8.1
Primer ejemplo ................................................................................................ 70
8.2 Modo gráfico .................................................................................................. 71 8.2.1 Texto y fuentes ....................................................................................... 71 8.2.2 Líneas...................................................................................................... 73
-3-
Índice
8.2.3 8.2.4 8.2.5 8.2.6 8.2.7 8.2.8
Java
Rectángulos............................................................................................. 73 Polígonos ................................................................................................ 73 Óvalos ..................................................................................................... 74 Arcos ....................................................................................................... 74 Colores .................................................................................................... 75 Un ejemplo completo.............................................................................. 75
8.3 Swing .............................................................................................................. 77 8.3.1 Jerarquía de Swing.................................................................................. 77 8.3.2 Índice visual............................................................................................ 78 8.3.2.1 Contenedores de alto nivel en la jerarquía.......................................... 78 8.3.2.2 Contenedores de propósito general..................................................... 78 8.3.2.3 Contenedores de propósito especial.................................................... 79 8.3.2.4 Controles básicos ................................................................................ 79 8.3.2.5 Pantallas no editables.......................................................................... 80 8.3.2.6 Pantallas editables o información formateada .................................... 80 8.3.3 Un ejemplo ilustrativo ............................................................................ 80 8.3.4 Layouts ................................................................................................... 81 8.3.4.1 FlowLayout ......................................................................................... 82 8.3.4.2 BorderLayout ...................................................................................... 82 8.3.4.3 CardLayout ......................................................................................... 83 8.3.4.4 GridLayout.......................................................................................... 83 8.3.4.5 GridBagLayout ................................................................................... 83 8.3.5 Componentes de Swing .......................................................................... 84 8.3.5.1 JFrame ................................................................................................. 84 8.3.5.2 JPanel.................................................................................................. 84 8.3.5.3 Canvas................................................................................................. 85 8.3.5.4 JButton................................................................................................ 85 8.3.5.5 JLabel.................................................................................................. 85 8.3.5.6 JTextField ........................................................................................... 86 8.3.5.7 JTextArea............................................................................................ 87 8.3.5.8 JCheckBox.......................................................................................... 87 8.3.5.9 JRadioButton y BottonGroup ............................................................. 88 8.3.5.10 JComboBox .................................................................................... 88 8.3.5.11 JList................................................................................................. 89 8.3.5.12 Menús ............................................................................................. 92 8.3.5.13 JDialog............................................................................................ 93 9
Eventos ................................................................................................................... 95 9.1
Conceptos básicos........................................................................................... 95
9.2 Interfaces......................................................................................................... 97 9.2.1 Interfaz ActionListener........................................................................... 97 9.2.2 Interfaz ItemListener .............................................................................. 98 9.2.3 Interfaz WindowListener ........................................................................ 98 9.2.4 Interfaz ComponentListener ................................................................... 99 9.2.5 Interfaz AdjustmentListener ................................................................... 99 9.2.6 Interfaz MouseListener........................................................................... 99 9.2.7 Interfaz MouseMotionListener ............................................................. 100 9.2.8 Interfaz FocusListener .......................................................................... 100 9.2.9 Interfaz KeyListener ............................................................................. 100 9.2.10 Tabla resumen de interfaces ................................................................. 104
-4-
Índice
Java
9.3
Look and Feel ............................................................................................... 105
10
El paradigma modelo-vista-controlador ........................................................... 109 10.1
11
Ejemplo comentado ...................................................................................... 110 Applets .............................................................................................................. 117
11.1
El applet como caso particular de aplicación Swing .................................... 117
11.2
El ciclo de vida de un applet ......................................................................... 118
11.3
Diferencias entre Applet y JApplet .............................................................. 119
11.4
Ejemplo ......................................................................................................... 120
11.5 El tag