Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Consulta sobre POO en javascript

Estas en el tema de Consulta sobre POO en javascript en el foro de Javascript en Foros del Web. Buenas andaba con una duda sobre el uso correcto de Programación orientada a Objetos en Javascript. Viendo algunos tutoriales vi que generan y instancian el ...
  #1 (permalink)  
Antiguo 09/05/2013, 13:44
 
Fecha de Ingreso: octubre-2010
Mensajes: 73
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta Consulta sobre POO en javascript

Buenas andaba con una duda sobre el uso correcto de Programación orientada a Objetos en Javascript.

Viendo algunos tutoriales vi que generan y instancian el objeto de la siguiente manera:

Código:
var objeto1 = new Object();
objeto1.var1 = 1;

var objeto2 = new Object();
objeto2.var2 = 2;

objeto1.hago_un_alert = 
    function () {
       document.write(this.var1 + 5); 
	   this.var1 = 8;
	   return 
    };

document.write(objeto1.var1, objeto2.var2);

objeto1.hago_un_alert();
Y otros:

Código:
    var Auto= function() {
        /* */
    };

    Auto.prototype = {
        encender: function() {
            /* */
        },
        detener: function() {
           /* */
        }
    };

    var miAuto = new Auto();
    miAuto .encender();
    miAuto .detener();
Cual seria la mejor o correcta forma de hacerlo?
__________________
Página Principal: http://www.almightysystem.com.ar/

Última edición por Onsterion; 09/05/2013 a las 13:58
  #2 (permalink)  
Antiguo 09/05/2013, 14:17
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: Consulta sobre POO en javascript

...haber, en el primer ejemplo, lo que estas haciendo es crear un objeto genérico, al que luego le definís propiedades y métodos y nada mas...

...el segundo ejemplo, es la forma en que se "emplea" OOP en Javascript. En Javascript no existen clases, y tampoco mucho de los conceptos presentas en la OOP, entonces en realidad no existe la Programación Orientada a Objetos en Javascript, sino mas bien seria una Programación Orientadas a Prototipos, donde gracias a prototype, se puede crear objetos a partir de otros objetos y emular propiedades como herencia, private, etc.
  #3 (permalink)  
Antiguo 09/05/2013, 17:36
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Consulta sobre POO en javascript

Pues yo creo que javascript es el lenguaje orientado a objetos más puro que existe, porque absolutamente todo son objetos: Enteros, cadenas, arrays, booleanos, incluso las funciones son objetos.
Sólo hay dos tipos de datos que no son objetos, NULL y UNDEFINED.
Los prototipos son objetos: son la forma que tiene javascript de representar objetos. El problema es que normalmente el que sabe ha aprendido POO con java o algún otro lenguaje basado en clases, le cuesta mucho adaptarse a la POO de javascript, porque intenta simular POO con clases y sus conceptos principales (herencia, polimorfismo, ocultación, etc) tal y como se hace en Java.

En este enlace http://www.jlabstudio.com/webgl/2012...en-javascript/ hago una introducción a POO en javascript, aunque soy consciente de que no es la mejor, porque usando prototype no se puede declarar métodos ni atributos privados. Pero por el contrario, es la que menos memoria usa, por lo que me era ideal para hacer minijuegos, ya que hay pocos objetos diferentes, pero muchísimas instancias de algunos de esos objetos).

Última edición por marlanga; 09/05/2013 a las 17:44
  #4 (permalink)  
Antiguo 09/05/2013, 20:50
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: Consulta sobre POO en javascript

Cita:
Iniciado por marlanga Ver Mensaje
Pues yo creo que javascript es el lenguaje orientado a objetos más puro que existe, porque absolutamente todo son objetos
...el lenguaje orientado a objetos más puro que existe????...

...es verdad que en Javascript todo es un objeto...pero, el paradigma de la Programación Orientada a Objetos implica mucho mas que la existencia de objetos...

...si vamos a hablar de lenguajes de programación orientados a objetos "puros", entre los mas reconocidos podría mencionarte a Smalltalk, Simula, Eiffel, etc. y sin dudar, Javascript no entra en esta categoría...

... también podemos hablar de lenguajes de programación orientados a objetos "híbridos", como C++ o Java, donde Javascript tampoco entra...

...y porque Javascript no entra dentro de la clasificación de Lenguajes de Programación Orientados a Objetos Puros e Híbridos?...

... básicamente, y explicándolo muy resumidamente, porque podría extenderme horas hablando de este tema, la OOP, se basa en la existencia de cuatro conceptos o pilares...existencia de Clases, de Objetos, de Herencia y de Interfaces.

...En Javascript no existe el concepto de Clases, ya que es un lenguaje basado en Prototipos, y esto ya rompe la ecuación que establece lo que un lenguaje debe presentar para ser considerado OOP, y ademas exiten otros conceptos de la OOP que no estan presentes en Javascript(pero que si puede emular), por lo tanto no podemos decir que es un lenguaje que se encuadre en el paradigma de la OOP, y mucho menos decir "el lenguaje orientado a objetos más puro que existe"...

