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

Entradas populares de este blog

PROTOTIPOS Y PROCESO UNIFICADO

Ingeniería de requerimientos