You are on page 1of 12

2

2   ´ Esta obra de Oscar Belmonte et al. est´a bajo una licencia Creative
 

´

Esta

obra

de

Oscar

Belmonte

et

al.

est´a

bajo

una

licencia

Creative

Commons

Reconocimiento-NoComercial-CompartirIgual

3.0

Unported

´

Indice general

1. Introducci´on

13

1.1. Origen del lenguaje de programaci´on Java

.

.

.

.

.

.

.

.

.

.

.

.

.

13

1.2. Caracter´ıstica de Java

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

1.3. El entorno de desarrollo integrado Eclipse

.

.

.

.

.

.

.

.

.

.

.

.

.

15

1.3.1. Principales caracter´ısticas del entorno de desarrollo Eclipse 16

1.3.2. Descarga e instalaci´on de Eclipse

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

1.3.3. Configurando el aspecto de Eclipse: Perspectivas y Vistas

16

1.3.4. El primer ejemplo

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

1.4. Herramientas de desarrollo

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

1.4.1.

nadiendo nueva funcionalidad a Eclipse: los plug-ins

.

.

22

2. Clases

23

2.1. Definici´on de una clase

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

2.2. Miembros de una clase .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

2.2.1. Atributos de una clase

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

2.2.2. M´etodos de una clase.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

2.2.3. Constructores.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

2.2.4. Sobrecarga de m´etodos y constructores .

.

.

.

.

.

.

.

.

.

.

32

2.3. Tipos de datos en Java.

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

33

2.3.1.

Arrays de datos en

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

2.4. Estructuras de

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

36

2.4.1. Estructuras de control de repetici´on.

.

.

.

.

.

.

.

.

.

.

.

.

37

2.4.2. Estructuras de control de

 

.

.

.

.

.

.

.

.

.

.

.

.

39

2.5. Modificadores de

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

40

2.6. Modificadores static y final.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

2.7. El recolector de basura.

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

2.8. Finalizaci´on.

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

44

2.9. Comentarios. Comentarios de

 

.

.

.

.

.

.

.

.

.

.

45

3. Herencia e Interfaces

 

51

3.1. Herencia.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

52

3.2. Extensi´on de una clase.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

52

3.2.1. Sobrescribir atributos.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

54

3.2.2. Sobrescribir m´etodos.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

3.2.3. La palabra reservada

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

59

3.2.4. El constructor por defecto y la clase Object.

.

.

.

.

.

.

.

59

3.2.5. El operador instanceof.

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

60

3.2.6. El modificador final.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

61

3

 

´

4

INDICE GENERAL

 

3.2.7.

M´etodos static.

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

62

 

3.3.

Clases

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

63

3.4.

Interfaces.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

3.5. Enumeraciones.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

68

3.6. Paquetes en

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

69

3.7. Clases e interface anidados

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

71

4.

Subversion

 

75

4.1. ¿Qu´e es un sistema de control de versiones?

 

.

.

.

.

.

.

.

.

.

.

.

.

76

4.2. Principales caracter´ısticas de Subversion

.

.

.

.

.

.

.

.

.

.

.

.

.

.

76

4.3. Creaci´on de un repositorio .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

77

4.4. Trabajo con repositorios

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

78

 

4.4.1.

Obteniendo informaci´on del repositorio

.

.

.

.

.

.

.

.

.

.

82

 

4.5. Integraci´on con Eclipse .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

84

5.

Excepciones

 

87

5.1. ¿Qu´e es una excepci´on?

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

87

 

5.1.1.

Tipos de excepciones .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

88

 

5.2. C´omo se gestiona una excepci´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

88

5.3. Creaci´on de excepciones propias .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

91

6.

Pruebas unitarias con JUnit

 

93

6.1. ¿Qu´e son las pruebas unitarias?

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

94

 

6.1.1.

Principios FIRST para el dise˜no de pruebas unitarias

.

.

94

 

6.2. Pruebas unitarias con JUnit .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

95

 

6.2.1. Creaci´on de clases de prueba

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

95

6.2.2. La anotaci´on @Test

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

96

6.2.3. Las anotaciones @Before y @After

.

.

.

.

.

.

.

.

.

.

.

.

.

98

6.2.4. Las anotaciones @BeforeClass y @AfterClass

.

.

.

.

.

.

99

6.2.5. Pruebas con bater´ıa de datos de entrada .

 

.

.

.

.

.

.

.

.

.

100

6.2.6. Ejecutar varias clases de prueba. Test Suites

.

.

.

.

.

.

.

101

 

6.3. Cobertura de las pruebas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

102

 

6.3.1.

EclEmma y su plug-in para Eclipse

 

.

.

.

.

.

.

.

.

.

.

.

103

7.

Entrada y Salida

 

105

7.1. Flujos (Streams)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

106

7.2. Flujos de bytes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

107

7.3. Flujos de caracteres

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

108

7.4. Conexi´on entre flujos de bytes y de caracteres .

.

.

.

.

.

.

.

.

.

.

109

7.5. El sistema de ficheros y flujos a ficheros

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

110

 

7.5.1. El sistema de ficheros

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

110

7.5.2. Flujos a ficheros

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

110

 

7.6. Serializaci´on

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

112

8.

Algunas clases de utilidad del paquete est´andar

 

117

8.1. La clase Scanner

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

118

8.2. Trabajo con cadenas de caracteres

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

120

 

8.2.1. La clase String

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

120

8.2.2. Las clases StringBuffer y StringBuilder

.

.

.

.

.

.

.

.

121

 

8.3. Clases recubridoras

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

122

´

INDICE GENERAL

5

8.4. Colecciones

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

124

8.5. Trabajo con fechas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

128

8.5.1. La clase Date

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

128

8.5.2. Las clases Calendar y GregorianCalendar

.

.

.

.

.

.

.

.

129

8.6. Matem´aticas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

129

8.6.1. La clase Math

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

129

8.6.2. La clase Random

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

130

9. Programaci´on con gen´ericos

 

133

9.1. ¿Qu´e son los tipos de datos gen´ericos?

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

133

9.2. M´etodos gen´ericos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

134

9.3. Clases gen´ericas .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

135

9.4. Ampliaci´on del tipo gen´erico

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

138

9.4.1. Tipos gen´ericos con l´ımite superior

.

.

.

.

.

.

.

.

.

.

.

.

.

139

9.4.2. Comodines

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

139

9.5. Borrado de tipo y compatibilidad con c´odigo heredado

 

141

10.Construcci´on de proyectos con Ant

 

143

Qu´e es Ant

10.1. .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

144

10.2. Definici´on del proyecto .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

144

10.2.1. Objetivos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

145

Tareas .

10.2.2. .

.

.

.

.

.

.