PDF de programación - Programación Orientada a Objetos

Imágen de pdf Programación Orientada a Objetos

Programación Orientada a Objetosgráfica de visualizaciones

Publicado el 20 de Marzo del 2018
1.693 visualizaciones desde el 20 de Marzo del 2018
1,5 MB
174 paginas
Creado hace 13a (19/02/2011)
!"#$"%&%'()*+#"(,*-%.%+%+#/0,-#1

!"#$"%&%'()*+,"(-*.%/%+%+,01-.#2+3#"+4#0-".#+4#/"5$6-7+8'9-:-""5%;+<=:%"#+!"(-.#+4%&#2;+8*'%"*%+>#2%+

>?*'9-7+2-+-*'6-*."%+0%1#+6*%+@('-*'(%+A"-%.(:-+A#&&#*2+4-'#*#'(&(-*.#BC#A#&-"'(%=BA#&3%".("D$6%=+

I%2%/%+-*+6*%+#0"%+-*+JJJF=(0"-"(%%=:%"#F'#&K=(0"#3##F3/LF

EFG+H*3#".-/F

(1/*2+MNBOGPBGGGEBQ
.3456789+:3;<=2+AABRRBSGGN





“libropoo” — 2011/2/19 — 19:02 — page 1 — #1





Prólogo

Desde principio de la década de los noventa hasta la actualidad, la Progra-
mación Orientada a Objetos se ha establecido como el paradigma más exten-
dido entre la comunidad de programadores. Las asignaturas de programación
de las Facultades y Escuelas de Informática no han sido ajenas al uso de este
paradigma de programación. Estas asignaturas, normalmente, se han basado
en buenos y completos libros de expertos en la materia. No en vano, existe una
amplia literatura acerca del tema. Pero quizás, esta amplia literatura provoca,
que, tanto profesores como alumnos, o incluso, personas externas al ámbito
académico interesadas en este paradigma, se vean desbordados ante la canti-
dad de material disponible, del cual, además, posiblemente necesiten sólo una
pequeña parte.

La intención de los autores al escribir este libro es la de cubrir una laguna
que, en nuestra opinión, existe en la vasta literatura acerca del tema: la falta de
una guía accesible y concisa de introducción a los conceptos más importantes
de la Programación Orientada a Objetos. Por tanto, este libro surge con el
objetivo de presentar los conceptos más importantes del paradigma de una
manera sencilla y agradable al lector, apoyando los conceptos presentados con
ejemplos que ayuden a la comprensión de todo lo expuesto.

Este libro se encuentra dividido en los siguientes ocho capítulos.
En el primer capítulo se contextualiza la Programación Orientada a Objetos

dentro de la historia de la programación.

En el capítulo segundo se definen los conceptos básicos de clases y obje-
tos junto con el principio básico de la Programación Orientada a Objetos: la
encapsulación.

En el tercer capítulo se explican los mecanismos básicos de reutilización de

código: la composición y la herencia.

En el capítulo cuatro se define el concepto de polimorfismo. Así, se expli-
ca el concepto de ligadura, las funciones virtuales, la sobrescritura, las clases
abstractas, los constructores, funciones virtuales, destructores, y la diferencia
entre sobrecarga y sobrescritura.

En el quinto capítulo se explica el manejo de errores de la programación
tradicional y se compara con la foma de hacerlo en C++: manejo de excepcio-
nes.





1









“libropoo” — 2011/2/19 — 19:02 — page 2 — #2





En el sexto capítulo se define el concepto de estructura de datos y como
ejemplo, se presenta una de las estructuras de datos más utilizadas: la estruc-
tura árbol.

Por su parte, en el capítulo siete, se presenta una metodología de identifi-

cación y modelado de clases de objetos.

Como último capítulo, en el capítulo ocho, se presentan otras características
relevantes de C++ que se salen del ámbito de la programación orientada a
objetos.

Finalmente, en el apéndice se pueden encontrar una relación de los errores
más comunes, así como una batería de ejercicios para que el lector practique y
comprenda todos los conceptos expuestos en este libro.





2









“libropoo” — 2011/2/19 — 19:02 — page 3 — #3





Índice general

1. Introducción

1.1. Paradigmas de Programación: Evolución . . . . . . . . . . . . .
1.1.1. Programación Estructurada . . . . . . . . . . . . . . . .
1.1.2. Programación Orientada a Objetos: Características base
1.1.3. Programación Orientada a Objetos: Historia
. . . . . .
1.2. Procesos de Desarrollo Software . . . . . . . . . . . . . . . . . .
1.3. El lenguaje C++ . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1. Lenguaje de ejemplo . . . . . . . . . . . . . . . . . . . .
1.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Clases y objetos

2.1. Concepto de clase y objeto

2.3.1. Constructores

2.3.2. Destructores

2.3. Creación y eliminación de objetos

. . . . . . . . . . . . . . . . . . . .
2.1.1. Clases y objetos en C++ . . . . . . . . . . . . . . . . .
2.1.2. El operador this
. . . . . . . . . . . . . . . . . . . . . .
2.2. Encapsulación . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Encapsulación en C++. Modificadores de acceso . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
2.3.1.1. Constructores en C++ . . . . . . . . . . . . .
2.3.1.2. Clasificación de constructores
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
2.3.2.1. Destructores en C++ . . . . . . . . . . . . . .
2.3.3. Ejemplo de creación y eliminación de objetos . . . . . .
2.3.4. Creación y eliminación dinámica de objetos . . . . . . .
2.4. Paso de objetos como parámetros a funciones . . . . . . . . . .
2.4.1. Paso de objetos por valor . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
2.4.2. Paso de objetos por referencia
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .

2.5.1. Por referencia
2.5.2. Por valor

2.5. Funciones que devuelven objetos

2.6. Miembros estáticos

2.6.1. Atributos miembro estáticos

7
7
7
8
8
11
12
13
14

15
15
16
17
17
18
20
20
21
23
24
25
25
29
30
31
33
35
35
37
37
37





3









“libropoo” — 2011/2/19 — 19:02 — page 4 — #4

ÍNDICE GENERAL

2.7. Sobrecarga

2.6.2. Funciones miembro estáticas

. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7.1. Funciones sobrecargadas . . . . . . . . . . . . . . . . . .
2.7.2. Operadores sobrecargados
. . . . . . . . . . . . . . . .
2.8. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .





38
39
40
40
43

3. Mecanismos de reutilización

3.1. Composición . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1. Problema . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2. Concepto . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.3. La composición en C++ . . . . . . . . . . . . . . . . .
Interfaz de la clase contenedora . . . . . . . . . . . . . .
3.1.4.
3.2. Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1. Problema . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2. Concepto . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.3. Jerarquías de clases
. . . . . . . . . . . . . . . . . . . .
3.2.4. La herencia en C++ . . . . . . . . . . . . . . . . . . . .

45
46
46
48
48
50
54
55
55
56
58
3.2.4.1. Control de acceso a los miembros de la clase base 58
3.2.4.2. Mayor control de acceso a los miembros de la
clase base . . . . . . . . . . . . . . . . . . . . .
3.2.4.3. Constructores y destructores en la herencia
.
3.2.4.4. Redefinición . . . . . . . . . . . . . . . . . . .
3.2.4.5. Conversiones entre objetos de la clase base y
. . . . . . . . .
3.2.4.6. Herencia múltiple . . . . . . . . . . . . . . . .
3.2.4.7. Sobrecarga y redefinición . . . . . . . . . . . .
3.3. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

objetos de las clases derivadas

63
63
68

70
71
72
73

4. Polimorfismo

4.2.3.1. Extensibilidad y estructuras polimórficas
4.2.3.2. Método virtual no sobrescrito

4.1. Concepto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Polimorfismo en C++ . . . . . . . . . . . . . . . . . . . . . . .
4.2.1. Ligadura
. . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2. Funciones virtuales . . . . . . . . . . . . . . . . . . . . .
4.2.3. Sobrescritura . . . . . . . . . . . . . . . . . . . . . . . .
. . .
. . . . . . . . .
4.2.4. Clases abstractas . . . . . . . . . . . . . . . . . . . . . .
4.2.5. Constructores y funciones virtuales
. . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
4.2.6. Destructores
4.2.6.1. Destructor virtual
. . . . . . . . . . . . . . . .
4.2.6.2. Destructor virtual puro . . . . . . . . . . . . .
4.2.6.3. Destructores y funciones virtuales . . . . . . .
4.3. Sobrecarga y sobrescritura . . . . . . . . . . . . . . . . . . . . .
4.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

75
75
76
77
78
79
79
80
81
82
84
84
86
86
88
90





4









“libropoo” — 2011/2/19 — 19:02 — page 5 — #5

ÍNDICE GENERAL

5. Excepciones

5.1. Concepto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Manejo de errores tradicional
. . . . . . . . . . . . . . . . . . .
5.3. Excepciones en C++ . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
5.3.1. Lanzar y capturar excepciones
. . . . . . . . . .
5.3.2. Restricción de excepciones permitidas
5.3.3. Relanzar excepciones . . . . . . . . . . . . . . . . . . . .
5.3.4. Excepciones definidas por el usuario . . . . . . . . . . .
5.3.5. Excepciones en constructores y destructores
. . . . . .
5.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6. Estructuras de datos

6.1. Concepto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2. Árboles
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1. Representación y recorrido de los árboles binarios . . . .
6.2.2. Árbol binario de búsqueda . . . . . . . . . . . . . . . . .
6.2.3. Árboles balanceados . . . . . . . . . . . . . . . . . . . .
6.2.4. Algoritmos principales de un ABO . . . . . . . . . . . .
6.2.4.1.
Inserción de nodos . . . . . . . . . . . . . . . .
6.2.4.2. Eliminación de nodos . . . . . . . . . . . . . .
6.2.4.3. Recorridos del árbol . . . . . . . . . . . . . . .
Implementación de un árbol binario ordenado
. . . . .
6.3. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2.5.

7.1.

7.2.
7.3.

7. Identificación y modelado

Identificación . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1. Análisis gramat
  • Links de descarga
http://lwp-l.com/pdf9737

Comentarios de: Programación Orientada a Objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad