POO Lección 1: ¿Qué rayos es un paradigma orientado a objetos?

Paradigmas de Programación

Antes de comenzar algo muy común de pensar es de que estamos hablando cuando decimos un “Paradigma de Programación” bueno en realidad es bastante más sencillo de lo que parece, ya que no es más que un estilo de programación, es decir, diferentes maneras de resolver problemas o de hacer cosas, utilizando enfoques de resolución diferentes.

En el día a día es muy común ver que muchos asocian directamente un lenguaje con un paradigma aunque no siempre el lenguaje cumpla especificamente con las bases del paradigma que se lo asocia, pero si que es verdad que hay lenguajes que se adaptan mejor un paradigma que otro y por eso lo clasifican de esa manera.

Por ejemplo:

  • Cuando hablamos de “Haskell” directamente se asocia al Paradigma Funcional.

  • Cuando hablamos de “Smalltalk” lo asociamos al Paradigma Orientado a Objetos.

  • Cuando hablamos de “C” se asocia al Paradigma Imperativo.

  • Etc, etc, etc…

Los paradigmas suelen venir definidos por varias cosas:

  • El modelo de ejecución
  • Si permite tener efectos colaterales o no
  • Por como es la sintaxis de un lenguaje
  • Etc

Los tipos más comunes de la industria:

  • Paradigma Imperativo / Procedural
  • Paradigma Declarativo
  • Paradigma Funcional
  • Paradigma Orientado a Objetos

Muchos de ellos no son autoexcluyentes unos con otros, existen muchos lenguajes que son multiparadigmas:

  • Scala: (Enmarcado por ser Funcional y Orientado a Objetos)

Pero bueno en definitiva cada uno es un mundo diferente y en nuestro caso vamos a analizar el Paradigma Orientado a Objetos, no crean que los engañe simplemente quería dejar una base de paradigmas para que no crean que es el único existente.

¿Qué es el Paradigma Orientado a Objetos?

La programación orientada a objetos es un paradigma basado en agrupar propiedades y su comportamiento relacionado, de un concepto determinado como puede ser una “Vivienda”, “Vehiculo”, a traves de un elemento especial llamado objetos, los cuales son construidos a partir de una “estructura” o “esquema”, definido por el programador, el cuál lo llamamos clases.

Los objetos normalmente no dejan de ser una representación de algo en nuestro mundo (casa, vehiculos, empresas, personas, comida, dinero), aunque también podría ser la representación de algun concepto mas abstracto que no podamos ver o tocar (Miedo, Deseos, etc), pero también veremos que en programación representaremos clases gestoras de cosas raras como por ejemplo: “PersonFactory” que en nuestro mundo todavía no sería un concepto normal de asimilar, pero dejemoslo ahí para otra ocasión, en general buscamos que las clases que utilizamos representen algo en particular que sea útil en nuestro modelo de negocio siendo este el que nos ayuda a llegar al objetivo o fin deseado con nuestro sistema.

Objetos, Clases

Digamos que tenes un gato que se llama Pini. Pini es un objeto, una instancia de la clase Cat.

Cada gato tiene distintos atributos:

  • Nombre
  • Sexo
  • Edad
  • Tamaño
  • Color
  • Comida Favorita

Estos son atributos o propiedades, también más comunmente conocidos como “estados” de la clase.

Además todos los gatos tienen comportamiento similares:

  • Respiran
  • Comen
  • Caminan
  • Duermen
  • Maullan

Estos son métodos, o conocidos en la jerga de programación como “comportamiento” de las clases.

En conjunto, las propiedades y los métodos son miembros y conforman nuestra estructura llamada clase, de las cuáles podemos crear nuestros objetos particulares llamados instancias de la clase.

Ejemplos

Luna, amiga de Oscar, es tambien una instancia de la clase Cat. Tiene los mismos atributos que Oscar en cuanto al “que” posee un “Cat”. La diferencia esta en los valores que toman los atributos: Luna es de sexo femenino, tiene diferente color, peso, etc.

Entonces la clase es un esqueleto o estructura base para crear los objetos, los cuales son instancias concretas de la clase, esto significan que toman este esqueleto y lo rellenan con los atributos necesarios que representen el concepto de la clase, siendo para este caso en particular el concepto de un gato (Luna y Oscar).

### Conclusión

  • Clase: es un concepto genérico que nos da una estructura mediante propiedades y métodos los cuales forman un concepto en particular.

  • Objeto: es algo especifico, es decir, una representación particular de ese concepto generico.

Written on March 1, 2020