programacion orientada a objetos luis joyanes aguilar

95
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 McGraw-Hill Luis J oyanes Aguilar Director del Departamento de Lenguajes y Sistemas Informaticos e Ingenierfa de Software Facultad de Informatica Universidad Pontificia de Salamanca Campus Madrid ORIENT ADA A OBJETOS Gerardo Quiroz Vieyra Ingeniero en Cornunicaciones y Electr6nica por la ESIME dellnstituto Politecnico Nacional Profesor de la Universidad Autonorna Metropolitana Unidad Xochimilco MEXICO Antonio Vaquero Sanchez Catednitico de Lenguajes y Sistemas Informaticcs Escuela Superior de Informatica Universidad Complutense de Madrid ESPANA . CONSULIORES EDITORIALES AREA DE INFORMATICA Y COMPUIACION PROGRAMACION Willy Vega Galvez Universidad Nacional de Ingenierta PERU

Upload: johe67

Post on 21-Aug-2015

3.535 views

Category:

Education


8 download

TRANSCRIPT

Page 1: Programacion Orientada a Objetos Luis Joyanes Aguilar

MADRID· BUENOS AIRES' CARACAS· GUATEMALA· LlSBOA· MEXICONUEVA YORK· PANAMA' SAN JUAN· SANTAFE DE BOGOTA· SANTIAGO· SAO PAULO

AUCKLAND· HAMBURGO· LONDRES· MILAN· MONTREAL. NUEVA DELHI· PARISSAN FRANCISCO· SIDNEY· SINGAPUR • ST LOUIS· TOKIO. TORONTO

McGraw-Hill

Luis Joyanes AguilarDirector del Departamento de

Lenguajes y Sistemas Informaticos e Ingenierfa de SoftwareFacultad de Informatica

Universidad Pontificia de Salamanca Campus Madrid

ORIENT ADA A OBJETOSGerardo Quiroz VieyraIngeniero en Cornunicaciones y Electr6nicapor la ESIME dellnstituto Politecnico NacionalProfesor de la Universidad Autonorna MetropolitanaUnidad XochimilcoMEXICO

Antonio Vaquero SanchezCatednitico de Lenguajes y Sistemas InformaticcsEscuela Superior de InformaticaUniversidad Complutense de MadridESPANA

. CONSULIORES EDITORIALESAREA DE INFORMATICA Y COMPUIACION

PROGRAMACION

Willy Vega GalvezUniversidad Nacional de IngeniertaPERU

Page 2: Programacion Orientada a Objetos Luis Joyanes Aguilar

vIMPRESO EN ESPANA - PRINTED IN SPAIN

Editor: Jose Dominguez AlconchelDisefio de cubierta: Juan GarciaCompuesto e impreso en Fernandez Ciudad, S L

Edificio Valrealty, 1 a plantaBasauri, 1728023 Aravaca (Madrid)

PROGRAMACION ORlENIADA A OBJEIOS

No esta permitida Lareproducci6n total 0 parcial de este libro, ,ni su tr~tamientoinforrnatico ni la transmisi6n de ninguna forma 0 por cualquier medic, ya seaelectr6nico: mecanico, por fotocopia, por registro u otros metodos, sin el permisoprevio y por escrito de los titulares del Copyright

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

] 1. La compJejidad inherente al software 41 lILa complejidad del dominic del problema . , , 41.1.2. La dificultad de gestionar el proceso de desarrollo 41 1 3 La flexibilidad a traves del software 5

1 2 La crisis del software ... ,. . . 513 Factores en la calidad del software. 7

131 Razones fundamentales que estan influyendo en la importancia dela POO _ '" . ,. . 9

1.4 Programaci6n y abstraccion 91 5. EI papel (el rol) de la abstracci6n 10

1.5..1. La abstracci6n como proceso natural mental 101.5.2 Historia de la abstraccion del software 11153 Procedimientos 121.5.4. M6dulos",.. 131 5 5, Tipos abstractos de datos J31.5 6 Objetos 14

16. Un nuevo paradigma de programacion l517 Orientaci6n a objetos 16

1 7 1. Abstraccion . 171.7.2. Encapsulacion 181 73 Modularidad 181'74. Jerarquia.. 181.75 Polimorfismo 19176 Otras propiedades 20

1 8 Reutilizaci6n de software , .. , 211.9. Lenguajes de programacion orientados a objetos 22

1 9 1 Clasificaci6n de los lenguajes orientados a objetos 23

