Programación Orientada a Objetos (POO)

La Programación Orientada a Objetos ( POO u OOP en adelante ) es uno de los paradigmas de la programación. Parte de la programación estructurada (a la que engloba), con la gran diferencia de que nos permite modelar problemas no estructurados. La OOP no sustituye a ninguna metodología ni lenguaje de programación anterior, es decir, todos los programas que se realizan en POO se pueden realizar igualmente mediante programación estructurada, aunque si cabe destacar que con dicho paradigma el desarrollo de muchas herramientas es bastante más sencillo, como son las interfaces gráficas de usuario ( Windows, X-Window,...).


El uso de la OOP hoy día es muy variado, aplícandose tanto en Sistemas Operativos (S.O.), Inteligencia Artificial (I.A.),"Aplicaciones Empresariales",SBGDOO (no muy utilizado ya que hay muchos problemas)...

Principales características de la OOP:

A) Clase: Es el núcleo de la POO. Se define como un nuevo tipo de dato que se utiliza para crear objetos de ese tipo.
B) Metaclases: Son clases cuyos ejemplos son a su vez clases. "Java" tiene esta carácterística pero no es aplicable a todos los lenguajes OOP, como pasa con C++.
C) Objetos: Un objeto es una instancia o ejemplo de una clase. En "java", estos son creados con el operador new (es creado en tiempo de ejecución como es obvio). Cada objeto tiene un estado definido por sus atributos (salvo los objetos stateless ya que estos no tienen propiedades) y un comportamiento (definido por sus métodos).
D) Identidad: Aquella propiedad que distingue al objeto de los demás (salvo objetos stateless).
E) Abstraccion: Capacidad de conceptualizar el problema en forma de clases (tipos) y variables pertenecientes a estos tipos (instancias). Hacemos clasificaciones jerárquicas.
F) Encapsulación: Capacidad de aunar dentro de una clase las propiedades y métodos para trabajar con sus datos internos. Con esta capacidad, conseguimos reutilización.
G) Herencia: Capacidad de derivar de una clase genérica, clases diferentes que hereden las propiedades y métodos de su clase antecesora.La herencia nos da reusabilidad de código.En "Java", no existe herencia múltiple, siempre herencia simple.
H) Polimorfismo: Capacidad para que varias clases derivadas de una antecesora utilicen el mismo método de forma diferente. Otra aplicación sería jugar con los comportamientos de los objetos. El polimorfismo es coseguido graciasa la herencia y a la ligadura dinámica. Una de las ventajas del polimorfismo es que se puede hacer uso de una solicitud de una operación sin conocer el método que debe ser llamado. Aquí podemos hacer uso de las interfaces, donde decimos el comportamiento que va a tener un objeto en un instante dado.
I) Persistencia: Es la propiedad por la cual la existencia de un objeto transciende tanto en el tiempo como en el espacio.
j) Otros conceptos son: Modularidad, tipificado,...

Ventajas que proporciona la OOP frente a otros lenguajes de programación:

A) Uniformidad: La representación de los objetos lleva implícita tanto el análisis como el diseño y codificación de los mismos.
B) Comprensión: Los datos que componen los objetos y los procedimientos que los manipulan, están agrupados en clases, que se corresponden con las estructuras de información que el programa trata.
C) Flexibilidad: Al relacionar los métodos y propiedades, cualquier cambio que se realice sobre ellos quedará reflejado automáticamente en cualquier lugar donde estos datos aparezcan.
D) Reutilización: La noción de objeto permite que programas que traten las mismas estructuras de datos reutilicen las definiciones de objetos empleadas en otros programas e incluso los métodos que los manipulan. De esta forma, el desarrollo de un programa puede llegar a ser una simple combinación de objetos ya definidos donde éstos están relacionados de una manera particular.
En la programación OOP, los componentes (objetos) se conocen, cosa que no pasa con la AOP.

No hay comentarios: