duduromeroa.com

#Javascript, #interaccion, #jugabilidad, #eventHandlers, #Guayaquil

Javascript para interacción jugable, Orientación a Objetos (Oriented Object Programming)



#javascript #orientacionObjetos #jugabilidad #javascript #html

Aclaración: Contenido para quienes ya comprenden y practican HTML, CSS y JS. Para profundizar en Javascript ir a esta sección o a cualquiera de los libros mostrados abajo en la bibliografía.



El criterio de la programación orientada a objetos (POO)

En toda esta sección intenté explicar a profundidad todo lo relacionado a la programación orientada a objetos desde Javascript (y también porqué ese lenguaje considera, a diferencia de otros, parcialmente ese criterio). En resumen, la POO es gran conjunto de conceptos y sintaxis de código creado por programadores y científicos desde la década de 1950 en EE.UU y Europa. Con ello se buscó definir con claridad cómo un lenguaje de programación debería simular mejor (mediante los datos que le insertamos) las propiedades del mundo real.

Según eso, un lenguaje de programación que establezca esas propiedades en forma de un objeto (como concepto, no como cosa física) sería más eficiente cuando se necesite, por ejemplo, intercambiar, proteger, heredar o alterar las propiedades de uno o varios objetos (contenidos a su vez en clases de objetos) desde el propio lenguaje de programación.

En esta sección relato la influencia de Seymour Papert, Ole-Johan Dahl, Kristen Nygaard y de otros varios científicos al establecer esa necesidad y transformarla en lenguajes de programación orientados a objetos.

  • Dejo acá un artículo muy reciente: The Genesis of Object-Oriented Programming (OOP): A Historical Overview, en cuanto a la historia de la Programación Orientada a Objetos (POO en inglés), escrito por Nenad Stojkovic. La mayoría de textos que refieren a ese tema se hallan en inglés, pero hoy en día todo navegador web permite traducir texto extenso.

Un sencillo ejemplo de creación de un objeto en Javascript (como concepto para recibir y transformar datos, no como un objeto físico real) es, primero, el de crear una clase con propiedades y valores; y luego, empaquetar ese código en un objeto conceptual al que podamos actualizar los valores de las propiedades para cada nuevo contexto de uso.

En Javascript

// Se crea una clase con propiedades y valores
// ABRE OBJETO
class jugador{
// Constructor define nombre de propiedades
constructor(personaje, vidas){
// Se vinculan propiedades con los valores que se insertarán
this.personaje = personaje;
this.vidas = vidas;
}

// Una función, con el papel de un método que ejecuta acciones
mostrarNombre(){
console.log(this.personaje + " ingresó al juego!");
}
// CIERRA OBJETO
}

// UN CONTEXTO DE USO
// Donde cada nuevo objeto tiene insertados nuevos valores
var jugador001 = new jugador("Guayaco224", 3);
jugador001.mostrarNombre();
console.log("Tiene " + jugador001.vidas +  " vidas");

// Se muestra: 
/* Guayaco224 ingresó al juego!
Tiene 3 vidas */

console.log("---");

// OTRO CONTEXTO
var jugador002 = new jugador("Sandrita", 5);
jugador002.mostrarNombre();
console.log("Tiene " + jugador002.vidas +  " vidas");

// Se muestra: 
/* Sandrita ingresó al juego!
Tiene 5 vidas */

En el ejemplo ya mostrado, desde la clase 'jugador' derivarán nuevos objetos en forma de nuevos datos de jugadores, con un valor diferente nombres y vidas. A esa creación de objetos se la conoce como instancia. Luego, los nuevos valores (como nombre y cantidad de vidas) serán anexados a cada nuevo objeto que está obteniendo las propiedades de la clase madre. A esa transferencia de propiedades se le llama herencia.

Gráfico que explica las relaciones entre las clases, las propiedades heredadas en objetos, y los nuevos valores de los objetos instanciados en un lenguaje con criterio orientado a objeetos. Fuente: duduromeroa.com
Instancia y herencia son algunas de las típicas características del criterio de la orientación a objetos en programacion. Fuente: www.duduromeroa.com

Siguiente: Javascript para interacción jugable mediante el DOM (Document Object Model)

Anterior: Manejo o activación de eventos