emilio@emiliograterol.com

blog

Introducción

El día de hoy te voy a hablar acerca de que es la programación orientada a objetos, te hablaré sobre varios términos y definiciones que son importantes que conozcas si eres programador o desarrollador de software.

Ya con esto dicho lo primero, como siempre hago, es darte una definición muy básica y exacta de lo que es la programación orientada a objetos.

¿Qué es la Programación Orientada a Objetos?

Puedo decirte que la programación orientada a objetos es un paradigma o estilo de programación que nos permite desarrollar aplicaciones.

Este estilo como su nombre bien lo indica, se basa en lo que son los objetos y las clases, que vendría siendo como una especie de planos basados en código, mediante el cual podemos representar nuestras aplicaciones, por describirlo de esta forma.

El objetivo principal de este estilo de programación, es poder diseñar piezas de software o funcionalidades en una aplicación de una forma más simple.

Básicamente ese es el objetivo, que sean piezas reutilizables y por supuesto que nos ayuden a reducir la mayor cantidad de errores en el código, que estemos utilizando.

Elementos de la Programación Orientada a Objetos

Ahora quiero hablarte acerca de los elementos que componen un programa orientado a objetos.

Estos elementos los vas a ver en cualquier desarrollo que tenga este estilo de programación.

Un programa orientado a objetos, está compuesto de estos cuatro (4) elementos.

1. El primero son las Clases.

2. El segundo son los Objetos.

3. El tercero son los Métodos.

4. El cuarto son los Atributos.

Estos son los componentes principales, es la arquitectura de lo que es este paradigma.

Así que voy a darte la definición de cada uno de ellos.

¿Que es una Clase?

El primer término del cual te voy a hablar es acerca de que es una Clase.

Digámoslo así, que una clase podemos definirla como una especie de plantilla con la cual podemos representar “algo” en un programa.

Este “algo” que te coloco entre comillas, al que me refiero pueden ser muchas cosas.

Sin embargo, una clase establece de forma muy genérica el comportamiento de un objeto.

También debes entender que las clases son tipos de “datos” que son definidos por nosotros, con el cual podemos modelar los objetos, los atributos y métodos individuales dentro de un programa orientado a objetos.

Ejemplo de una Clase

Para darte un ejemplo más claro de lo que es una clase.

Voy a usar el ejemplo del “Automóvil”.

Puedo decirte que un “Automóvil” es una clase, porque es “algo”. Cumple con la primera condición.

Y también podemos decir que un “Automóvil” define de una forma muy genérica el comportamiento de un objeto.

Cumple con la segunda condición.

Entonces, un “Automóvil” es una clase porque es una especie de plantilla, un plano del cual ya te he estado hablando.

Por supuesto, con este molde podemos hacer que surjan los diferentes objetos que podemos tener dentro de un programa.

¿Qué es un Objeto?

Quiero hablarte acerca de que es un objeto.

Este es otro de los conceptos que es importante que entiendas, si estás estudiando este estilo de programación.

Simplemente un objeto es lo que se define como una instancia de una clase.

Puedo decirte que también, un objeto es una copia idéntica de una clase.

Una de las cosas que nos permite hacer un “objeto” es representar “algo” que sea necesario dentro de un sistema orientado a objetos.

Este “algo” puede ser una persona, un lugar, un objeto valga la redundancia o cualquier elemento que se deba manejar dentro de una aplicación con este paradigma.

Ejemplo de un Objeto

Para darte más claridad acerca de que es un objeto, voy a utilizar el ejemplo del “Automóvil”.

Ten en cuenta que el “Automóvil” es lo que definimos como la Clase.

Los objetos que podríamos tener a partir de esta clase Automóvil, podrían ser las diferentes marcas que existen actualmente.

El Automóvil es la plantilla.

El objeto es la marca en sí, cada marca tiene su comportamiento pero todas a su vez tienen cosas en común.

Por ejemplo, todos los automóviles tienen cuatro (4) ruedas.

* Nissan.
* Jeep.
* Ferrari.

Acá tienes tres (3) ejemplos referenciales.

Este ejemplo es bastante claro, para entender la definición de qué es un objeto.

¿Qué es un Atributo?

Quiero hablarte acerca de que es un atributo, dentro de la programación orientada a objetos.

Un atributo es lo que se conoce como una propiedad o característica de un objeto.

Algo que nos permite hacer un atributo, es poder darle un estado o identidad particular a un objeto.

En pocas palabras, que se pueda distinguir entre los demás objetos.

Ten en cuenta que estos atributos se definen desde la clase, propiamente.

Que como sabrás, es la que contiene la definición inicial del comportamiento que va a tener un objeto en particular.

