Programación orientada a objetos

17

La programación orientada a objetos (POO) es un paradigma moderno de programación que  diseña la estructura de un sistema alrededor de un modelo de objetos. En términos generales, un objeto es la representación de cualquier actor o hecho del mundo real y se representa mediante atributos y métodos.

Con esta abstracción del modelado de software podremos abordar la soluciones de sistemas de una forma mucho más organizada y contaremos con muchos beneficios en términos de reutilización de código, legibilidad, mantenimiento y escalabilidad. La POO difiere de la programación estructurada en la forma de modelar los sistemas basada en secuencias y funciones. Para explicar este paradigma, revisemos sus conceptos y características fundamentales, a continuación.

Conceptos fundamentales

Objeto

El concepto de objeto en programación orientada a objetos se refiere a la representación abstracta de cualquier actor de la vida real, mediante un componente de software. Cada uno de estos objetos de la vida real, cuenta con un estado y presenta un comportamiento, los cuales se representan con atributos y métodos, respectivamente. Así mismo, cada uno de los objetos del sistema, guarda una relación con el resto. Se dice que un objeto es la instancia de una clase.

Clase

Funciona como un molde para crear objetos individuales de un mismo tipo, define los atributos y métodos que describirán su estado y comportamiento. Es decir, permite la instancia de objetos de cierto tipo a partir de sus definiciones.

Atributo

Se refiere a las características que describen y definen a una clase, al tomar valores definen el estado de un objeto. Cada atributo cuenta con un identificador y un tipo.

Método

Los métodos, definen el comportamiento posible de los objetos de una clase. Son la implementación de un algoritmo y se ejecuta mediante una llamada o un mensaje. Pueden modificar el valor de los atributos o a su vez, llamar a otros métodos.

Conceptos adicionales

Evento

Es un suceso dentro de un sistema. Se refiere a un mensaje enviado por un objeto a otro, que contiene contexto y parámetros. El sistema se encargará de manejar y entregar el mensaje de forma pertinente al objeto adecuado.

Mensaje

Es la comunicación que se da de un objeto a otros, dentro de un sistema, como petición de ejecutar cierto método con ciertos parámetros.

Estado interno

Representada por un atributo privado, describe el estado interno de un objeto, de acuerdo a sus posibles valores. El estado interno, no serán visible directamente para los clientes que manejen instancias de clases con atributos de este tipo, solo podrán leerlos y modificarlos mediante los métodos que expongan dichas clases.

Características

Abstracción

Se refiere a que todos y cada uno de los objetos del sistema pueden comunicarse con el resto de los objetos y trabajar en conjunto con ellos, sin revelar la implementación propia de sus métodos o atributos. Este concepto nos permitirá diseñar y modelar nuestro modelo de objetos de forma modular y jerárquica.

Herencia

En la programación orientada a objetos las clases se relacionan jerárquicamente entre sí, con el fin de modularizar los atributos y métodos en común de varias clases en una sola súper clase. Lo cual nos permite definir sub tipos o clases especializadas a partir de ellas (heredar), sin tener que implementar nuevamente su comportamiento. Dependiendo del lenguaje de programación, se podrá heredar de una o de varias clases.

Encapsulamiento

El concepto de encapsulamiento se refiere a reunir todas las características y comportamientos de una entidad e implementarlas en un mismo nivel de abstracción, en orden de permitir la herencia en clases particulares a partir de una clase más general. Este principio nos permite diseñar sistemas mucho más estructurados y con alta cohesión.

Polimorfismo

Como su nombre lo dice, es la capacidad de un objeto de tomar diferentes formas. Es decir, un objeto que cambia de tipo durante la ejecución y cumple con el comportamiento esperado.

Ocultamiento

Este principio nos indica que todos los objetos deben aislar sus atributos de la modificación directa por otros objetos y que deberán exponer una interfaz de acceso para que otros objetos puedan interactuar con ellos. Es decir, los atributos de cada objeto solo serán modificados por sus propios métodos. Este principio nos permite diseñar sistemas un acoplamiento mucho más bajo.

Características adicionales

Modularidad

Es una técnica que permite dividir una aplicación o sistema en módulos independientes y específicos a un comportamiento o funcionalidad en particular. Como se revisó en el principio de Ocultamiento, cada módulo permitirá a otros, su uso sin dar a conocer el detalle de la implementación de su comportamiento.

Recolección de basura

Es una técnica mediante la cual el ambiente de ejecución destruirá automáticamente los objetos que queden sin ninguna referencia a ellos. De tal modo que no nos tendremos que preocupar por asignar y liberar la memoria necesaria para nuestros objetos en el código fuente.


https://docs.oracle.com/javase/tutorial/java/concepts/

https://msdn.microsoft.com/es-es/library/bb972232.aspx

https://searchmicroservices.techtarget.com/definition/object-oriented-programming-OOP

https://es.wikibooks.org/wiki/Programaci%C3%B3n_Orientada_a_Objetos

Comments

comments