Вы находитесь на странице: 1из 95

MADRID BUENOS AIRES' CARACAS GUATEMALA LlSBOA MEXICO

NUEVA YORK PANAMA' SAN J UAN 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 Joyanes Aguilar
Director del Departamento de
Lenguajes y Sistemas Informaticos eIngenierfade Software
Facultad deInformatica
Universidad Pontificia deSalamanca Campus Madrid
ORIENT ADA A OBJETOS
Gerardo Quiroz Vieyra
Ingenieroen Cornunicacionesy Electr6nica
por laESIME dellnstituto Politecnico Nacional
Profesor delaUniversidadAutonorna Metropolitana
Unidad Xochimilco
MEXICO
Antonio Vaquero Sanchez
Catednitico deLenguajes y SistemasInformaticcs
EscuelaSuperior deInformatica
UniversidadComplutensedeMadrid
ESPANA
. CONSULIORES EDITORIALES
AREA DE INFORMATICA Y COMPUIACION
PROGRAMACION
Willy VegaGalvez
UniversidadNacional deIngenierta
PERU
v
IMPRESO EN ESPANA - PRINTED IN SPAIN
Editor: J ose Dominguez Alconchel
Disefio de cubierta: J uan Garcia
Compuesto e impreso en Fernandez Ciudad, S L
Edificio Valrealty, 1a planta
Basauri, 17
28023 Aravaca (Madrid)
PROGRAMACION ORlENIADA A OBJEIOS
No esta permitida Lareproducci6n total 0parcial 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
DERECHOS RESERVADOS 1996, respecto ala primera edici6n en espaiiol, por
McGRAW-HILL;iNTERAMERICANA DE ESPA'N"A, S A
] 1. La compJ ejidad inherente al software 4
1lILa complejidad del dominic del problema . ,, 4
1.1.2. La dificultad de gestionar el proceso de desarrollo 4
113 La flexibilidad a traves del software 5
12 La crisis del software ... ,. . . 5
13 Factores en la calidad del software. 7
131 Razones fundamentales que estan influyendo en la importancia de
la POO _ '" . ,. . 9
1.4 Programaci6n y abstraccion 9
15. EI papel (el rol) de la abstracci6n 10
1.5..1. La abstracci6n como proceso natural mental 10
1. 5. 2 Historia de la abstraccion del software 11
153 Procedimientos 12
1.5.4. M6dulos",.. 13
155, Tipos abstractos de datos J 3
1.56 Objetos 14
16. Un nuevo paradigma de programacion l5
17 Orientaci6n a objetos 16
171. Abstraccion . 17
1.7.2. Encapsulacion 18
173 Modularidad 18
1'74. J erarquia.. 18
1.75 Polimorfismo 19
176 Otras propiedades 20
18 Reutilizaci6n de software , .. , 21
1. 9. Lenguajes de programacion orientados a objetos 22
19 1 Clasificaci6n de los lenguajes orientados a objetos 23
ISBN: 84-481-0590-7
Deposito legal: M 30121-1996
3 Capitulo L EI desarrollo de software
Parte I
EL MUNDO DE LA ORIENTA CION A OBJEfOS:
CONCEPTOS, RELACIONES, MODELADO Y LENGUAJES
DE PROGRAMACION
XVll Prologo
CONTENIDO
! , . i ,..I , ~f ." " ~ , , ~ ' " \ .. ~ -~;,., ;!
._ .... , --..~-',.-,..._ .." - ~ ~ ..
1 1 7
118
119
120
1 2 1
1 2 2
1 2 4
1 2 5
1 2 6
1 2 6
1 2 7
1 2 8
1 2 8
113
114
78
78
8 0
8 0
83
84
84
86
87
89
90
90
92
92
93
93
94
95
96
98
98
1 00
]01
1 02
1 04
104
105
1 05
1 07
107
109
1 1 0
110
111
Capitulo 4.. Lenguajes de programacion orientados a objetos ..
4.] Evoluci6n de los LPOOS
4 11 Estado actual de los J enguajes orientados a objetos en la decada de
los noventa
4.2. Clasificacion de lenguajes orientados a objetos ....
421 Taxonomia de lenguajes orientados a objetos
422 Caractensticas de los Ienguajes orientados a objetos
4.2.3 PUlOSfrente a hibridos ,
424 Tipificacion estatica frente a dinamica
42.5 Ligadura estatica frente a dinamica
4.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-83
4.34. Soporte Ada para orientaci6n a objetos
Resumen
315.
3.14
313
3 1 0
3 11.
3 1 2
3.9
38
37
36.
3.4.1. Definicion de objetos
342 Identificacion de objetos
34.3 Duracion de los objetos ..
14.4. Objetos frente aclases Representacion grafica (Notacion de Ege)
345 Datos internos
3.4.6 Ocultacion de datos
Herencia
351 Sintaxis
3.52. Tipos de herencia ..
Comunicaciones entre objetos: los mensajes .
36 1 Activacion de objetos
16.2. Mensajes
16,3. Paso de mensajes
Estructura inter na de un objeto .
17.1. Atributos
3.7,2. Metodos
Clases .,
3,8.1. Una comparacion con tablas de datos
Herencia y tipos .
391 Herencia simple iherencia jel'ul'quica)
19,2. Herencia multiple therencia ell malla)
3.93 Clases abstr aetas
Anulacion/Sustitucion
Sobrecarga .,
Ligadura dinamica
3 121 Funciones 0metodos virtuales
3.122 Polimorfismo
Objetos compuestos.
3 131 Un ejemplo de objetos compuestos.
313.2 Niveles de proiundidad
Reutilizaci6n con orientaci6n a objetos .
314.1 Objetos y reutilizacion
Polimorfismo
3..5
Contenido vii
67
69
69
70
71
73
75
75
76
77
66
31
31
32
35
35
35
36
38
38
39
4 0
42
42
43
45
46
46
47
47
48
49
51
53
55
56
57
58
60
6 1
64
65
30
25
27
29
34
33
32
Programacion estructurada " : . " ' .
3 1.1. Desventajas de la programacion estructmada
l.Que es la programacion orientada a objetos?
321 EI objeto
322, Ejemplos de objetos .'
3.2,3. Metodos y mensajes
Clases , .'
331. Implementacion de clases en lenguajes .
3,,32 Sintaxis
Un mundo de objetos
31
C
tt I 3 Conceptos fundamentales de programacion orientada a ob-
apl u0 , '
jetos
210
29
28.
27
26
2,5
2,3.
24
22
21 Moduladdad
21 I La estructura de un modulo,
2.12 Reglas de modularizacion
Diseno de modules
2,21 Acoplamiento de modules
2.22 Cohesion de modules .
Tipos de datos .' . ,
Abstraccion en J enguajes de programacion
24 1 Abstracciones de control
2.42 Abstraccion de datos
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 ' ... .-
2.6 1 Aplicacion del tipo abstracto de dato Pila
Tipos abstractos de datos en Modula-2 '
27 1. Modules
272 Modules locales
273 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
Tipos abstractos de datos en Ada
28,1 Tipos privados
2.82 Tipos privados limitados ,
Tipos abstractos de datos en C .. .. .. .' .. .
2.9 1. Un ejemplo de Ull tipo abstracto de datos en C
Tipos abstractos de datos en c++ ..
2,101 Definicion de una clase Pila en c++
Resumen
Ejercicios
Capitulo 2, Modularidad: tipos abstractos de datos
1 10 Desarrollo tradicional frente a orientad'(TaO)bjetos
1 . 1 1 Beneficios de las tecnologfas de objetos
Resumen
vi Contenido
Contenido ix
1 8 5
1 8 8
1 9 0
1 9 2
1 9 3
2 0 1
2 0 4
2 0 7
2 0 8
2 1 3
2 1 6
2 2 1
2 2 2
2 2 3
229
2 3 0
2 3 2
2 3 3
2 3 3
2 3 7
2 4 0
2 4 2
2 4 3
2 4 7
2 4 7
2 5 1
2 5 1
2 5 2
2 5 2
255
2 5 6
2 5 6
2 5 7
2 5 8
2 6 0
261
2 6 2
2 6 3
2 6 3
2 6 4
2 6 5
2 6 5
2 6 6
2 6 8
2 6 9
2 7 0
Capitulo 9..Genericidad: plantillas (templates)
9 1 Genericidad :
9 2 Conceptos fundamentales de plantillas en C++
Capitulo 8.. Polimorfismo
8 1 Ligadura
8.1.1. Ligadura en C++
8 2 Funciones virtuales .. ..
8 2 . 1 Ligadura d i n a mi c a mediante f u n c i o n e s virtuales .
8.3. Polimorfismo ..
8 3 1 EI polimorfismo sin l i g a d u r ad i n a mi c a
8.32 El polirnorfismo con ligadura dinamica
8 4 Uso del polirnorfismo .
8 4 . 1 Uso del p o l i r n o r f i o s moen C++ ..
85 Ligadura dinamica frente a ligadura estatica
8 . 6 . Ve n t a j a s del polimorfismo
Resumen
Ejercicios
Capitulo 7. Clases abstractas y herencia
71 Abstraccion de la generalizacion y especializacion de clases
7.2 Clases abstractas
7 3 Herencia en C++: clases derivadas
7.3. L Sintaxis 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
7 6 Di s e n o de clases abstractas .
77 Una aplicacion practica: jerarqufa de figuras
7 7. 1. La clase F iqur a
Resumen
Ejercicios
Ejercicios
6.7. Disefios practices de clases
6.71 Clases Reloj y Presentar
6 8 T e c n i c a s de creaci6n e inicializaci6n de objetos .
6 . 8 . 1 . Objetos dinamicos new y delete .
6 9 . Inicializacion y limpieza de objetos .
6 9 1 Uso de una clase .
610 Reglas practicas para construccion de clases
6 1 0 1 Funciones miembro .
6 . 1 0 2 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
168
169
170
1 7 1
1 7 2
1 7 3
176
1 7 7
1 7 9
180
181
181
183
1 8 4
184
1 6 7
137
1 3 8
138
1 4 1
143
1 4 5
146
1 4 9
1 5 0
151
1 5 2
155
155
156
157
160
160
1 2 9
1 3 0
1 3 0
1 3 1
1 3 2
1 3 3
1 3 4
1 3 4
1 3 5
1 3 6
Capitulo 6.. Clases y objetos en C++
6. L Clases y objetos
6 2 Objetos
6 . 2..1 Identificaci6n de objetos
63. Clases
6.4 Creaci6n de clases .
65 Diagramas de clases y objetos .
66 Construcci6n de clases en c++
661 Declaracionde 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. 68 Estilos de declaracion de clases
Parte II
PROGRAMACION ORIENTADA A OBJEIOS CON C++
Capitulo 5. Modelado de objetos: relaciones
51 Relaciones entre clases. .
5 2 Relaci6n de generalizacionjespecializacion (is-ales-un)
5 . 2 . 1 Ierarqufas de generalizaci6njespecializaci6n
53 Relaci6n de agregacion (has-altiene-un) ...
53.1 Agregacion frente a generalizacion
5 4 . Relacion de asociaci6n
5 . 4 1 . OtIOS ejemplos de cardinalidad ..
5.5 Herencia: jerarquia de c1ases
5.5.1 Herencia simple .
5 5 2 Herencia multiple .
5.521 Ventajas de la herencia multiple.
5522 Inconvenientes de la herencia multiple.
5523 Disefio de clases con herencia multiple.
5 6 Herencia repetida
Resumen
Bjercicios
44 Eiffel
44 1 La biblioteca de clases Eiffel
4.4.2. EI entorno de programacion Eiffel .
4.4.3. EI Jenguaje Eiffel
4 5. Small talk . .. .. ..
4 5 1 El lenguaje Smalltalk ..... ....
4 . 5 . 2 La jerarquia de clases Smalltalk .
4 . 6 OtTOSlenguajes de programacion orientados a objetos .
Resumen
Ejercicios
viii Contenido

Вам также может понравиться