Entonces, ten en cuenta esto.

Ejemplo de un Atributo

Un ejemplo de lo es un atributo, utilizando el mismo caso del “Automóvil”.

Podemos decir que este objeto tiene diferentes características.

La primera, es que un “Automóvil” tiene el nombre de una marca y un modelo, que son datos importantes.

Un “Automóvil” también tiene una cantidad de puertas definidas como objeto.

También sabrás que un “Automóvil” tiene otras características; como el color, el año de lanzamiento, entre un sin fin de atributos.

Sin embargo, el punto más importante acá es que entiendas que cada uno de estos atributos ayudan a darle una definición “única” a un objeto en específico.

¿Qué es un Método?

Ahora, es momento de hablarte acerca de que es un método dentro de lo que es la programación orientada a objetos.

Un método es lo que se conoce como las funciones o acciones que puede emitir un objeto.

Estas funciones se definen de igual forma, desde la clase al igual que los atributos.

Un método se utiliza principalmente para:

1. Para definir el comportamiento de un objeto.

2. Para la reutilización de funcionalidades, que es parte de los objetivos principales de este estilo de programación.

3. También para el manejo de la información de un objeto en específico.

Con este último me refiero a que, mediante un método se puede devolver información sobre un objeto o actualizar los datos de un objeto en específico.

Ejemplo de un Método

Un ejemplo de lo que es un método, utilizando el mismo caso del “Automóvil”.

Podemos decir que este objeto puede realizar diferentes acciones.

Puede estar encendido o apagado, que son funciones bastante importantes.

Puede acelerar o detenerse que es parte de las acciones principales de este objeto.

También, un método podría ser simplemente sonar la corneta del “Automóvil”.

Estos son varios ejemplos de lo que representa un método, dentro de lo que es este paradigma.

Características de la POO

Ahora, quiero hablarte acerca de las características o lo que se conoce también como los pilares de la programación orientada a objetos.

Cuando me refiero a pilares, es a las diferentes cosas o propiedades que podemos obtener con este paradigma de programación.

Son cuatro (4) los que componen la esencia de lo que es este paradigma.

* El primero es la Encapsulación.

* El segundo es la Abstracción.

* El tercero es la Herencia.

* El cuarto es el Polimorfismo.

Estas son cuatro (4) características que debes conocer para entender aún más este paradigma.

Voy a darte la definición de cada una de ellas.

Característica de la POO: Encapsulación

Ahora, quiero hablarte acerca de lo que es la encapsulación dentro de la programación orientada a objetos.

Este principio es muy simple, se basa en la capacidad que tiene un objeto de contener cierta información, dentro de sí mismo.

También hace referencia a la capacidad que tiene un objeto de exponer, a los demás objetos, solo información seleccionada.

Esto significa, que mediante la encapsulación podemos asegurar la información que contiene un objeto.

La forma en la que lo hace es básicamente ocultando o dando acceso privado a los atributos de una clase, mediante los métodos públicos del propio objeto.

Logrando obviamente con esto, mantener la integridad de los datos que contiene el objeto y evitar el uso indebido de los datos en general.

Ejemplo de Encapsulación

Ahora, para darte un ejemplo de lo que es la encapsulación, dentro de la programación orientada a objetos.

Voy a seguir usando el ejemplo del “Automóvil”.

Podemos decir que este objeto comparte información a través de las luces de los frenos y las luces intermitentes, que indican que se va a hacer un cruce, sea a la izquierda o a la derecha.

Esta información es pública, y es la que este objeto expone a los demás conductores en la vía.

Sin embargo, un “Automóvil” también maneja datos que se relacionan con el propio mecanismo del objeto, como el tipo de carburante o la temperatura del motor.

Esta información no es pública para los demás conductores en la vía, porque es manejada de forma interna, mediante los métodos privados del propio objeto.

Esto al final ayuda a evitar confusiones con los demás conductores.

Característica de la POO: Abstracción

Ahora, voy a hablarte sobre qué es la abstracción dentro de la programación orientada a objetos.

Este término hace referencia a la capacidad que tiene un objeto de ocultar el mecanismo de trabajo de si mismo, osea del propio objeto.

Mediante este concepto se puede acceder e interactuar con un objeto de una forma más simple, mediante métodos y atributos más simplificados.

Esto también se conoce como acceso de alto nivel.

Mediante la abstracción nos podemos concentrar en lo que hace un objeto, en lugar de como lo hace.

Esto trae muchos beneficios, como el poder ocultar las características más complejas que tiene un objeto, sin entender tanto los detalles de cómo fue implementado.

Se dice que la abstracción es una extensión de la encapsulación.

También nos permite enfocarnos en lo que realmente es relevante de un objeto en particular.