ISBN: 84-481-0590-7Deposito legal: M 30121-1996

3Capitulo L EI desarrollo de software

Parte IEL MUNDO DE LA ORIENTA CION A OBJEfOS:

CONCEPTOS, RELACIONES, MODELADO Y LENGUAJESDE PROGRAMACION

XVllPrologo

CONTENIDO

!,. i,..I,~f.""~,,~'"\ .. ~-~;,.,;!._ ....,--..~-',.-,..._ ..•" -~~..

Page 3: Programacion Orientada a Objetos Luis Joyanes Aguilar

117118119120121122124125126126127128128

113

114

787880808384848687899090929293939495969898

100]01102104104105105107107109110110111

Capitulo 4.. Lenguajes de programacion orientados a objetos ..

4.] Evoluci6n de los LPOOS4 11 Estado actual de los Jenguajes orientados a objetos en la decada de

los noventa4.2. Clasificacion de lenguajes orientados a objetos ....

421 Taxonomia de lenguajes orientados a objetos422 Caractensticas de los Ienguajes orientados a objetos4.2.3 PUlOS frente a hibridos ,4 2 4 Tipificacion estatica frente a dinamica42.5 Ligadura estatica frente a dinamica4.2.6. Revision de lenguajes orientados a objetos

43. Ada '43 1. Abstracci6n de datos en Ada.4.3.2 Genericidad en Ada.4,33 Soporte de herencia en Ada-834.3 4. Soporte Ada para orientaci6n a objetos

Resumen315.

3.14

313

3103 11.312

3.9

38

37

36.

3.4.1. Definicion de objetos342 Identificacion de objetos34.3 Duracion de los objetos ..14.4. Objetos frente aclases Representacion grafica (Notacion de Ege)3 4 5 Datos internos3.4.6 Ocultacion de datosHerencia3 5 1 Sintaxis3.52. Tipos de herencia ..Comunicaciones entre objetos: los mensajes .3 6 1 Activacion de objetos16.2. Mensajes16,3. Paso de mensajesEstructura inter na de un objeto .17.1. Atributos3.7,2. MetodosClases .,3,8.1. Una comparacion con tablas de datosHerencia y tipos .391 Herencia simple iherencia jel'ul'quica)19,2. Herencia multiple therencia ell malla)3.9 3 Clases abstr aetasAnulacion/SustitucionSobrecarga .,Ligadura dinamica3 121 Funciones 0 metodos virtuales3.122 PolimorfismoObjetos compuestos.3 13 1 Un ejemplo de objetos compuestos.313.2 Niveles de proiundidadReutilizaci6n con orientaci6n a objetos .3 14.1 Objetos y reutilizacionPolimorfismo

3..5

Contenido vii

67696970717375757677

66

31313235353536383839404242434546464747484951535556575860616465

30

252729

34

33

32

Programacion estructurada " : . " ' .3 1.1. Desventajas de la programacion estructmadal.Que es la programacion orientada a objetos?321 EI objeto3 22, Ejemplos de objetos .'3.2,3. Metodos y mensajesClases , .'3 3 1. Implementacion de clases en lenguajes .3,,32 SintaxisUn mundo de objetos

31

C tt I 3 Conceptos fundamentales de programacion orientada a ob­apl u 0 , 'jetos

210

29

28.

27

26

2,5

2,3.24

22

21 Moduladdad21 I La estructura de un modulo,2.12 Reglas de modularizacionDiseno de modules2,21 Acoplamiento de modules2.22 Cohesion de modules .Tipos de datos .' . ,Abstraccion en Jenguajes de programacion24 1 Abstracciones de control2.4 2 Abstraccion de datosTipos 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 ' ... .-2.6 1 Aplicacion del tipo abstracto de dato PilaTipos abstractos de datos en Modula-2 '27 1. Modules272 Modules locales2 7 3 Tipos opacos274. Tipos transparentes .. ' . ..' . . .. .. .. ..... ., "27.5 Una version del tipo abstracto de dato Pila con datos opacos2.76 Otra aplicacioii del TAD PilaTipos abstractos de datos en Ada28,1 Tipos privados2.82 Tipos privados limitados ,Tipos abstractos de datos en C .. .. . . .' . . .2.9 1. Un ejemplo de Ull tipo abstracto de datos en CTipos abstractos de datos en c++ ..2,101 Definicion de una clase Pila en c++

ResumenEjercicios

