SlideShare una empresa de Scribd logo
1 de 95
Descargar para leer sin conexión
. 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

v
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

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

Más contenido relacionado

La actualidad más candente

Tutorial ranorex
Tutorial ranorexTutorial ranorex
Tutorial ranorexradikalzen
 
Curso de Pruebas de Software SENA 2023
Curso de Pruebas de Software SENA 2023Curso de Pruebas de Software SENA 2023
Curso de Pruebas de Software SENA 2023JorgeHernndez142601
 
Estandares de Calidad Aplicados al Software
Estandares de Calidad Aplicados al SoftwareEstandares de Calidad Aplicados al Software
Estandares de Calidad Aplicados al Softwareyolanda
 
Software Libre Presentacion
Software Libre PresentacionSoftware Libre Presentacion
Software Libre PresentacionMiriam Alsogaray
 
FDD (Feature Driven Development)
FDD (Feature Driven Development)FDD (Feature Driven Development)
FDD (Feature Driven Development)urumisama
 
Proyecto: Tecnología Educativa
Proyecto: Tecnología EducativaProyecto: Tecnología Educativa
Proyecto: Tecnología EducativaGeraldyne Reyes
 
Pruebas de caja negra (Blackbox)
Pruebas de caja negra (Blackbox)Pruebas de caja negra (Blackbox)
Pruebas de caja negra (Blackbox)Jesús Navarro
 
Proyecto Socio Tecnologico
Proyecto Socio TecnologicoProyecto Socio Tecnologico
Proyecto Socio Tecnologicoyessika_escalona
 
Gdsc Intro Session 2.0
Gdsc Intro Session 2.0Gdsc Intro Session 2.0
Gdsc Intro Session 2.0JasnaMarin2
 
Desarrollo iterativo e incremental
Desarrollo iterativo e incrementalDesarrollo iterativo e incremental
Desarrollo iterativo e incrementalnoriver
 
Los proyectos socio-tecnologicos .
Los proyectos socio-tecnologicos .Los proyectos socio-tecnologicos .
Los proyectos socio-tecnologicos .jeda dalas
 

La actualidad más candente (20)

Tutorial ranorex
Tutorial ranorexTutorial ranorex
Tutorial ranorex
 
Flutter for tche linux
Flutter for tche linuxFlutter for tche linux
Flutter for tche linux
 
Curso de Pruebas de Software SENA 2023
Curso de Pruebas de Software SENA 2023Curso de Pruebas de Software SENA 2023
Curso de Pruebas de Software SENA 2023
 
Discord aplicaciones y funciones
Discord aplicaciones y funcionesDiscord aplicaciones y funciones
Discord aplicaciones y funciones
 
Estandares de Calidad Aplicados al Software
Estandares de Calidad Aplicados al SoftwareEstandares de Calidad Aplicados al Software
Estandares de Calidad Aplicados al Software
 
Software Libre Presentacion
Software Libre PresentacionSoftware Libre Presentacion
Software Libre Presentacion
 
Metodologia Diseño Web
Metodologia Diseño WebMetodologia Diseño Web
Metodologia Diseño Web
 
Gdsc info session
Gdsc info session Gdsc info session
Gdsc info session
 
FDD (Feature Driven Development)
FDD (Feature Driven Development)FDD (Feature Driven Development)
FDD (Feature Driven Development)
 
Presentacion Blender
Presentacion BlenderPresentacion Blender
Presentacion Blender
 
1 introduccion microsoft .net
1 introduccion microsoft .net1 introduccion microsoft .net
1 introduccion microsoft .net
 
Sistema operativo mac 2
Sistema operativo mac 2Sistema operativo mac 2
Sistema operativo mac 2
 
Proyecto: Tecnología Educativa
Proyecto: Tecnología EducativaProyecto: Tecnología Educativa
Proyecto: Tecnología Educativa
 
Herramientas de Flash
Herramientas de FlashHerramientas de Flash
Herramientas de Flash
 
Canva
CanvaCanva
Canva
 
Pruebas de caja negra (Blackbox)
Pruebas de caja negra (Blackbox)Pruebas de caja negra (Blackbox)
Pruebas de caja negra (Blackbox)
 
Proyecto Socio Tecnologico
Proyecto Socio TecnologicoProyecto Socio Tecnologico
Proyecto Socio Tecnologico
 
Gdsc Intro Session 2.0
Gdsc Intro Session 2.0Gdsc Intro Session 2.0
Gdsc Intro Session 2.0
 
Desarrollo iterativo e incremental
Desarrollo iterativo e incrementalDesarrollo iterativo e incremental
Desarrollo iterativo e incremental
 
Los proyectos socio-tecnologicos .
Los proyectos socio-tecnologicos .Los proyectos socio-tecnologicos .
Los proyectos socio-tecnologicos .
 

