Menu

Qué es la Programación Orientada a Objetos

Qué es la Programación Orientada a Objetos

La Programación Orientada a Objetos (POO) es un paradigma de programación, esto es, un modelo o un estilo de programación que proporciona unas guías acerca de cómo trabajar con él y que está basado en el concepto de clases y objetos. Este tipo de programación se emplea para estructurar un programa de software en piezas simples y reutilizables de planos de código (clases) para crear instancias individuales de objetos.

Históricamente han ido surgiendo distintos paradigmas de programación. Por un lado, los lenguajes secuenciales como COBOL o procedimentales como Basic o C, se enfocan más en la lógica que en los datos. Por otro lado, otros más modernos como Java, C# y Python, usan paradigmas para definir los programas, siendo la POO la más popular.

Con el paradigma de POO lo que se busca es dejar de centrarse en la lógica pura de los programas, para comenzar a pensar en objetos, lo que forma la base de dicho paradigma. Esto ayuda bastante en sistemas grandes, pues en lugar de pensar en funciones, se piensa en las relaciones o interacciones de los distintos elementos del sistema.

Un programador diseña un programa de software organizando piezas de información y comportamientos relacionados en una plantilla denominada clase. Después, se crean objetos individuales a partir de la plantilla de clase. Todo el programa de software se ejecuta haciendo que diversos objetos interactúen entre sí para crear un programa mayor.

Por qué la Programación Orientada a Objetos

La POO permite que el código sea reutilizable, organizado y sencillo de mantener. Y es que sigue el principio de desarrollo de software empleado por muchos programadores DRY (Don’t Repeat Yourself), para no duplicar el código y crear programas eficientes. Asimismo, previene el acceso no deseado a los datos o la exposición de código propietario a través de la encapsulación y la abstracción.

Clases, objetos e instancias

Resumiendo bastante, para crear POO se hacen clases y luego se crean objetos a partir de dichas clases, que constituyen el modelo a partir del que se estructuran los datos y los comportamientos. Y es que quizá el concepto más importante sea distinguir entre clase y objeto.

Una clase es una plantilla, que define de modo genérico cómo serán los objetos de un determinado tipo. Por ejemplo, una clase para representar a animales puede denominarse ‘animal’ y disponer de una serie de atributos, como ‘nombre’ o ‘edad’ (que habitualmente son propiedades), y una serie con los comportamientos que estos pueden tener, como caminar o comer, y que a su vez se implementan como métodos de la clase (funciones).

Un ejemplo sencillo de un objeto, podría ser un animal. Un animal tiene una edad, por lo que se crea un nuevo atributo de ‘edad’, y, además, puede envejecer, por lo que se define un nuevo método. Datos y lógica. Esto es lo que se define en muchos programas como la definición de una clase, que es la definición global y genérica de muchos objetos.

Con la clase pueden crearse instancias de un objeto, cada uno de ellos con sus atributos definidos independientemente. Con esto se puede crear un gato llamado Pepe, con 5 años de edad, y otro animal, este tipo perro y llamado Lucho, con una de edad de 3 años. Los dos están definidos por la clase animal, pero son dos instancias diferentes. Así, llamar a sus métodos puede tener resultados distintos. Los dos comparten la lógica, pero cada uno tiene su estado de manera independiente.

Todo esto son herramientas que ayudan a escribir un código mejor, más limpio y reutilizable.

4 principios de la Programación Orientada a Objetos

Hay cuatro principios de la POO.

La encapsulación

La encapsulación presenta toda la información importante de un objeto dentro del mismo y solo expone la información elegida al mundo exterior.

Esta propiedad permite asegurar que la información de un objeto esté oculta para el mundo exterior, agrupando en una clase las características o atributos que tienen un acceso privado, y los comportamientos o métodos que cuenta con un acceso público.

La encapsulación de cada objeto es responsable tanto de su información y de su estado. El único modo en la que esta se puede modificar es a través los propios métodos del objeto. De esta manera, los atributos internos de un objeto son ser inaccesibles desde fuera, pudiéndose modificar sólo llamando a las funciones correspondientes. Así se consigue mantener el estado a salvo de usos indebidos o que puedan resultar inesperados.

Para explicar la encapsulación usaremos un coche de ejemplo. El coche comparte información pública mediante las luces de freno o intermitentes para indicar los giros (interfaz pública). Por contra, la interfaz interna, el mecanismo propulsor del coche, está oculto bajo el capó. Al conducir un automóvil es necesario indicar a otros conductores los movimientos, pero no exponer datos privados sobre el tipo de combustible o la temperatura del motor, ya que son muchos datos, lo que confundiría a los demás conductores.