Capitulo 2, Modularidad: tipos abstractos de datos

1 10 Desarrollo tradicional frente a orientad'(TaO)bjetos1.11 Beneficios de las tecnologfas de objetosResumen

vi Contenido

Page 4: Programacion Orientada a Objetos Luis Joyanes Aguilar

Contenido ix

185188190192193201204207208213216221222223

229

230232233233237240242243247247251251252252

255

256256257258260261262263263264265265266

268

269270

Capitulo 9..Genericidad: plantillas (templates)

9 1 Genericidad :92 Conceptos fundamentales de plantillas en C++

Capitulo 8.. Polimorfismo

81 Ligadura8.1.1. Ligadura en C++

82 Funciones virtuales .. ..82.1 Ligadura dinamica mediante funcionesvirtuales .

8.3. Polimorfismo ..83 1 EI polimorfismo sin ligaduradinamica8.3 2 El polirnorfismo con ligadura dinamica

84 Uso del polirnorfismo .84.1 Uso del polirnorfiosmoen C++ ..

8 5 Ligadura dinamica frente a ligadura estatica8.6. Ventajasdel polimorfismoResumenEjercicios

Capitulo 7. Clases abstractas y herencia

71 Abstraccion de la generalizacion y especializacion de clases7.2 Clases abstractas73 Herencia en C++: clases derivadas

7.3. L Sintaxis de la herencia simple73.2. Sintaxis de la herencia multiple7.33. Ambiguedad y resoluci6n de ambito

7.4. Herencia repetida y clases base virtuales7.5 Funciones virtuales puras

7.51. Otro ejemplo de clase abstracta76 Diseno de clases abstractas .77 Una aplicacion practica: jerarqufa de figuras

7 7. 1. La clase F iqur aResumenEjercicios

Ejercicios

6.7. Disefios practices de clases6.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 clases6101 Funciones miembro .6.102 Una aplicaci6n sencilla6.10.3. Control de acceso a los miembros de una clase6.10.4. Creaci6n, inicializacion y destrucci6n de objetos

6 1] El puntero thisResumen

168169170171172173176177179180181181183184184

167

137

138138141143145146149150151152155155156157160160

129130130131132133134134135136

Capitulo 6.. Clases y objetos en C++

6.L Clases y objetos62 Objetos

6.2..1 Identificaci6n de objetos63. Clases6.4 Creaci6n de clases .65 Diagramas de clases y objetos .66 Construcci6n de clases en c++

6 6 1 Declaracion de clases6.6.2.Definicion de una clase .6.63 Constructores y destructores6.64 Usal las clases .665 Especificaci6njimplementaci6n de clases666 Compilaci6n separada de c1ases6. 6.7 Reutilizaci6n de clases .6.6 8 Estilos de declaracion de clases

Parte IIPROGRAMACION ORIENTADA A OBJEIOS CON C++

Capitulo 5. Modelado de objetos: relaciones

5 1 Relaciones entre clases. .52 Relaci6n de generalizacionjespecializacion (is-ales-un)

5.2.1 Ierarqufas de generalizaci6njespecializaci6n53 Relaci6n de agregacion (has-altiene-un) ...

5 3.1 Agregacion frente a generalizacion54. 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 repetidaResumenBjercicios

44 Eiffel4 4 1 La biblioteca de clases Eiffel4.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 .ResumenEjercicios

viii Contenido

Page 5: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 6: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 7: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 8: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 9: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 10: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 11: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 12: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 13: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 14: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 15: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 16: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 17: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 18: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 19: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 20: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 21: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 22: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 23: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 24: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 25: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 26: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 27: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 28: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 29: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 30: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 31: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 32: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 33: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 34: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 35: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 36: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 37: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 38: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 39: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 40: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 41: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 42: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 43: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 44: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 45: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 46: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 47: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 48: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 49: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 50: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 51: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 52: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 53: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 54: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 55: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 56: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 57: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 58: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 59: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 60: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 61: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 62: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 63: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 64: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 65: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 66: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 67: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 68: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 69: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 70: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 71: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 72: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 73: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 74: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 75: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 76: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 77: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 78: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 79: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 80: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 81: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 82: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 83: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 84: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 85: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 86: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 87: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 88: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 89: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 90: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 91: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 92: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 93: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 94: Programacion Orientada a Objetos Luis Joyanes Aguilar
Page 95: Programacion Orientada a Objetos Luis Joyanes Aguilar