Similar a Programación orientada a objetos, luis joyanes aguilar

Libro programacion orientadaaobjetosluisjoyanesaguilar
Libro programacion orientadaaobjetosluisjoyanesaguilarLibro programacion orientadaaobjetosluisjoyanesaguilar
Libro programacion orientadaaobjetosluisjoyanesaguilarIgnacio Fernandez Paba
 
Programación orientada a objetos - luis joyanes aguilar
Programación orientada a objetos - luis joyanes aguilarProgramación orientada a objetos - luis joyanes aguilar
Programación orientada a objetos - luis joyanes aguilarHenry Upla
 
Programacion orientada-a-objetos-luis-joyanes-aguilar
Programacion orientada-a-objetos-luis-joyanes-aguilarProgramacion orientada-a-objetos-luis-joyanes-aguilar
Programacion orientada-a-objetos-luis-joyanes-aguilarHector Garcia
 
2.- Manual 2020 Tecnologías de la Información (2334).pdf
2.- Manual 2020 Tecnologías de la Información (2334).pdf2.- Manual 2020 Tecnologías de la Información (2334).pdf
2.- Manual 2020 Tecnologías de la Información (2334).pdfALBERTHVELASQUEZ1
 
Arquitectura del computador.
Arquitectura del computador.Arquitectura del computador.
Arquitectura del computador.franbrito94
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programaciónMaritere Cruz
 
Programación del curso - Estructura de Datos I
Programación del curso - Estructura de Datos IProgramación del curso - Estructura de Datos I
Programación del curso - Estructura de Datos IYessenia I. Martínez M.
 
IEC330596-Sistemas Digitales II.pdf
IEC330596-Sistemas Digitales II.pdfIEC330596-Sistemas Digitales II.pdf
IEC330596-Sistemas Digitales II.pdfCarlosCarrascoMuoz1
 
Estructura datos ucc_jairo
Estructura datos ucc_jairoEstructura datos ucc_jairo
Estructura datos ucc_jairobalantaj123
 

Similar a Programación orientada a objetos, luis joyanes aguilar (20)

Libro programacion orientadaaobjetosluisjoyanesaguilar
Libro programacion orientadaaobjetosluisjoyanesaguilarLibro programacion orientadaaobjetosluisjoyanesaguilar
Libro programacion orientadaaobjetosluisjoyanesaguilar
 
Programación orientada a objetos - luis joyanes aguilar
Programación orientada a objetos - luis joyanes aguilarProgramación orientada a objetos - luis joyanes aguilar
Programación orientada a objetos - luis joyanes aguilar
 
Programacion orientada-a-objetos-luis-joyanes-aguilar
Programacion orientada-a-objetos-luis-joyanes-aguilarProgramacion orientada-a-objetos-luis-joyanes-aguilar
Programacion orientada-a-objetos-luis-joyanes-aguilar
 
Planes Estudio Prepa GV
Planes Estudio Prepa GVPlanes Estudio Prepa GV
Planes Estudio Prepa GV
 
trabajo1
trabajo1trabajo1
trabajo1
 
Programación II
Programación IIProgramación II
Programación II
 
Guia examen adsi
Guia examen adsiGuia examen adsi
Guia examen adsi
 
Modulo Grado11
Modulo Grado11Modulo Grado11
Modulo Grado11
 
2.- Manual 2020 Tecnologías de la Información (2334).pdf
2.- Manual 2020 Tecnologías de la Información (2334).pdf2.- Manual 2020 Tecnologías de la Información (2334).pdf
2.- Manual 2020 Tecnologías de la Información (2334).pdf
 
Rc rafael cardona.pptx
Rc rafael cardona.pptxRc rafael cardona.pptx
Rc rafael cardona.pptx
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Fundamentos programacion isc2020
Fundamentos programacion isc2020Fundamentos programacion isc2020
Fundamentos programacion isc2020
 
Programa informatica economia
Programa informatica economiaPrograma informatica economia
Programa informatica economia
 
Arquitectura del computador.
Arquitectura del computador.Arquitectura del computador.
Arquitectura del computador.
 
Fundamentos de programación
Fundamentos de programaciónFundamentos de programación
Fundamentos de programación
 
Programación del curso - Estructura de Datos I
Programación del curso - Estructura de Datos IProgramación del curso - Estructura de Datos I
Programación del curso - Estructura de Datos I
 
vhdl
vhdlvhdl
vhdl
 
IEC330596-Sistemas Digitales II.pdf
IEC330596-Sistemas Digitales II.pdfIEC330596-Sistemas Digitales II.pdf
IEC330596-Sistemas Digitales II.pdf
 
Estructura datos ucc_jairo
Estructura datos ucc_jairoEstructura datos ucc_jairo
Estructura datos ucc_jairo
 
