jump to navigation

Orientación a Objetos en JavaScript Miércoles, 11 febrero 2009

Posted by israelof in Implementación.
add a comment

Aunque el título de este post pueda indicar que vamos a hablar de cómo implementar toda la metodología de Orientación a Objetos en JavaScript, no es así. Ya existe multitud de lugares donde hay gran cantidad de literatura que hablan de este tema.

Lo que pretendemos, es mostrar el modo que hemos utilizado nosotros para implementar la orientación a objetos, y es que, si buscáis un poco, veréis como existen diferentes formas de llavarlo a cabo.

El siguiente código, a modo de ejemplo, muestra bastante bien como lo hemos implementado:

Clase_A = function() {
	//Atributos
	this.atributo_publico = "atributo_publico";
	var atributo_privado = "atributo_privado";

	//Métodos
	this.metodo_publico_1 = function() {
		alert(atributo_privado);
	}
	this.metodo_publico_2 = function() {
		metodo_privado_1();
	}
	this.metodo_publico_3 = function() {
		var objeto_b = new Clase_B();
		objeto_b.metodo_publico_1("Llamada a método publico de otro objeto");
	}
	metodo_privado_1 = function() {
		alert("metodo_privado_1");
	}
}

Clase_B = function() {
	//Metodos
	this.metodo_publico_1 = function(txt) {
		alert(txt);
	}
}

objeto_a = new Clase_A();
alert(objeto_a.atributo_publico);
alert(objeto_a.atributo_privado);	//Undefined
objeto_a.metodo_publico_1();
objeto_a.metodo_publico_2();
objeto_a.metodo_publico_3();
objeto_a.metodo_privado_1();		//Error

La idea de utilizar esta forma de sintaxis para la implementación, es para conseguir que se parezca lo más posible a otros lenguajes de Orientacion a Objetos, se pretende que la lectura del código sea la más similar y sencilla posible.

Anuncios

Copiar y pegar Miércoles, 4 febrero 2009

Posted by israelof in Implementación.
1 comment so far

Después de unas largas vacaciones de playa y montaña, tocaba volver a escribir en el blog, y esta vez, con uno de los post que denominamos “duros” y es que hoy toca hablar de implementación.

Vamos a hablar de cómo desarrollar las funciones de copiar y pegar. Para ello vamos a mostrar el código javascript de las funciones que hemos implementado para realizar estos cometidos.

Función para copiar:

function copy(txt) {
   if (window.clipboardData) {
      window.clipboardData.clearData();
      window.clipboardData.setData("Text", txt);
   }
   else if (window.netscape) {
      try {
         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
      }
      catch (e) {
         alert("Unprivileged scripts cannot access Cut/Copy/Paste programatically for security reasons.\n"+
                "You need set 'signed.applets.codebase_principal_support=true' at about:config'");
         return false;
      }
      var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
      if (!clip)
         return;
      var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
      if (!trans)
         return;
      trans.addDataFlavor('text/unicode');
      var str = new Object();
      var len = new Object();
      var str = Components.classes['@mozilla.org/supports-tring;1'].createInstance(Components.interfaces.nsISupportsString);
      var copytext = txt;
      str.data = copytext;
      trans.setTransferData("text/unicode",str,copytext.length*2);
      var clipid = Components.interfaces.nsIClipboard;
      if (!clip)
         return false;
      clip.setData(trans,null,clipid.kGlobalClipboard);
   }
}

Función para pegar:

function paste() {
   if(window.clipboardData) {
      txt = window.clipboardData.getData('Text');
      return txt;
   }
   else if (window.netscape) {
      try {
         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
      }
      catch (e) {
         alert("Unprivileged scripts cannot access Cut/Copy/Paste programatically for security reasons.\n"+
                "You need set 'signed.applets.codebase_principal_support=true' at about:config'");
         return false;
      }
      var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard);
      if (!clip)
         return false;
      var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
      if (!trans)
         return false;
      trans.addDataFlavor("text/unicode");
      clip.getData(trans, clip.kGlobalClipboard);
      var str = new Object();
      var strLength = new Object();
      trans.getTransferData("text/unicode", str, strLength);
      if (str)
         str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
      if (str)
         pastetext = str.data.substring(0, strLength.value / 2);
      txt = pastetext;
      return txt;
   }
}

Como podemos ver, en Internet Explorer a penas existen impedimentos de seguridad para poder acceder al portapapeles. Cuando ejecutemos estas funciones, el navegador nos preguntará si permitimos el acceso al portapeles y nada más.

En cambio, en Firefox la seguridad está más controlada y deberemos modificar la propia configuracion del navegador, si queremos permitir la acción de estas funciones. Aún así, cada vez que las ejecutemos nos preguntará si estamos realmente seguros de que queremos realizar esa acción. Queda así patente que los chicos de Mozilla han apostado por la seguridad.

Superadas las 2000 descargas Viernes, 26 diciembre 2008

Posted by israelof in General.
add a comment

post_descargas

Revisando las estadísticas de SourceForge.net, portal que aloja proyectos de Software Libre, hemos comprobado que hemos superado las 2000 descargas.

Cuando nos embarcamos en este proyecto, quién nos iba a decir que tanta gente se iba a interesar. Damos las gracias a todos aquellos que se lo han descargado y lo han llegado a probar.

La empresa privada se interesa por WebDevStudio Jueves, 18 diciembre 2008

Posted by israelof in General.
Tags:
1 comment so far

Parece que el interés por nuestro proyecto ha llegado hasta la empresa privada. Hace unos meses los chicos de Trilex Network Inc se interesaron en nuestro proyecto, y es que esta empresa canadiense, tiene entre sus objetivos el desarrollo y colaboración de soluciones basadas en Software Libre.

Actualmente esta empresa, que parece que está en pleno lanzamiento, está contactando con proyectos libres, estableciendo acuerdos de colaboración y desarrollo, y ofreciendo soluciones “free software” a sus clientes. Si alguien quiere colaborar con ellos no dudéis en poneros en contacto.

Nacen gemelos y mellizos Lunes, 15 diciembre 2008

Posted by israelof in General.
Tags: , ,
3 comments

Y nosotros que pensábamos que este proyecto no se iba a conocer más que por compañeros y familiares. Pues nos confundimos, y es que parece que están naciendo gemelos y mellizos. Buscando por la red, hemos tenido la grata sopresa, de encontrarnos con páginas que están basadas en nuestro proyecto.

Algunas de ellas son prácticamente una instalación de lo nuestro, con algunos toques de “maquillaje”.

post_clones1

post_clones2

 Pero otras, incluso han incorporado algunas funcionalidades interesantes.

post_clones3

¿Quién no podría pensar que en un futuro, no muy lejano, todos colaborásemos? ¿Se creará una comunidad entorno a este proyecto? El tiempo lo dirá.