Publicado el 31 de Octubre del 2020
696 visualizaciones desde el 31 de Octubre del 2020
253,9 KB
52 paginas
Creado hace 13a (10/11/2010)
INDICE
2
4
5
5
5
6
6
9
10
11
11
12
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
CAPITULO I
Introducción a la Programación Orientada a Objetos
I.1 Introducción
I.2 Introducción al lenguaje de programación
I.3 conceptos básicos
Objeto
Clases
Funciones miembro
Funciones en línea
Constructores y Destructores
Herencia
Mensajes
Encapsulamiento
Polimorfismo
CAPITULO II
Recursividad
II.1 Introducción
II.2 Escritura de funciones recursivas
II.3. Método de las tres preguntas
II.3.1 Aplicación
II.4 Tipos de recursión
II.5 Recusividad vs. Iteración
II.6 La pila de recursión
II.7 Ventajas e inconvenientes
17
.......................
18
.......................
19
.......................
19
.......................
20
.......................
22
.......................
....................... 23
.......................
23
CAPITULO III
Métodos de Ordenamiento y Búsqueda
III.1. Introducción
III.2 Clasificación interna
III.2.1 Clasificación por intercambio directo
III.2.2 Clasificación por inserción
III.2.3 Clasificación por selección directa
III.3 Métodos de clasificación avanzados
III.3.1 Clasificación por partición
III.4 Búsqueda lineal
III.5 Búsqueda Binaria
CAPITULO IV
Estructuras de Datos
IV.1. Introducción
IV.2 Pilas
IV.2.1 Representación
IV.2.2 Operaciones PUSH
IV.2.3 Operaciones POP
IV.3 Colas
IV.3.1 Representación
IV.3.2 Operaciones
IV.3.3 Comportamiento de los apuntadores
IV.3.4 Operación de inserción
IV.3.5 Operación de eliminación
IV.4 Cola Circular
IV.5 Listas
IV.5.1 Operaciones
IV.5.2 Notación
IV.5.3 Listas sencillamente ligadas
IV.5.3.1 Operación de Inserción
IV.5.3.1 Operación de Eliminación
Bibliografía
.......................
.......................
........
........
........
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
........
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
.......................
24
24
25
28
29
29
30
31
31
32
32
33
34
34
37
37
38
38
38
39
40
42
42
42
43
44
46
52
Programación Avanzada
2
Introducción a la
Programación
Orientada a Objetos
Capitulo I
I.1 INTRODUCCIÓN
la
introducción del
concepto de
en
Aunque ya han pasado algunos años la Orientación a Objetos sigue
siendo un término de moda. En 1967 fue desarrollado SIMULA, un
lenguaje para aplicaciones de simulación, considerado por muchos el
precursor
objeto.
Lamentablemente este nacimiento en Noruega pasó inadvertido para
gran parte de la familia de los programadores. Resulta que ahora
tenemos un “niño” de más de 25 años que muchos se apuran en
querer rebautizar.
Por aquel entonces se hablaba de la “crisis del software” que
provocaría el surgimiento de la Programación Estructurada. Las
“grandes” brigadas de programadores que programaban
los
“grandes” sistemas para las “grandes” máquinas enfrentaban serios
problemas de organización y productividad. La respuesta fue una
metodología que promovía una solución jerárquica, disciplinada,
organizada y ¡planificada! para desarrollar el software. Algunas
mejoras fueron introducidas en los lenguajes de programación para
facilitar esto: mejores estructuras de control para obviar el goto,
algunos recursos de modularidad y de organización de bibliotecas de
programas.
Esto pareció ser suficiente durante los 70’s. No obstante, pocos
sistemas lograban terminarse, pocos se terminaban cumpliendo los
requerimientos
los que se terminaban
cumpliendo los requisitos iniciales se usaban según lo planificado. El
problema (mal llamado de mantenimiento) consistía en cómo
adaptar el software a nuevos requerimientos imposibles de haber
sido planificados inicialmente. La “estructuración” facilitaba en todo
caso la zambullida de los “programadores de mantenimiento” en los
mares de líneas de programa fuente, pero no la impedía.
iniciales y no todos
Programación Avanzada
Este alto grado de planificación y previsión es contrario a la propia
realidad. El hombre aprende y crea a través de la experimentación,
no de la planificación. Se necesitan medios que faciliten la
experimentación y no que exijan que tenga que ser planificado un
proyecto entero antes de poder escribir una línea de programa para
que luego este proyecto se convierta en una camisa de fuerza en el
desarrollo y evolución del sistema. El desarrollo de SMALLTALK a
finales de los 70’s fue una respuesta a este problema.
El desarrollo técnico del hardware, su disminución de precios y la
explosión de las computadoras personales fue el detonante final.
La Programación Orientada a Objetos (P00), que por todo lo anterior
algunos han dado en la Programación Estructurada de los 90s,
encuentra aquí un terreno fértil. ¿Es la POO un mejor paradigma
que otros? En cierto sentido sí lo es. ¿Es una cura de todos nuestros
problemas? No lo es. ¿Significa que la arriba mencionada “crisis del
software” desaparecerá? Probablemente no. Pero entonces, ¿qué es
lo grande de la Programación Orientada a Objetos?.
En lugar de tratar de modelar un problema en algo familiar a la
computadora se trata ahora de acercar la computadora al problema.
Es decir, modelar la realidad del problema a través de entidades
independientes pero que interactúan entre sí y cuyas fronteras no
estén determinadas por su instrumentación computacional sino por
la naturaleza del problema. Estas entidades serán denominadas
objetos, por analogía con el concepto de objeto en el mundo real.
Resolver problemas consiste en definir objetos y sus acciones y
entonces invocar las acciones enviando mensajes a los objetos que
ocultan las características internas dé como llevan a cabo estas
acciones. Esta forma de resolver problemas luce familiar y lógica y
ha sido utilizada por otras disciplinas científicas ya que en nuestra
experiencia diaria nosotros “manipulamos objetos”.
• La robustez de las partes que garanticen su integridad y
funcionamiento propio (lo cual a su vez facilita “arrinconar”
las fallas). Esto se facilita en los lenguajes orientado a
3
la óptica de
Programar en un lenguaje de programación orientado a objetos es
definir clases
(nuevos tipos de datos) que “expresan” una
determinada funcionalidad la cual es común a todos los individuos
de una clase. A través de esta funcionalidad los objetos o instancias
concretas de una clase dan respuesta a las solicitudes (mensajes) que
les envían otros objetos. Las clases deben ser lo suficientemente
CERRADAS como para
que cada objeto pueda ocultar la
información (datos) que lo caracteriza como individuo. Es un
problema interno del objeto cómo llevar a cabo la funcionalidad
descrita en la clase.
Visto en
las arquitecturas convencionales de
computadoras, en la POO los datos no circulan abiertamente por
todo el sistema como en la programación tradicional. Los programas
no se dividen en declaraciones pasivas de estructuras de datos y
funciones (que tal vez actúen sobre algunas de las estructuras de
datos). Los datos están ahora encerrados dentro de cada objeto y
éste es quien decide internamente cómo trabajar con ellos para dar
respuesta a una solicitud de otro objeto.
Por otra parte estas clases deben ser lo suficientemente ABIERTAS
para permitir la reutilización, adaptación y extensión de las mismas
a nuevas funcionalidades, sin correr el riesgo de afectar el
funcionamiento de lo que ya está correcto.
Esta aparente contradicción, de lo que se conoce como principio
ABIERTO – CERRADO, es la piedra angular de la POO.
En ausencia de una definición formal de qué es la POO, algunos
prefieren
sus objetivos. Tres objetivos
fundamentales persigue la POO para facilitar la experimentación:
identificarla por
Programación Avanzada
objetos (LOO) a través de recursos como el encapsulamiento
y el manejo de excepciones.
• La reusabilidad y la extensibilidad. Que se pueda “derivar”
(más que definir) nuevas clases de objetos a partir de las ya
existentes,
facilitándole con ello al programador el
desarrollo de prototipos y una rápida exploración en las
nuevas ideas. Esto se facilita en los LOO mediante la
redefinición de operadores y funciones, la generalidad, la
herencia y el polimorfismo.
Esta búsqueda de la comunidad, de aprovechar lo existente, es una
de las características básicas de la POO. Algunos de estos recursos
como el polimorfismo y la jerarquía de clases a través de la herencia
nos dota
Comentarios de: Notas C++ (0)
No hay comentarios