Diseño de materiales didácticos
Diseño de materiales didácticosDiseño de materiales didácticos
Diseño de materiales didácticos
 

Más de Alejandro Rivera Santander

[Penetration.testing.and.network.defense].(penetration testing and network.de...
[Penetration.testing.and.network.defense].(penetration testing and network.de...[Penetration.testing.and.network.defense].(penetration testing and network.de...
[Penetration.testing.and.network.defense].(penetration testing and network.de...Alejandro Rivera Santander
 
Sistemas operativos distribuidos andrews tanenbaum
Sistemas operativos distribuidos  andrews tanenbaumSistemas operativos distribuidos  andrews tanenbaum
Sistemas operativos distribuidos andrews tanenbaumAlejandro Rivera Santander
 
Information technology controls- David A. Richards, Alan S. Oliphant, Charles...
Information technology controls- David A. Richards, Alan S. Oliphant, Charles...Information technology controls- David A. Richards, Alan S. Oliphant, Charles...
Information technology controls- David A. Richards, Alan S. Oliphant, Charles...Alejandro Rivera Santander
 
Diseño orientado a objetos con uml - raúl alarcón
Diseño orientado a objetos con uml  - raúl alarcónDiseño orientado a objetos con uml  - raúl alarcón
Diseño orientado a objetos con uml - raúl alarcónAlejandro Rivera Santander
 
Analisis y diseño de sistemas kendall y kendall, preguntas de repaso
Analisis y diseño de sistemas kendall y kendall,  preguntas de repasoAnalisis y diseño de sistemas kendall y kendall,  preguntas de repaso
Analisis y diseño de sistemas kendall y kendall, preguntas de repasoAlejandro Rivera Santander
 
Analisis y diseño de sistemas preguntas de repaso
Analisis y diseño de sistemas preguntas de repasoAnalisis y diseño de sistemas preguntas de repaso
Analisis y diseño de sistemas preguntas de repasoAlejandro Rivera Santander
 

Más de Alejandro Rivera Santander (16)

[Penetration.testing.and.network.defense].(penetration testing and network.de...
[Penetration.testing.and.network.defense].(penetration testing and network.de...[Penetration.testing.and.network.defense].(penetration testing and network.de...
[Penetration.testing.and.network.defense].(penetration testing and network.de...
 
Google hacking para pentesters
Google hacking para pentestersGoogle hacking para pentesters
Google hacking para pentesters
 
Google cheatsheet
Google cheatsheetGoogle cheatsheet
Google cheatsheet
 
El lenguaje de programación c
El lenguaje de programación cEl lenguaje de programación c
El lenguaje de programación c
 
Técnicas de simulación
Técnicas de simulaciónTécnicas de simulación
Técnicas de simulación
 
Uml y patrones - craig larman
Uml y patrones   - craig larmanUml y patrones   - craig larman
Uml y patrones - craig larman
 
Sistemas operativos distribuidos andrews tanenbaum
Sistemas operativos distribuidos  andrews tanenbaumSistemas operativos distribuidos  andrews tanenbaum
Sistemas operativos distribuidos andrews tanenbaum
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Percieve usefulness - Davis, Fred D.
Percieve usefulness - Davis, Fred D.Percieve usefulness - Davis, Fred D.
Percieve usefulness - Davis, Fred D.
 
Introducción a la ingeniería en software
Introducción a la ingeniería en softwareIntroducción a la ingeniería en software
Introducción a la ingeniería en software
 
Information technology controls- David A. Richards, Alan S. Oliphant, Charles...
Information technology controls- David A. Richards, Alan S. Oliphant, Charles...Information technology controls- David A. Richards, Alan S. Oliphant, Charles...
Information technology controls- David A. Richards, Alan S. Oliphant, Charles...
 
Ensayo erp
Ensayo erpEnsayo erp
Ensayo erp
 
Diseño orientado a objetos con uml - raúl alarcón
Diseño orientado a objetos con uml  - raúl alarcónDiseño orientado a objetos con uml  - raúl alarcón
Diseño orientado a objetos con uml - raúl alarcón
 
Analisis y diseño de sistemas kendall y kendall, preguntas de repaso
Analisis y diseño de sistemas kendall y kendall,  preguntas de repasoAnalisis y diseño de sistemas kendall y kendall,  preguntas de repaso
Analisis y diseño de sistemas kendall y kendall, preguntas de repaso
 
Uso de bases de datos distribuidas
Uso de bases de datos distribuidasUso de bases de datos distribuidas
Uso de bases de datos distribuidas
 
Analisis y diseño de sistemas preguntas de repaso
Analisis y diseño de sistemas preguntas de repasoAnalisis y diseño de sistemas preguntas de repaso
Analisis y diseño de sistemas preguntas de repaso
 

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
  • 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