Ejemplo de Abstracción

Un ejemplo de lo que es la abstracción dentro de la programación orientada a objetos, y utilizando el mismo caso del “Automóvil”.

Puedo decirte, que para conducir un “Automóvil” no es necesario conocer todos los elementos del motor, ni saber a detalle cómo es el funcionamiento de cada uno de esos componentes.

Esto es porque simplemente para conducir un “Automóvil”, solo debes aprender a utilizar una pequeña “interfaz” de este objeto, que en este caso está compuesta de varias herramientas, como lo son el volante, el freno, el acelerador, las luces intermitentes, entre otros.

Esta “interfaz” de la que te hablo nos permite simplificar el uso del propio objeto en sí, utilizando un acceso de alto nivel, mediante métodos y atributos que están diseñados para cumplir con esta finalidad.

En este caso la abstracción, se traduce o en lo que es la ingeniería que se encuentra oculta dentro del motor del “Automóvil”, que a su vez está oculta para el conductor.

Básicamente, es la forma en la que podemos usar cosas simples para representar la complejidad de un objeto, ocultando muchos detalles innecesarios para el usuario.

Característica de la POO: Herencia

Ahora, voy a hablarte sobre qué es la herencia dentro de la programación orientada a objetos.

Básicamente, es la capacidad que tiene una clase de reutilizar código o características de otras clases.

Esta propiedad también se conoce como reutilización de objetos o reutilización de código.

La forma en la que se utiliza esta característica, es declarando una clase principal también conocida como superclase o clase base, en donde podemos definir nuestros atributos y métodos como normalmente se hace.

Declarando a su vez una o varias clases secundarias también conocidas como clases derivadas o extendidas, que son las que reciben mediante una extensión o herencia los métodos y atributos de la clase principal.

Esto nos permite reutilizar la lógica que puedan tener varios objetos en común, y sobre todo nos ayuda a poder reducir el tiempo de desarrollo.

Ejemplo de Herencia

Un ejemplo de lo que es la herencia dentro de la programación orientada a objetos, y utilizando el mismo caso del “Automóvil”.

Podemos decir que el “Automóvil” es nuestra clase principal, la cual tiene una serie de atributos y métodos estándar que hemos definido.

Como lo son el acelerar, frenar y cruzar, obviamente existen más métodos que puede tener esta clase. En paralelo, también hemos definido dos (2) clases secundarias, que podemos clasificar como los tipos de “automóviles”.

La primera representa el tipo de “Automovil Convertible” y la segunda representa el tipo de “Automovil Camioneta”.

Es importante que entiendas que estas dos (2) clases pueden heredar los tres (3) métodos definidos en la clase principal llamada “Automóvil”.

Tanto un “Convertible” como “Camioneta” pueden acelerar, frenar y cruzar, entre otras cosas.

Sin embargo, cada uno de estos tipos de “automóviles” tienen sus propias características y comportamientos particulares.

Por ejemplo, un “Convertible” puede funcionar sin techo y digamos que la cantidad de asientos puede variar dependiendo del tipo, de dos (2) o cuatro (4) asientos.

En cambio, una “Camioneta” funciona con techo, de igual forma la antidad de asientos puede variar y nos permite transportar mercancía en la parte trasera del vehículo.

Esto es lo que nos permite el principio de herencia, el poder reutilizar las cosas en común que tienen los diferentes objetos y utilizarlas para simplificar el desarrollo de software en general.

Característica de la POO: Polimorfismo

Ahora, voy a hablarte sobre qué es el polimorfismo dentro de la programación orientada a objetos.

Este término hace referencia a la capacidad que tiene un objeto de comportarse de diferentes formas, utilizando una única definición.

Esto significa, que un objeto mediante el polimorfismo puede ser procesado de diferentes maneras y por supuesto puede tener múltiples comportamientos, con un mismo nombre.

Es importante que sepas que esto se puede hacer mediante dos (2) formas.

La primera es usando lo que se conoce como la anulación de métodos, que es el escenario en donde una clase secundaria puede tener un comportamiento diferente a la de su clase principal.

La segunda es mediante la sobrecarga de métodos, en donde los métodos pueden tener el mismo nombre, pero los resultados van a ser diferentes dependiendo de la cantidad de parámetros que estos reciban.

Ejemplo de Polimorfismo

Dandote un ejemplo de lo que es el polimorfismo dentro de la programación orientada a objetos, y usando el mismo caso del “Automóvil” pero ahora desde nuestro rol como “Conductores”.

Es importante que entiendas que si nosotros podemos conducir un “Automóvil” de cuatro (4) puertas, es muy probable que podamos conducir uno de dos (2) puertas o asientos.

