programación orientada a objetos, luis joyanes aguilar

95

Click here to load reader

Upload: alejandro-rivera-santander

Post on 15-Jun-2015

677 views

Category:

Documents


16 download

TRANSCRIPT

Page 1: Programación 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: Programación 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: Programación 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: Programación 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: Programación orientada a objetos, luis joyanes aguilar
Page 6: Programación orientada a objetos, luis joyanes aguilar
Page 7: Programación orientada a objetos, luis joyanes aguilar
Page 8: Programación orientada a objetos, luis joyanes aguilar
Page 9: Programación orientada a objetos, luis joyanes aguilar
Page 10: Programación orientada a objetos, luis joyanes aguilar
Page 11: Programación orientada a objetos, luis joyanes aguilar
Page 12: Programación orientada a objetos, luis joyanes aguilar
Page 13: Programación orientada a objetos, luis joyanes aguilar
Page 14: Programación orientada a objetos, luis joyanes aguilar
Page 15: Programación orientada a objetos, luis joyanes aguilar
Page 16: Programación orientada a objetos, luis joyanes aguilar
Page 17: Programación orientada a objetos, luis joyanes aguilar
Page 18: Programación orientada a objetos, luis joyanes aguilar
Page 19: Programación orientada a objetos, luis joyanes aguilar
Page 20: Programación orientada a objetos, luis joyanes aguilar
Page 21: Programación orientada a objetos, luis joyanes aguilar
Page 22: Programación orientada a objetos, luis joyanes aguilar
Page 23: Programación orientada a objetos, luis joyanes aguilar
Page 24: Programación orientada a objetos, luis joyanes aguilar
Page 25: Programación orientada a objetos, luis joyanes aguilar
Page 26: Programación orientada a objetos, luis joyanes aguilar
Page 27: Programación orientada a objetos, luis joyanes aguilar
Page 28: Programación orientada a objetos, luis joyanes aguilar
Page 29: Programación orientada a objetos, luis joyanes aguilar
Page 30: Programación orientada a objetos, luis joyanes aguilar
Page 31: Programación orientada a objetos, luis joyanes aguilar
Page 32: Programación orientada a objetos, luis joyanes aguilar
Page 33: Programación orientada a objetos, luis joyanes aguilar
Page 34: Programación orientada a objetos, luis joyanes aguilar
Page 35: Programación orientada a objetos, luis joyanes aguilar
Page 36: Programación orientada a objetos, luis joyanes aguilar
Page 37: Programación orientada a objetos, luis joyanes aguilar
Page 38: Programación orientada a objetos, luis joyanes aguilar
Page 39: Programación orientada a objetos, luis joyanes aguilar
Page 40: Programación orientada a objetos, luis joyanes aguilar
Page 41: Programación orientada a objetos, luis joyanes aguilar
Page 42: Programación orientada a objetos, luis joyanes aguilar
Page 43: Programación orientada a objetos, luis joyanes aguilar
Page 44: Programación orientada a objetos, luis joyanes aguilar
Page 45: Programación orientada a objetos, luis joyanes aguilar
Page 46: Programación orientada a objetos, luis joyanes aguilar
Page 47: Programación orientada a objetos, luis joyanes aguilar
Page 48: Programación orientada a objetos, luis joyanes aguilar
Page 49: Programación orientada a objetos, luis joyanes aguilar
Page 50: Programación orientada a objetos, luis joyanes aguilar
Page 51: Programación orientada a objetos, luis joyanes aguilar
Page 52: Programación orientada a objetos, luis joyanes aguilar
Page 53: Programación orientada a objetos, luis joyanes aguilar
Page 54: Programación orientada a objetos, luis joyanes aguilar
Page 55: Programación orientada a objetos, luis joyanes aguilar
Page 56: Programación orientada a objetos, luis joyanes aguilar
Page 57: Programación orientada a objetos, luis joyanes aguilar
Page 58: Programación orientada a objetos, luis joyanes aguilar
Page 59: Programación orientada a objetos, luis joyanes aguilar
Page 60: Programación orientada a objetos, luis joyanes aguilar
Page 61: Programación orientada a objetos, luis joyanes aguilar
Page 62: Programación orientada a objetos, luis joyanes aguilar
Page 63: Programación orientada a objetos, luis joyanes aguilar
Page 64: Programación orientada a objetos, luis joyanes aguilar
Page 65: Programación orientada a objetos, luis joyanes aguilar
Page 66: Programación orientada a objetos, luis joyanes aguilar
Page 67: Programación orientada a objetos, luis joyanes aguilar
Page 68: Programación orientada a objetos, luis joyanes aguilar
Page 69: Programación orientada a objetos, luis joyanes aguilar
Page 70: Programación orientada a objetos, luis joyanes aguilar
Page 71: Programación orientada a objetos, luis joyanes aguilar
Page 72: Programación orientada a objetos, luis joyanes aguilar
Page 73: Programación orientada a objetos, luis joyanes aguilar
Page 74: Programación orientada a objetos, luis joyanes aguilar
Page 75: Programación orientada a objetos, luis joyanes aguilar
Page 76: Programación orientada a objetos, luis joyanes aguilar
Page 77: Programación orientada a objetos, luis joyanes aguilar
Page 78: Programación orientada a objetos, luis joyanes aguilar
Page 79: Programación orientada a objetos, luis joyanes aguilar
Page 80: Programación orientada a objetos, luis joyanes aguilar
Page 81: Programación orientada a objetos, luis joyanes aguilar
Page 82: Programación orientada a objetos, luis joyanes aguilar
Page 83: Programación orientada a objetos, luis joyanes aguilar
Page 84: Programación orientada a objetos, luis joyanes aguilar
Page 85: Programación orientada a objetos, luis joyanes aguilar
Page 86: Programación orientada a objetos, luis joyanes aguilar
Page 87: Programación orientada a objetos, luis joyanes aguilar
Page 88: Programación orientada a objetos, luis joyanes aguilar
Page 89: Programación orientada a objetos, luis joyanes aguilar
Page 90: Programación orientada a objetos, luis joyanes aguilar
Page 91: Programación orientada a objetos, luis joyanes aguilar
Page 92: Programación orientada a objetos, luis joyanes aguilar
Page 93: Programación orientada a objetos, luis joyanes aguilar
Page 94: Programación orientada a objetos, luis joyanes aguilar
Page 95: Programación orientada a objetos, luis joyanes aguilar