Foros del Web » Creando para Internet » Flash y Actionscript »

Polimorfismo.........

Estas en el tema de Polimorfismo......... en el foro de Flash y Actionscript en Foros del Web. Una de las caracteristicas de la programacion orientada a objeto es el polimorfismo.(Que es el polimorfismo.?) El polimorfismo (con respecto a funciones) es la capacidad ...
  #1 (permalink)  
Antiguo 20/06/2003, 08:18
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 22 años
Puntos: 1
Polimorfismo.........

Una de las caracteristicas de la programacion orientada a objeto es el polimorfismo.(Que es el polimorfismo.?)
El polimorfismo (con respecto a funciones) es la capacidad de poder declarar varias funciones con el mismo nombre (si con el mismo nombre), lo que las diferencia una de la otra es la cantidad de parametros que toman.

Ej ->
function calculo(){
trace("tu calculo es -> 199. ");
}
Si llamo a calculo tendre : tu calculo es -> 199

ademas en la misma linea declaro
function calculo(x,y){
var res = x+y;
trace("tu calculo es -> "+ res);
}
Si llamo a calculo(120,210) deberia obtener : tu calculo es -> 330

ademas en la misma linea declaro
function calculo(x,y,z){
var res = (x+y)*z;
trace("tu calculo es -> "+ res);
}
Si llamo a calculo(50,60,2) deberia obtener : tu calculo es -> 220

Como ven es una caracteristica muy funcional..!

Pero si hago esto en ActionScript.
Me toma siempre la ultima funcion declarada sin importar la cantidad de parametros que le pase...! Es decir calculo(). Me entrega : tu calculo es -> 0

Osea hasta aqui llego la OOP de ActionScript...


Algun comentario... propuesta...solucion...critica...insulto...!


Saludos
__________________
http://www.flotdesign.dk/
  #2 (permalink)  
Antiguo 20/06/2003, 13:38
Avatar de hucasys  
Fecha de Ingreso: noviembre-2001
Ubicación: Bastante buena...
Mensajes: 816
Antigüedad: 23 años
Puntos: 3
Oye Pulento.......no hablas inglés?, si es así, quizás le mandas un mail a Colin Moock, puede que sepa al respecto , no?

por si no lo conoces......www.moock.org

salúos ;)
__________________
La manera en que resuelves el problema, es el problema.
ROBERT FRIPP
  #3 (permalink)  
Antiguo 20/06/2003, 16:04
Avatar de juwe  
Fecha de Ingreso: abril-2001
Ubicación: Guadalupe Inn
Mensajes: 622
Antigüedad: 23 años, 7 meses
Puntos: 0
__________________
blog.juwestudio
  #4 (permalink)  
Antiguo 20/06/2003, 16:22
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 11 meses
Puntos: 7
Pulento:
No se puede solucionar como si fuera lenguaje C, y tampoco es necesario llamar a Colin Moock. Cada función que es llamada, crea un objeto que contiene los argumentos que han sido pasados a la función. Este es el objeto arguments. Luego entonces, no es necesario declarar varias funciones para realizar las tareas que propones, puesto que en una sola, mientras conozcamos la cantidad de argumentos podremos hacerlo.

Tus funciones quedarían así:

Código:
function calculo(){
   switch(arguments.length){
      case 0:
         trace("tu calculo es -> 199");
         break;
      case 2:
         var res = arguments[0] + arguments[1];	
         trace("tu calculo es -> "+ res);
         break;
      case 3:
         var res = (arguments[0] + arguments[1]) * arguments[2];
         trace("tu calculo es -> "+ res);
         break;
      }
}
Saludos.
  #5 (permalink)  
Antiguo 20/06/2003, 16:23
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 10 meses
Puntos: 193
Veamos!!
Yo no se mucho de OOP la neta! pero se me ocurre hacer algo asi
Siguiendo tu ejemplo de sumar y Multiplicar podemos hacer un objeto con un par de Prototype´s uno para sumar y otro para restar y podras pasarle el Numero de parametros que quieras.

Esto esta Muy sencillo:

Código:
function calcula(c) {
	this.val = c.split(",");
}
calcula.prototype.suma = function() {
	re = 0;
	for (i=0; i<this.val.length; i++) {
		res += Number(this.val[i]);
	}
	return res;
};
calcula.prototype.multiplica = function() {
	res = 1;
	for (i=0; i<this.val.length; i++) {
		res = res*Number(this.val[i]);
	}
	return res;
};
trace("Sumando = "+new calcula("10,10,10,10").suma());
trace("Multiplicando "+new calcula("10,10,10,10").multiplica());
Ahora con esto solo necesitas crear un Nuevo Objeto con los valores y asignarle que es lo que quieres hacer "Sumar" o "Multiplicar" y pasarle los valores como un String "valor,valor,valor".

Funciona Bien!

Ahora como comente antes NO se mucho de OOP pero esto seria una Solucion factible.

Saludos!!
  #6 (permalink)  
Antiguo 20/06/2003, 22:51
 
Fecha de Ingreso: abril-2003
Ubicación: México
Mensajes: 116
Antigüedad: 21 años, 6 meses
Puntos: 0
Que es eso de OOP??
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 23:30.