Programación orientada a objetos, luis joyanes aguilar
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
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