TODO SOBRE POO
¿Qué es la programación
orientada a objetos?
Es un paradigma de la programación de computadores que tiene como
objetivo el desarrollo computacional basado en una colección de objetos que
están interrelacionados y trabajan conjuntamente para resolver un problema.
Surge dentro de los paradigmas de la programación como un enfoque diferente al
momento de obtener soluciones computacionales.
Historia
La programación orientada a objetos (POO) nace en los años 60's en el Norwegian Computing Center con la implementación de dos lenguajes de programacion de simulacion: Simula 1 y Simula 67, desarrollados por Kristen Nygaard y Ole Johan Dahl. Simula 67 introdujo por primera vez los conceptos de clases, objetos, herencia, subclases, corrutinas y funciones virtuales. Es por esta razón que Simula es considerado el primer lenguaje orientado a objetos.
Programa
"Hola Mundo" en Simula 67:
El mensaje está codificado en el bloque de código de la clase Saludos.
Este bloque de código se ejecuta solamente cuando existe una instancia o variable
de tipo Saludos, lo que ocurre efectivamente al crear una instancia por medio
de la instrucción New. En Simula, los objetos siempre son manejados por medio
de referencias. Existe un recolector de basura que se encarga de eliminar de la
memoria los objetos que se han quedado sin referencias a ellos. Una de estas
referencias la vemos con variable objeto. Utilizamos el operador :- para
asignar referencias. A diferencia de muchos lenguajes modernos, Simula entiende
de dos tipos de objetos:
·
Activos: Son aquellos objetos que aún no han completado su bloque
asociado begin/end.
·
Inactivos: Son aquellos que han completado su bloque de instrucciones.
Tanto de unos como de otros, es posible ejecutar los procedimientos miembro y
consultar los atributos en cualquier momento.
Evolución
Años después del desarrollo de Simula 67 casi todos los
lenguajes de programación modernos comenzaron a utilizar los principios de
orientación a objetos. Así fue como se popularizaron términos como clases,
objetos, instancias, herencia, polimorfismo, etc. Un ejemplo significativo fue
el nacimiento del lenguaje Java,
uno de los lenguajes orientados a objetos con mayor reconocimiento a nivel
mundial.
Ventajas
1). Una buena abstracción de las
clases, objetos y atributos nos brinda una implementación más detallada,
puntual y coherente.
2).Reutilización de código: Cuando se
han diseñado adecuadamente las clases, se pueden usar en distintas partes del
programa y en numerosos proyectos (herencia).
Lo cual pemite:
Rápido desarrollo.
Alta calidad del código.
Bajo costo en fases de desarrollo.
3).Modificabilidad: La facilidad de
añadir o suprimir nuevos objetos nos permite hacer modificaciones de una forma
muy sencilla.
4).Encapsulamiento: Nos permite
proteger la integridad de los datos.
5).Fiabilidad: Al dividir el problema
en partes más pequeñas podemos probarlas de manera independiente y aislar mucho
más fácilmente los posibles errores que puedan surgir.
6).Bajo acoplamiento y alta cohesión:
Las clases son independientes entre sí, y hacen las tareas específicas para las
cuales fueron diseñadas.
7).Beneficios de diseño
8).Mantenimiento de software
9).Amplia documentación
Como se puede visualizar en la imagen, si se hace un buen
diseño y una abstracción adecuada, se pueden generar diferentes módulos a
partir de una clase base. En este ejemplo, la clase Figura brinda
la posibilidad de crear muchas más formas geométricas como el círculo, el
rombo, la estrella, el polígono y demás mediante su extensión.
Desventajas
1). Curva de aprendizaje: La necesidad
de utilizar bibliotecas de clases obliga a su aprendizaje y entrenamiento.
2). La ejecución de programas orientados
a objetos es más lenta.
3). Se hereda código que no se usa en la
clase hija cuando se extiende de una clase padre.
4).Tiempo en fase de diseño.
5). Tamaño del programa.
Bases De Paradigmas De
Orientación A Objetos Terminología y Conceptos
POO se ha convertido durante las pasadas dos décadas
en el paradigma de programación dominante, y en una herramienta para resolver
la llamada crisis del software.
Motivos : POO escala muy bien.
POO proporciona un modelo de abstracción que razona con técnicas que la
gente usa para resolver problemas (metáforas)
"Es más fácil
enseñar Smalltalk a niños que a programadores” (Kay 77)
Gran desarrollo de herramientas OO
(IDEs, librerías,…) en todos los dominios.coftware.
Ejemplo:
Supongamos que Luis quiere enviar flores a Alba,
que vive en otra ciudad. Luis va a la floristería más cercana,
atendida por un florista llamado Pedro. Luis le dice a Pedro qué
tipo de flores le enviar a Alba y la dirección de recepción.
El mecanismo utilizado para resolver el problema es
:
Encontrar un agente apropiado
(Pedro) Enviarle un mensaje conteniendo
la petición (envía flores a Alba).
Es la responsabilidad de Pedro satisfacer esa petición.
Para ello, es posible que Pedro disponga de
algún método (algoritmo o conjunto de operaciones) para
realizar la tarea.
Luis no necesita (ni le interesa) conocer el
método particular que Pedro utilizará para satisfacer la petición: esa
información está OCULTA.
Así, la solución del problema requiere de la
cooperación de varios individuos para su solución.
La definición de problemas en
términos de responsabilidades incrementa el nivel de abstracción y permite una
mayor independencia entre objetos.
En los primeros artículos de este manual conocerás las bases esenciales del paradigma orientado a objetos de la programación. Son conceptos fundamentales que te ayudarán a entender clases, objetos, métodos, mensajes, estados y propiedades, para comenzar a pensar en objetos.
1.- POO: Fundamentos de la Programación Orientada a Objetos
Conceptos fundamentales de la Programación Orientada a Objetos, desde un punto de vista académico, que nos hacen entender la importancia de este paradigma de la programación.
2.- Beneficios de la Programación Orientada a Objetos
Cuáles son los beneficios que nos aporta la Programación Orientada a Objetos: Abstracción, Encapsulación, Modularidad, Jerarquización.
3.- Qué es la programacion orientada a objetos
Introducimos para los más profanos las bases sobre las que se asienta la Programación Orientada a Objetos.
4.- Métodos y atributos static en Programación Orientada a Objetos
Definición y ejemplos de elementos o miembros static, los métodos y atributos de clase o estáticos en la programación orientada a objetos.
5.- Herencia en Programación Orientada a Objetos
Concepto de herencia en la programación orientada a objetos: un mecanismo básico por el que las clases hijas heredan el código de las clases padre.
6.- Polimorfismo en Programación Orientada a Objetos
Qué es el polimorfismo en la Programación Orientada a Objetos, el motivo de su existencia y cómo implementar polimorfismo en clases y objetos.
7.- Abstracción en Programación Orientada a Objetos
Concepto de abstracción en el paradigma de la Programación Orientada a Objetos y situaciones en las que se puede y se debe aplicar.
Terminología :
·Agentes y comunidades: Cada objeto juega
un rol en la solución del problema. Cada objeto proporciona
un servicio o realiza una acción que es posteriormente utilizada por
otros miembros de la comunidad.
· Mensajes y métodos: A un objeto se le envían mensajes para que realice una
determinada acción.El objeto selecciona un método apropiado para realizar dicha
acción. A este proceso se le denomina Paso de mensajes.
· Responsabilidades: El comportamiento de cada
objeto se describe en términos de
responsabilidades.
·Objetos y clases: Un objeto es una encapsulación de un
estado (valores de los datos) y comportamiento (operaciones) y Un objeto es una
instancia de una clase.
·Jerarquías de clases: Las clases de objetos pueden
ser organizadas en una estructura jerárquica de herencia. Una clase
‘hijo’ hereda propiedades de una clase ‘padre’ más alta en la jerarquía (más
general).
· Enlace de métodos: Instante en el cual una llamada
a un método es asociada al código que se debe ejecutar.
Enlace estático: en
tiempo de compilación.
Enlace dinámico: en
tiempo de ejecución.
BIBLIOGRÁFICA:
ARTÍCULOS WEB:
aprendeenlinea.udea.edu.co/lms/men_udea/mod/page/view.php?id=19537
https://desarrolloweb.com/manuales/teoria-programacion-orientada-objetos.html
https://es.wikipedia.org/wiki/Programación_orientada_a_objetos
https://rua.ua.es/dspace/bitstream/10045/15993/1/POO-1-Intro-10-11.pdf
http://ferestrepoca.github.io/paradigmas-de-programacion/poo/poo_teoria/index.html






Comentarios
Publicar un comentario