La Programación Orientada a Objetos, también llamada POO por sus siglas, se define como un paradigma de programación con el cual se innova la manera en la que se consiguen los resultados. Los objetos se usan a forma de metáfora para imitar las entidades reales que tiene el negocio a modelar.
La gran mayoría de los objetos prediseñados que tienen los lenguajes de programación en la actualidad posibilitan agrupar a estos en librerías o bibliotecas, pero una alta cantidad de estos lenguajes también dan al usuario la opción de crear sus bibliotecas propias. Esta programación se basa en diversas técnicas del sexenio las cuales son: cohesión, herencia, polimorfismo, abstracción, encapsulamiento y acoplamiento.
La utilidad de esta programación se hizo popular a principios de los años 1990. Actualmente hay una enorme variedad de lenguajes de programación que pueden soportar la orientación a objetos.
Características de la Programación Orientada a Objetos
Encapsulamiento
Permite agrupar cada elemento que se considere formar parte de un mismo nivel de abstracción y una misma entidad, esto permite elevar la cohesión de los elementos del sistema.
Abstracción
Denota las características principales de un objeto en el cual los comportamientos se capturan. Todo objeto de un sistema se utiliza como ejemplo de un agente abstracto que puede hacer un trabajo, cambiar o informar su estado y tener comunicación con otros objetos en el mismo sistema sin dar a conocer la forma en la cual las características son implementadas.
Las funciones, los procesos y los métodos pueden abstraerse, necesitando diversas técnicas para ampliar esa abstracción. Con este proceso es posible escoger las características importantes en un conjunto y saber cuales son los comportamientos comunes que definirán tipos de entidades nuevos en el mundo real. La abstracción es importante en el proceso de diseño y análisis orientado a objetos porque permite crear un conjunto de clases que enseñan el problema o la realidad a tratar.
Herencia
Las clases no se aíslan, sino que tienen relación entre ellas, creando una jerarquía de clasificación. Los objetos heredan el comportamiento y las propiedades de cada clase a la que forman parte. La herencia facilita y organista el encapsulamiento y el polimorfismo, haciendo que los objetos sean creados y definidos como tipos especializados de objetos que ya existen. Estos comparten y extienden su comportamiento sin tener que implementarlo de nuevo. Normalmente se hace al agrupar objetos en clases y estos a su vez presentan un comportamiento en común.
Polimorfismo
Comportamientos distintos que se asocian a diferentes objetos pueden compartir un mismo nombre. Cuando son llamados por el mismo, se usa el comportamiento que corresponde al objeto utilizado. Las colecciones y referencias de objetos pueden tener objetos de diversos tipos. Invocar un comportamiento en una referencia generará el correcto comportamiento para el tipo real del objeto al que se hace la referencia.
Principio de ocultación
Todo objeto se encuentra lejos del exterior como un módulo natural y cada clase de objeto denota una interfaz con otros que informan la manera en la que se interactúa con los objetos de la clase. El aislamiento cuida las propiedades de un objeto frente a su modificación por alguien que no pueda acceder a las mismas, únicamente los mismos métodos internos que tiene el objeto pueden hacerlo. Esto impide que otros objetos modifiquen el estado interno de uno de forma inesperada, sustrayendo interacciones inesperadas y efectos secundarios.
Modularidad
El modularidad es la propiedad con la que se puede subdividir a una aplicación en secciones de menor tamaño. Cada una de estas debe ser independiente de la aplicación general y de las demás partes. Estos módulos pueden compilarse por separado, pero se conectan a otros.
Recolección de basura
Recolectar basura es la técnica con la que el entorno de objetos destruye de forma automática y desvincula la memoria que se asocia a los objetos que no tienen referencia a ellos. El entorno asigna la memoria cuando se crea un objeto nuevo y se libera cuando no está en uso.