Como ya se sabe, la programación es muy amplia y existen varios “estilos de programar”. Es a estos estilos que se les denomina paradigmas de programación.
Es la teoría que suministra la base y el modelo para resolver problemas. Es decir, un paradigma no es más que un conjunto de técnicas, métodos o estrategias que se seguirán para dar solución a un problema.
“Para que exista un paradigma, debe existir un problema”
Actualmente, existe un infinidad de paradigmas. Sin embargo, existen** cuatro paradigmas principales:**
El paradigma más famoso es la POO o Programación Orientada a Objetos debido a su gran relevancia en el mundo laboral. Luego, en segundo lugar se puede clasificar a la programación estructurada porque es el paradigma con el que la gran mayoría empieza a programar.
En un inicio, este paradigma resulta práctico y útil (especialmente porque empezamos a programar). Sin embargo, cuando estamos trabajando con proyectos más grandes y/o complejos, este método no resulta práctica. Esto se debe a que abría que mover y modificar varias líneas de código para implementar una nueva funcionalidad.
Los principales problemas que tiene este paradigma son:
Es aquí cuando llega el paradigma de la Programación Orientada a Objetos (a la cual nos referiremos como POO en adelante) para simplificar estos problemas y hacer el código más sencillo y fácil de mantener y programar.
Este paradigma proviene de la filosofía de pensar e interpretar la realidad y/o lo observable como objetos. Es así como pasamos de tener un código secuencial (de arriba hacia abajo) a un sistema en el que tenemos los elementos/objetos separados y comunicándose entre ellos.
Las principales ventajas que trae este paradigma (además de ahorrarnos los errores de la programación estructurada) son:
Una clase será la plantilla que se utilizará como base para la creación de objetos con atributos y métodos similares.
Además, se le conocerá como instanciar al proceso de crear objetos a partir de una clase. Además, a cada objeto creado se le puede referir como una instancia de la clase.
Los objetos son aquellos que tienen propiedades o características (atributos) y comportamiento (métodos), pueden ser físico o conceptuales.
Las clases y objetos se dividirán en dos partes:
1. Abstracción
La abstracción es cuando separamos los datos de un objeto para generar la clase. Es decir, cuando se definen los atributos y métodos de una clase.
2. Encapsulamiento
Es hacer que un dato sea inviolable, inalterable cuando se le asigne un modificador de acceso (ej en Java. public, protected, default y private), No se trata de ocultar el dato sino también de protegerlo. El modificador de acceso define el alcance y visibilidad de un miembro de clase.
3. Polimorfismo
Es construir métodos con el mismo nombre pero con diferente comportamiento. Es otras palabras, dar la misma orden a varios objetos para que respondan de diferentes formas.
4. Herencia
La herencia nos permite crear nuevas clases a partir de otras, se basa en modelos y conceptos de la vida real. Es aquí cuando surge la jerarquía de padre e hijo. Es decir, las clases hijas heredarán los atributos y métodos de la clase Padre.