. CONSULIORES EDITORIALES AREA DE INFORMATICA Y COMPUIACION Antonio Vaquero Sanchez Catednitico de Lenguajes y Sistemas Informaticcs Escuela Superior de Informatica Universidad Complutense de Madrid ESPANA

Gerardo Quiroz Vieyra Ingeniero en Cornunicaciones y Electr6nica por la ESIME dellnstituto Politecnico Nacional Profesor de la Universidad Autonorna Metropolitana Unidad Xochimilco MEXICO Willy Vega Galvez Universidad Nacional de Ingenierta PERU

PROGRAMACION ORIENT ADA A OBJETOS Luis Joyanes Aguilar Director del Departamento de Lenguajes y Sistemas Informaticos e Ingenierfa de Software F acultad de Informatica Universidad Pontificia de Salamanca Campus Madrid

McGraw-Hill MADRID· BUENOS AIRES' CARACAS· GUATEMALA· LlSBOA· MEXICO NUEVA YORK· PANAMA' SAN JUAN· SANTAFE DE BOGOTA· SANTIAGO· SAO PAULO AUCKLAND· HAMBURGO· LONDRES· MILAN· MONTREAL. NUEVA DELHI· PARIS SAN FRANCISCO· SIDNEY· SINGAPUR • ST LOUIS· TOKIO. TORONTO

._ .... !,.

,--..

~-',.-,... _

i,..I,~f.""~,,~'\" ..

..•" - ~~ ..

~-~;,.,;!

CONTENIDO Prologo

XVll

Parte I EL MUNDO DE LA ORIENTA CION A OBJEfOS: CONCEPTOS, RELACIONES, MODELADO Y LENGUAJES DE PROGRAMACION Capitulo L ] 1.

12 13 PROGRAMACION ORlENIADA A OBJEIOS No esta permitida La reproducci6n total 0 parcial de este libro, ,ni su tr~tamiento inforrnatico ni la transmisi6n de ninguna forma 0 por cualquier medic, ya sea electr6nico: mecanico, por fotocopia, por registro u otros metodos, sin el permiso previo y por escrito de los titulares del Copyright

1.4 1 5.

DERECHOS RESERVADOS ©1996, respecto ala primera edici6n en espaiiol, por McGRAW-HILL;iNTERAMERICANA DE ESPA'N"A, S A

16. 17

Edificio Valrealty, 1 a planta Basauri, 17 28023 Aravaca (Madrid) ISBN: 84-481-0590-7 Deposito legal: M 30121-1996 Editor: Jose Dominguez Alconchel Disefio de cubierta: Juan Garcia Compuesto e impreso en Fernandez Ciudad, S L IMPRESO

EN ESPANA - PRINTED

IN SPAIN

18 1. 9.

EI desarrollo de software

La compJejidad inherente al software 1 lILa complejidad del dominic del problema . ,, 1.1.2. La dificultad de gestionar el proceso de desarrollo 1 1 3 La flexibilidad a traves del software La crisis del software ... ,. . . Factores en la calidad del software. 131 Razones fundamentales que estan influyendo en la importancia de la POO _ '" . ,. . Programaci6n y abstraccion EI papel (el rol) de la abstracci6n 1.5..1. La abstracci6n como proceso natural mental 1. 5. 2 Historia de la abstraccion del software 153 Procedimientos 1.5.4. M6dulos",.. 1 5 5, Tipos abstractos de datos 1.5 6 Objetos Un nuevo paradigma de programacion Orientaci6n a objetos 1 7 1. Abstraccion . 1.7.2. Encapsulacion 1 73 Modularidad 1'74. Jerarquia.. 1.75 Polimorfismo 176 Otras propiedades Reutilizaci6n de software , .. , Lenguajes de programacion orientados a objetos 1 9 1 Clasificaci6n de los lenguajes orientados a objetos

3 4 4 4 5

5 7 9 9 10 10 11 12 13

J3 14 l5 16 17 18 18 18 19 20 21 22 23

v

Contenido

vi

vii

Contenido

1 10 Desarrollo tradicional frente a orientad'(TaO)bjetos 1.11 Beneficios de las tecnologfas de objetos Resumen

Capitulo 2,

Modularidad: tipos abstractos de datos

