You are on page 1of 95

.

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

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

You might also like