Programación orientada a objetos, luis joyanes aguilar

  • 416 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
416
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
52
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. . 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
  • 2. ._ ... !,. ,--.. ~-',.-... _ , ..•" - ~~ .. 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
  • 3. 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
  • 4. 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 6.7. 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 185 188 190 192 193 201 204 207 208 213 216 221 222 223 Clases abstractas y herencia 229 138 141 143 145 146 149 150 151 152 155 155 156 157 160 160 Parte II ix Capitulo 7. 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 Capitulo 8.. Polimorfismo 255 81 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 polirnorfiosmo C++ .. en 8 5 Ligadura dinamica frente a ligadura estatica 8.6. Ventajasdel polimorfismo Resumen Ejercicios 256 256 257 258 260 Capitulo 9.. Genericidad: plantillas (templates) 268 184 91 184 92 269 270 PROGRAMACION ORIENTADA A OBJEIOS CON C++ Capitulo 6.. Clases y objetos en C++ 167 6. L Clases 168 169 170 62 63. 6.4 65 66 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 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