...desde que fue introducido por Netscape ya hace unos cuantos años atrás, hasta el día de hoy, Javascript ha evolucionado impresionantemente, al punto de emular el paradigma de la OOP, o poder aplicar patrones de diseño de software como el MVC, y hasta el punto de ir mas allá del cliente, y poder trabajar del lado del servidor, cosa que años atrás era impensado esperar algo así de Javascript...

...evidentemente ha demostrado ser un lenguaje muy potente, por muchos años ha sido muy desprestigiado, pero de ahí, a decir que es el "el lenguaje orientado a objetos más puro que existe" es un verdadero disparate...
  #5 (permalink)  
Antiguo 10/05/2013, 03:41
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Consulta sobre POO en javascript

¿Qué paradigma de POO no se puede cumplir con JavaScript? Lo que otros lenguajes denominan Clase, en JavaScript es Prototipo.
Que yo conozca, no hay otro lenguaje donde casi todo sean objetos.

Javascript es considerado un lenguaje POO en todas partes, que yo sepa.

No quiero hacer un estéril debate, pero que yo sepa, los pilares de POO no son los que nombras. Son:
-Abstracción (JavaScript lo permite, como casi todos los lenguajes).
-Encapsulamiento (JavaScript lo permite, con los llamados closures).
-Herencia (Javascript lo permite, mediante prototipos).
-Polimorfismo (JavaScript lo permite, aunque para la sobrecarga de métodos, el programador se lo tiene que currar más).

Así pues, JavaScript es un lenguaje POO y está reconocido como tal en todas las páginas donde se listan lenguajes POO.
  #6 (permalink)  
Antiguo 10/05/2013, 06:14
 
Fecha de Ingreso: octubre-2010
Mensajes: 73
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Consulta sobre POO en javascript

No se olviden de Python entre lenguajes orientados a objetos :P.
__________________
Página Principal: http://www.almightysystem.com.ar/
  #7 (permalink)  
Antiguo 10/05/2013, 11:31
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años
Puntos: 343
Respuesta: Consulta sobre POO en javascript

Cita:
Iniciado por ipraetoriux Ver Mensaje
... básicamente, y explicándolo muy resumidamente, porque podría extenderme horas hablando de este tema, la OOP, se basa en la existencia de cuatro conceptos o pilares...existencia de Clases, de Objetos, de Herencia y de Interfaces.
[citation needed]

OOP = *Object* Oriented Programming

No necesitás clases, herencia ni interfaces explícitas. Cualquier lenguaje que te provea de abstracciones que encapsulen estado y comportamiento alcanza y sobra para programar con objetos.

PD: En JS no todo es un objeto, ni siquiera todos los tipos de datos.
PD2: No necesitás empezar cada parrafo con puntos suspensivos :/
__________________
blog | @aijoona
  #8 (permalink)  
Antiguo 10/05/2013, 17:26
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Consulta sobre POO en javascript

Cita:
Iniciado por Aijoona Ver Mensaje
[citation needed]
PD: En JS no todo es un objeto, ni siquiera todos los tipos de datos.
¿Qué tipo de dato no es un objeto en javascript?
  #9 (permalink)  
Antiguo 10/05/2013, 18:44
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Consulta sobre POO en javascript

Cita:
Iniciado por marlanga Ver Mensaje
¿Qué tipo de dato no es un objeto en javascript?
Por ejemplo hay objetos boleanos, number, string pero su tipo es object
Pero por otra parte estan los tipos primitivos boolean, number, string

Cuando utilizamos a los valores primitivos como objetos javascript los convierte a objetos

Tambien hace lo contrario, usamos un objeto como un valor primitivo en este caso javascript hace lo correspondiente

Por ejemplo usando los constructores como funciones(sin operador new) puedes obtener el valor primitivo tambien lo puedes obtener con el metodo valueOf


Saludos
  #10 (permalink)  
Antiguo 20/05/2013, 06:04
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: Consulta sobre POO en javascript

...noto que hablan de con mucho liviandad sobre OOP, si bien en Javascript casi todo es un objeto, para ser considerado un Lenguaje de Programación Orientado a Objetos "PURO", le falta mucho, pero eso no implica, que no se pueda aplicar o emular muchos de los conceptos de OOP...

Cita:
Aijoona : "PD2: No necesitas empezar cada párrafo con puntos suspensivos :/"
...gracias por tu consejo, pero me gusta escribir así, si no te gusta, problema tuyo...
  #11 (permalink)  
Antiguo 20/05/2013, 07:30
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años
Puntos: 343
Respuesta: Consulta sobre POO en javascript

Yo noto que hablás con mucha livianidad al dar definiciones. Te invito a sostener la afirmación que haces y que cite anteriormente con algún tipo de referencia y/o citación.

Si tenés ganas de leer, tomate el tiempo y lee este artículo que se explaya bastante en el tema:

http://wcook.blogspot.com.ar/2012/07...ed-modern.html
__________________
blog | @aijoona

Etiquetas: objetos, oop, poo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:59.