Moduladdad 21 I La estructura de un modulo, 2.12 Reglas de modularizacion Diseno de modules 22 2,21 Acoplamiento de modules 2.22 Cohesion de modules . 2,3. Tipos de datos .' ., Abstraccion en Jenguajes de programacion 24 24 1 Abstracciones de control 2.4 2 Abstraccion de datos ' "" , 2,5 Tipos abstractos de. datos 2,5 1 Ventajas de los tipos abstractos de datos, 2.52 Implementacion de los TAD .. , ' Tipos abstractcs de datos en Turbo Pascal ' ... .26 2.6 1 Aplicacion del tipo abstracto de dato Pila Tipos abstractos de datos en Modula-2 ' 27 27 1. Modules 272 Modules locales 2 7 3 Tipos opacos 274. Tipos transparentes .. ' . ..' . . .. .. .. ..... ., " 27.5 Una version del tipo abstracto de dato Pila con datos opacos 2.76 Otra aplicacioii del TAD Pila 28. Tipos abstractos de datos en Ada 28,1 Tipos privados 2.82 Tipos privados limitados , Tipos abstractos de datos en C .. .. .. .' . . . 29 2.9 1. Un ejemplo de Ull tipo abstracto de datos en C .. 210 Tipos abstractos de datos en c++ 2,101 Definicion de una clase Pila en c++ Resumen Ejercicios

21

C apltt uI0 3, ' Conceptos fundamentales de programacion orientada a objetos 31 32

33

34

Programacion estructurada " :. " '. 3 1.1. Desventajas de la programacion estructmada l.Que es la programacion orientada a objetos? 321 EI objeto 3 22, Ejemplos de objetos .' 3.2,3. Metodos y mensajes Clases , .' 3 3 1. Implementacion de clases en lenguajes . 3,,32 Sintaxis Un mundo de objetos

25 27 29

30 31 31 32 35 35 35 36 38 38 39

40 42 42 43 45 46 46 47 47 48 49 51 53 55 56 57 58 60

61 64 65

66 67 69 69 70 71 73 75 75 76

77

3.4.1. Definicion de objetos 342 Identificacion de objetos 34.3 Duracion de los objetos .. 14.4. Objetos frente aclases Representacion 3 4 5 Datos internos 3.4.6 Ocultacion de datos 3..5 Herencia 3 5 1 Sintaxis 3.52. Tipos de herencia .. 36. Comunicaciones entre objetos: los mensajes . 3 6 1 Activacion de objetos 16.2. Mensajes 16,3. Paso de mensajes 37 Estructura inter na de un objeto . 17.1. Atributos 3.7,2. Metodos Clases ., 38 3,8.1. Una comparacion con tablas de datos 3.9 Herencia y tipos . 391 Herencia simple iherencia jel'ul'quica) 19,2. Herencia multiple therencia ell malla) 3.9 3 Clases abstr aetas 310 Anulacion/Sustitucion 3 11. Sobrecarga ., 312 Ligadura dinamica 3 121 Funciones 0 metodos virtuales 3.122 Polimorfismo 313 Objetos compuestos. 3 13 1 Un ejemplo de objetos compuestos. 313.2 Niveles de proiundidad 3.14 Reutilizaci6n con orientaci6n a objetos . 3 14.1 Objetos y reutilizacion 315. Polimorfismo Resumen

Capitulo 4.. Lenguajes de programacion 4.]

4.2.

43.

78 78 grafica (Notacion

de Ege)

orientados a objetos ..

Evoluci6n de los LPOOS 4 11 Estado actual de los Jenguajes orientados a objetos en la decada de los noventa Clasificacion de lenguajes orientados a objetos .... 421 Taxonomia de lenguajes orientados a objetos 422 Caractensticas de los Ienguajes orientados a objetos 4.2.3 PUlOS frente a hibridos , 4 2 4 Tipificacion estatica frente a dinamica 42.5 Ligadura estatica frente a dinamica 4.2.6. Revision de lenguajes orientados a objetos Ada ' 43 1. Abstracci6n de datos en Ada. 4.3.2 Genericidad en Ada. 4,33 Soporte de herencia en Ada-83 4.3 4. Soporte Ada para orientaci6n a objetos

80 80 83 84 84

86 87 89

90 90 92

92 93 93 94 95 96

98 98

100 ]01

102 104 104 105

105 107 107

109

110 110 111

113 114

117 118 119 120

121 122 124 125 126 126 127 128 128

viii

Contenido

Contenido

4 4 1 La biblioteca de clases Eiffel 4.4.2. EI entorno de programacion Eiffel . 4.4.3. EI Jenguaje Eiffel 4 5. Small talk . . . .. . . 451 El lenguaje Smalltalk ..... .... 4.5.2 La jerarquia de clases Smalltalk . 4.6 OtTOS lenguajes de programacion orientados a objetos . Resumen Ejercicios

129 130 130 131 132 133 134 134 135 136

Capitulo 5.

137

44

Eiffel

Modelado de objetos: relaciones

51

Relaciones entre clases. . Relaci6n de generalizacionjespecializacion (is-ales-un) 5.2.1 Ierarqufas de generalizaci6njespecializaci6n 53 Relaci6n de agregacion (has-altiene-un) ... 5 3.1 Agregacion frente a generalizacion 54. Relacion de asociaci6n 5.41. OtIOS ejemplos de cardinalidad .. 5.5 Herencia: jerarquia de c1ases 5.5.1 Herencia simple . 5 52 Herencia multiple . 5.521 Ventajas de la herencia multiple. 5 5 2 2 Inconvenientes de la herencia multiple. 5 5 2 3 Disefio de clases con herencia multiple. 56 Herencia repetida Resumen

52

Bjercicios

138 141 143

145 146

149 150 151

152 155 155 156 157 160 160

Parte II

Abstraccion de la generalizacion y especializacion Clases abstractas 73 Herencia en C++: clases derivadas 7.3. L Sin taxis de la herencia simple 73.2. Sintaxis de la herencia multiple 7.33. Ambiguedad y resoluci6n de ambito 7.4. Herencia repetida y clases base virtuales 7.5 Funciones virtuales puras 7.51. Otro ejemplo de clase abstracta 76 Diseno de clases abstractas . 77 Una aplicacion practica: jerarqufa de figuras 7 7. 1. La clase F iqur a Resumen Ejercicios 71 7.2

de clases

230 232 233 233 237 240 242 243 247 247 251 251 252 252

Ligadura 8.1.1. Ligadura en C++ 82 Funciones virtuales .. .. 82.1 Ligadura dinamica mediante funcionesvirtuales . 8.3. Polimorfismo .. 83 1 EI polimorfismo sin ligaduradinamica 8.3 2 El polirnorfismo con ligadura dinamica 84 Uso del polirnorfismo . 84.1 Uso del polirnorfiosmoen C++ .. 8 5 Ligadura dinamica frente a ligadura estatica 8.6. Ventajas del polimorfismo Resumen Ejercicios

256 256 257 258 260

Capitulo 9.. Genericidad: plantillas (templates)

268

184

91

184

92

269 270

168 169 170

65 66

229

81

6. L Clases

6.4

Clases abstractas y herencia

Capitulo 7.

255

167

63.

185 188 190 192 193 201 204 207 208 213 216 221 222 223

Capitulo 8.. Polimorfismo

Capitulo 6.. Clases y objetos en C++ y objetos Objetos 6.2..1 Identificaci6n de objetos Clases Creaci6n de clases . Diagramas de clases y objetos . Construcci6n de clases en c++ 6 6 1 Declaracion de clases 6.6.2. Definicion de una clase . 6.63 Constructores y destructores 6. 64 Usal las clases . 665 Especificaci6njimplementaci6n de clases 666 Compilaci6n separada de c1ases 6. 6. 7 Reutilizaci6n de clases . 6. 6 8 Estilos de declaracion de clases

Disefios practices de clases 6.71 Clases Reloj y Presentar 68 Tecnicasde creaci6n e inicializaci6n de objetos . 6.8.1. Objetos dinamicos new y delete . 69. Inicializacion y limpieza de objetos . 69 1 Uso de una clase . 610 Reglas practicas para construccion de clases 6101 Funciones miembro . 6.102 Una aplicaci6n sencilla 6.10.3. Control de acceso a los miembros de una clase 6.10.4. Creaci6n, inicializacion y destrucci6n de objetos 6 1] El puntero this Resumen Ejercicios

138

PROGRAMACION ORIENTADA A OBJEIOS CON C++

62

6.7.

ix

171 172 173 176

177 179 180 181 181 183

Genericidad : Conceptos fundamentales

de plantillas en C++

261

262 263 263 264 265 265 266

programacion-orientada-a-objetos-luis-joyanes-aguilar ...

Tipos abstractcs de datos en Turbo Pascal ' ... .-. 2.6 1 Aplicacion del tipo abstracto de dato Pila. Tipos abstractos de datos en Modula-2 '. 27 1. Modules.

9MB Sizes 3 Downloads 189 Views

Recommend Documents

No documents