El paradigma de la programación orientada a objetos
Cuando desarrollamos aplicaciones o programas, transformamos un modelo del mundo real al mundo digital. En el mundo real interactuamos con seres vivos y cosas inanimadas. Cada uno de ellos tiene características y comportamientos que lo definen y que nos permite entender como interactúan entre sí.
Es por ello que el mundo de la programación giró y definió el paradigma de la POO (Programación Orientada a Objetos) y por esta razón la mayoría de los lenguajes de programación actuales (no podría garantizar que todos, aunque creo que deben ser muy pocos los que no) soportan o simplemente sólo trabajan orientado a objetos.
En formaciones o entrenamientos que he dictado, cuando hablamos de POO, al inicio resulta un poco complicado hacer la abstracción del mundo real, para ayudar un poco en ello, vamos a tomar del mundo real un elemento y lo convertiremos en un modelo de programación.
Cuando decimos que tenemos un modelo en digital, hablamos en POO de una clase, y cuando hablamos de un integrante de ese modelo nos estamos refiriendo a un objeto (o instancia de esa clase).
Vamos a tomar a los animales (elemento del mundo real) y llevemos lo al mundo digital.
Empecemos con las características más simples:
- Especie
- Tamaño
- Hábitat
Eso en el mundo digital serán propiedades o atributos de la clase.
Ahora hablemos de los comportamientos, podemos decir que los animales:
- Se alimentan
- Se mueven
En el mundo digital y hablando en POO, estos puntos los denominamos métodos de clase
Entonces podemos ya definir una clase llamada Animal que seria algo como esto:
Clase Animal {
// Características o Propiedades
Especie
Tamaño
Hábitat
// Podemos agregar tanta propiedades como sea necesario./* Comportamientos o métodos */
Alimentación() {
} Movimiento() {
}
}
Lo que estamos viendo arriba es un pseudocódigo o pseudodefinición, que puede ser llevado a un lenguaje de programación que implemento POO como C#, PHP o Javascript.
Ahora veamos una instancia, podemos decir que el perro es un animal, es un hecho que sabemos, entonces validemos la abstracción de la clase que hicimos:
El perro tiene una especie, si es Canis lupus familiaris, pero en de lugar ello digamos que es mamífero (espero me disculpen los expertos en zoología por esta adecuación que hemos hecho 😃) Su tamaño, en general es mediano. El hábitat donde convive es terrestre.
Ahora vamos con sus comportamientos o métodos: la alimentación del perro es generalmente carnívora. El perro para moverse camina.
Definimos un objeto de la clase Animal, a partir del modelo que construimos.
Hagamos una nueva validación, ahora la instancia de la clase Animal va a ser el tiburón. En especie podemos indicar que es un pez, su tamaño es muy grande y su hábitat de convivencia es el mar.
Sus comportamientos, el tiburón al igual que el perro, es carnívoro, pero a diferencia del perro, el tiburón nada en lugar de caminar.
Hemos hecho una nueva validación de nuestra clase y conseguimos enmarcar 2 animales tan diferentes mediante las mismas características (propiedades) y comportamientos (métodos).
Así es la POO, este ejemplo simple es muestra de lo poderoso que puede ser entender y aprender a modelar como clases, los elementos del mundo real.
Para finalizar hagamos algo de código, transformemos nuestra definición en pseudocódigo de la clase animal en un lenguaje de programación, para ello usemos Javascript.
class Animal {
constructor(especie, tamano, habitat) {
this.especie = especie;
this.tamano = tamano;
this.habitat = habitat;
} alimentacion() {
console.log("Aqui definimos como se alimenta el animal");
} movimiento() {
console.log("En este método definimos como se mueve el animal");
}
}
Ejemplo simple de modelado desde el mundo real al mundo digital
Espero que este pequeño ejemplo les ayude a clarificar y mejorar el entendimiento de la Programación Orientada a Objetos.