La abstracción

Otro de los principios de la Programación Orientada a Objetos es la abstracción, que se produce cuando el usuario interactúa solo con los atributos y métodos seleccionados de un objeto, usando herramientas simplificadas de alto nivel para acceder a un objeto complejo.

En la POO, los programas suelen ser muy grandes y los objetos se comunican bastante entre sí. De este modo, la abstracción facilita el mantenimiento de un código de gran tamaño, donde pueden surgir distintos cambios con el paso del tiempo.

Así, la abstracción está basada en utilizar cosas simples para representar la complejidad. Los objetos y las clases representan código subyacente, ocultando los detalles complejos al usuario. Por ende, se trata de una extensión de la encapsulación. Continuando con el ejemplo anterior, no es necesario que conozcas todos los detalles sobre cómo funciona el motor de un coche para poder conducirlo.

La herencia

La herencia define relaciones jerárquicas entre clases, de modo que atributos y métodos comunes puedan ser reutilizados. Las clases principales extienden atributos y comportamientos a las clases secundarias.Mediante la definición en una clase de los atributos y comportamientos básicos, pueden crearse clases secundarias, ampliando la funcionalidad de la clase principal y añadiendo atributos y comportamientos extra. Es una de las claves de la Programación Orientada a Objetos.

Siguiendo el ejemplo de los animales, puede emplearse una única clase de animal y añadir un atributo de tipo de animal que especifique el tipo de animal. Los distintos tipos de animales requerirán diferentes métodos, por ejemplo, los reptiles deben poder poner huevos y los peces nadar. Incluso si los animales disponen de un método en común, como moverse, la implementación requeriría muchas declaraciones “si” para garantizar el comportamiento de movimiento idóneo. Por ejemplo, las ranas saltan, mientras que las serpientes se deslizan. El principio de herencia permite solucionar dicho problema.

El polimorfismo

El polimorfismo reside en diseñar objetos para compartir comportamientos, lo que permite procesar objetos de distintos modos. Es la capacidad de presentar la misma interfaz para distintas maneras subyacentes o tipos de datos. Al usar la herencia, los objetos pueden anular los comportamientos principales compartidos, con comportamientos secundarios específicos. El polimorfismo permite que el mismo método ejecute distintos comportamientos de dos modos: anulación de método y sobrecarga de método.

Beneficios de Programación Orientada a Objetos

●     Reutilización del código.

●     Convierte cosas complejas en estructuras simples reproducibles.

●     Evita la duplicación de código.

●  Permite trabajar en equipo gracias al encapsulamiento, puesto que minimiza la posibilidad de duplicar funciones cuando distintas personas trabajan sobre un mismo objeto al mismo tiempo.

●    Al estar la clase bien estructurada permite la corrección de errores en diversos lugares del código.

●   Protege la información mediante la encapsulación, pues solo se puede acceder a los datos del objeto mediante propiedades y métodos privados.

●     La abstracción nos permite construir sistemas más complejos y de un modo más sencillo y organizado.

Hoy en día, la POO es el paradigma que más se usa para diseñar aplicaciones y programas informáticos. Sus ventajas son evidentes, especialmente cuando se necesita resolver retos de programación complejos. Además, permite una mejor estructura de datos y reutilización del código, lo que facilita el ahorro de tiempo a largo plazo.

Ahora bien, para ello se necesita pensar bien en la estructura del programa, planificar al inicio de la codificación, además de analizar los requisitos en clases simples y reutilizables que pueden usarse para diseñar instancias de objetos.

Y tú, ¿usas la Programación Orientada a Objetos en tu día a día? Si tienes algún tipo de dudas, el equipo de profesionales de Intelequia estará encantado de resolvértela.


¡Escríbenos!

 
Posts relacionados
¿Cuándo usar BDD VS TDD? Diferencias y Casos de uso
Publicado por Sergio Darias Pérez  |  19 enero 2024

Descubre las diferencias entre BDD y TDD, cómo estos enfoques de desarrollo de software mejoran la eficiencia en cada proyecto y cuando debes usarlos

Leer más
¿Qué es y para qué sirve un TDD o Test Driven Development?
Publicado por Sergio Darias Pérez  |  16 febrero 2023

En este post te explicamos en que consiste el enfoque de TDD o Test Driven Development durante el ciclo de vida del software y cuáles son sus ventajas

Leer más
Descubriendo Extensiones Únicas para Visual Studio Code: Rest Client
Publicado por Héctor García Delgado  |  30 agosto 2022

Cómo probar y trabajar con una API web desde Visual Studio Code gracias a Rest Client. En este post te contamos como funciona paso a paso 😉

Leer más