¿Qué es la programación orientada a objetos?

El modelo de programación estructurado es con el que se suele aprender a programar, pero si bien es cierto no podemos aplicar este método a todos los proyectos y problemas que queremos resolver. Es por ello que la programación orientada a objetos es otra opción, es la más mencionada hoy en día.

Definición

Se le denomina programación orientada objetos (POO) al paradigma que se basa en modelado y creación de varios objetos que poseen características y funciones. Dichos objetos se pueden conectar entre ellos para crear una aplicación y si algo llegase a fallar, sabríamos cuál de los objetos nos está generando problemas y solucionarlo.

Además, podemos ir añadiendo nuevos objetos o datos y funciones a los objetos ya existentes sin necesidad de empezar todo desde cero.

Un ejemplo sería, un usuario en la plataforma de Codealo tiene su nombre, apellido, edad, el id del usuario, correo, entre otros detalles y adicional cada usuario tiene unas funciones, como iniciar sesión, comentar, dar like, subir una foto, adquirir un curso, etc.

Volviendo al tema, en el POO se crean objetos con características y funciones. A las características de estos objetos se le denominan atributos y a las funciones se les denomina métodos.

A su vez los objetos pertenecen a una clase, que representan entidades que quieres manejar en tu programa. En el caso de nuestro ejemplo serían los usuarios, cursos, membresías, facturas, proyecto, entre otros.

Clases, objetos e instancias

▶️Una clases es una plantilla o molde que le da estructura de cómo van a ser los objetos, estos tendrán una serie de atributos y métodos.

Siguiendo el ejemplo, una clase para representar a los usuarios sería Persona, que tendría unos atributos como Nombre, Apellido o Edad ; y unas funciones que se le llaman métodos como, IniciarSesion() , CerrarSesion() o SubirImagen().

▶️Para darle uso a la clase tenemos que instanciarla. Instanciar es el proceso de crear un objeto de esa clase. Esto quiere decir que en el ejemplo, el objeto ya tiene un Nombre, Apellido y Edad, además puede iniciar sesión, cerrar sesión y subir una imagen, este objeto ya puede ser utilizado en el programa.

▶️Los objetos también son conocidos como instancias, son los que se van generando a partir de una clase. En nuestro ejemplo, de la clase Persona podemos crear, varios usuarios con diferentes nombres, apellidos y edades, con las mismas posibilidades de realizar dichas funciones pero no todos las van a realizar al mismo tiempo. Podemos tener a Manuel Rodríguez de 25 años, Carolina Jiménez de 34 años, Jesús Mejías de 18 años, y así seguir generando objetos.

Pilares de la programación orientada a objetos

La POO se basa en 4 pilares que debes tener en cuenta para poder manejar eficientemente las clases y objetos. Es importante conocerlos bien porque los implementarás en cualquier momento si utilizas un lenguaje orientado a objetos.

Encapsulamiento

Significa que todos los datos (atributos) referentes a un objeto queden dentro de éste y la forma de acceder a ellos es usando algún atributo que la clase proporcione. En el caso de los usuarios tenemos toda su información (nombre, apellido y edad) y cada información es diferente le pertenece a cada usuario en específico.

Así que si tenemos el nombre de la persona a la que queremos buscar, se puede acceder utilizado la propiedad Nombre que define la clase que representa a los usuarios. Lo ideal sería mantener un orden de toda esta información, para acceder a ella sin ningún problema.

Las ventajas que tiene el encapsulamiento es simplificar la programación y la posibilidad de reutilizar el código.

🟠 Cada objeto que se instancia tiene sus propios datos y sus propios métodos, está aislado de los demás objetos.

Abstracción

La abstracción esta relacionada con el encapsulamiento.

Este término se refiere a que la clase debe representar las características de la entidad hacia el mundo exterior, pero ocultando la complejidad. Es decir, cada objeto instanciado tiene sus atributos y métodos, tu puedes elegir que atributos y que métodos deseas mostrar al mundo exterior, tal cual el término te permite abstraer esas características que deseas mostrar. El resto de los procesos pueden quedar dentro sin ser mostrados.

Las ventajas que tiene la abstracción es aislar los cambios que se harán en un futuro y mejora el mantenimiento a largo plazo.

🟠 Selección de características relevantes del objeto que se quieran mostrar al mundo exterior.

Herencia

En POO significa que una clase obtiene las mismas características de la primera y se le pueden añadir otras nuevas o modificar los que se hayan heredado.

Lo mejor de este pilar es que la ventaja es no repetir el código, lo que acelera el desarrollo de aplicación, programa o problema que estemos resolviendo es ese momento.

A la clase de la que se hereda se le denomina clase base, y a la clase que hereda de ésta se le llama clase derivada.

🟠 La clase derivada (clase nueva) hereda atributos y métodos de la clase base. Se pueden modificar los rasgos heredados y añadir nuevos.

Polimorfismo

El polimorfismo en POO, se refiere a que si tenemos dos clases derivadas de la misma clase base, aunque tengan un método heredado éste puede comportarse de forma diferente en cada una de ellas pero podemos usarla de manera intercambiable.

Esto se verá reflejado en el resultado de cada objeto al haber realizado cualquier función, es decir, los objetos pertenecientes a cada clase derivada, a pesar de tener rasgos en común pueden usarse de manera distinta, sin tener que saber a cuál clase pertenecen para poder hacerlo.

Las ventajas del polimorfismo nos ayuda a simplificar la programación, evitando usar muchos condicionales a la hora de tomar decisiones.

🟠 El polimorfismo nos permite utilizar objetos de diferentes clases derivadas de una misma clase base, de forma diferente a pesar de tener métodos en común.

Si tienes duda puedes preguntar por la cuenta de Instagram @Codealo vía DM y recuerda que tenemos disponible la Membresía Pro y el Curso de Fundamentos de programación con JavaScript.

Fuente:

José Manuel Alarcón (26 de julio de 2021); Los conceptos fundamentales sobre Programación Orientada Objetos explicados de manera simple; CampusMVP.net

¿Qué es la programación orientada a objetos?; Ed.team

Programación orientada a objetos, OOP; ComputerWeekly.es

Eury Rodríguez; Que Es La Programación Orientada A Objetos POO; ArticulosVirtuales.com

João Henrique (10 de noviembre del 2020); POO: ¿Qué es la programación orientada a objetos?; AluraCursos.com

Miriam Martínes Canelo (02 de noviembre de 2020); ¿Qué es la Programación Orientada a Objetos?; Profile.es