También, si podemos conducir un “Automóvil Convertible” es muy probable que podamos conducir una “Camioneta”, por ejemplo. Considerando obviamente el tamaño de ambos vehículos.

Para nosotros es indiferente, si el “Automóvil” tiene un motor de combustión o un motor eléctrico, aunque estos pueden ser completamente diferentes, ambos los podemos conducir sin problemas.

Tampoco es necesario conocer los tipos de frenos que tiene el “Automóvil” para poder realmente conducirlo.

Todo esto es posible, porque los todos “Automoviles” cuentan con una única “interfaz” o reglas en común que nos permiten conducir cualquier tipo.

Si giras la llave, el “Auto” se va a encender.

Si giras el volante, el “Auto” va a girar.

Si presionas un pedal, el “Auto” va a acelerar o frenar, indiferentemente de la acción.

En otras palabras, puedo decirte que el polimorfismo en este ejemplo es la capacidad de conducir diferentes “automóviles”, que usan los mismos controles para manejarlos.

Ya que todos los automóviles son polimórficos, y por supuesto este principio nos ayuda a reducir la necesidad de duplicar el código en el desarrollo de software.

Lenguajes de Programación Orientados a Objetos

Es importante que sepas cuales son los lenguajes de programación orientados a objetos, los más conocidos obviamente.

Así que, acá te los presento.

Tenemos:

* C/C++.

* Java.

* C Sharp.

* PHP.

* JavaScript.

* Python.

* Ruby.

Todos estos son lenguajes de programación orientados a objetos, algunos más que otros, algunos son 100% orientados a objetos, y otros están fusionados por decirlo así con otros paradigmas o estilos.

En su mayoría, todos estos lenguajes de programación bastante modernos, nos permiten llevar a cabo todos los principios y conceptos teóricos de los cuales te he estado hablando.

¿Por qué aprender a usar la Programación Orientada a Objetos?

Ya para finalizar, quiero hablarte acerca de las razones por las cuales deberías aprender a trabajar con la programación orientada a objetos.

Existen varias razones, pero para no extenderme tanto en esta ocasión te diré las que para son las 3 razones más importantes que debes considerar, si realmente quieres aprender acerca de este paradigma.

1. Código Reutilizable

La primera razón por la cual deberías aprender acerca de la programación orientada a objetos, es porque nos ayuda en la reutilización de código principalmente, y esto a su vez genera organización y estructura en un proyecto o aplicación.

Esto por supuesto, nos trae más beneficios como lo son el poder identificar, disminuir y corregir errores en el código al momento de realizar una depuración, de una forma más simple.

Todo esto contribuye a la productividad y facilita el ahorro de tiempo en el desarrollo de una aplicación a largo plazo.

2. Seguro

Otra cosa que también debo resaltar de este paradigma es que contribuyen enormemente a la seguridad de las aplicaciones.

Esto es porque mediante los conceptos de la encapsulación y la abstracción podemos controlar o evitar el acceso a los datos de las aplicaciones.

Desde luego, todo esto es posible porque los datos de los objetos se pueden acceder mediante propiedades y métodos privados.

Sin olvidarnos que esto a su vez, hace que el mantenimiento al software sea mucho más fácil.

3. Flexible

Te diría que la mejor de las razones, es que la programación orientada a objetos es un paradigma de programación bastante flexible y esto te va a permitir realizar una gran variedad de desarrollos de software.

Utilizando los diferentes principios que hemos visto como el polimorfismo y la herencia, que permite agregar funcionalidades que optimizan el desarrollo.

Esto hace que las implementaciones de nuevas características a una aplicación se hagan de una forma más simple e independiente.

Conclusión

Esto ha sido todo por hoy, ya en los próximos posts te estaré hablando más acerca de otros temas relacionados a Desarrollo de Software.

Espero que esta información te haya sido de ayuda, Compártela. Si tienes alguna duda, puedes escribirla en la sección de comentarios o enviarmela por cualquiera de mis redes sociales.

Recuerda que si quieres saber más acerca de Programación, bases de datos SQL y temas relacionados con RPA, puedes pasar por mi canal de Youtube, en donde subo contenido de forma constante y vamos más al detalle para complementar muy bien todos estos temas.

Espero verte por allí. Ten en cuenta que tu suscripción me será de gran ayuda!

Esto es todo por hoy, te envío un saludo y nos vemos en una próxima.

Web: https://www.emiliograterol.com/
Youtube: https://www.youtube.com/c/EmilioGraterol/
Facebook: https://facebook.com/graterollz/
Twitter: https://twitter.com/graterolz/
Instagram: https://www.instagram.com/graterollz/
LinkedIn: https://linkedin.com/in/graterolz/