Comunidad de diseño web y desarrollo en internet online

Programa de suma y texto dinamico

Citar            
MensajeEscrito el 27 Ago 2011 10:12 pm
Hola, acabo de hacer un programa que ejecuta una suma, el programa verifica que el resultado sea par o impar y se muestra en un campo de texto dinamico.

Este es el codigo:

Código ActionScript :

var n1:int = 3;
var n2:int = 2;
var n3:int;

n3 = n1 + n2;

if(n3%10==0)
{
Testo.appendText("Es par");
}
else
{
Testo.appendText("Es impar");
}


Funciona perfecto, pero me gustaria hacerlo con POO.

Por ejemplo un metodo que haga la suma, otro metodo que determina si es par o impar, otro que sirva para visualizar en el campo de texto dinamico.

Y mi otra duda es si hay que hacer una clase para operaciones y otra clase principal que instancia un objeto de esa clase y usa los metodos. Y en caso que fuera asi, tendria que hacer la clase operaciones y la clase principal en el mismo cuadro de acciones?

Saludos.

Por Lain0x

12 de clabLevel



 

opera
Citar            
MensajeEscrito el 27 Ago 2011 10:47 pm
Deberías hacer una clase que agrupase las operaciones, sí. Después podrías hacer una clase principal o, simplemente, llamarlas desde un archivo .fla.

Por cierto, has puesto n3%10, cuando sería n3%2 para comprobar si un número es par.

No obstante, yo crearía una clase abstracta que no se pueda instanciar (aunque en Flash no existen como tal) y haría que los métodos de dicha clase fuesen estáticos (de modo que se puedan llamar sin instanciar dicha clase). Un ejemplo sencillo sería algo así:

Código ActionScript :

package {

   public class Operaciones {

      public function Operaciones() {
         throw new Error("La clase Operaciones no debe ser instanciada.");
      }

      public static function suma(numero1:int, numero2:int):int {
         return (numero1+numero2);
      }

      public static function esPar(numero:int):Boolean {
         if(numero%2 == 0){
            return true;
         }else{
            return false;
         }
      }

   }

}


Y después, para utilizarlo:

Código ActionScript :

import Operaciones;

new Operaciones(); // devuelve un error y no crea ninguna instancia :)

Operaciones.suma(4, 3); // devuelve 7

Operaciones.esPar(11); // devuelve false
Operaciones.esPar(8); // devuelve true

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 27 Ago 2011 11:03 pm
Ok, todo eso se hace en el mismo cuadro de acciones cierto, a diferencia de java que se hacen en diferentes secciones.

Por Lain0x

12 de clabLevel



 

opera
Citar            
MensajeEscrito el 27 Ago 2011 11:05 pm
No me quedo muy claro el beneficio de no instanciar.

Por Lain0x

12 de clabLevel



 

opera
Citar            
MensajeEscrito el 28 Ago 2011 01:26 am
Pues como las operaciones sumar() y esPar() no modifican la información de la instancia (simplemente hacen un cálculo y devuelven un resultado), lo lógico es que sean estáticos (vamos, que no sea necesaria una instancia para llamarlos).

Realmente podrías hacer:

Código ActionScript :

var operador:Operaciones = new Operaciones();
operador.esPar(8); // devuelve true

Pero es mucho más natural hacer:

Código ActionScript :

Operaciones.esPar(8); // devuelve true

Por otra parte, como todos los métodos son estáticos, no tendría sentido poder instanciar la clase (porque eso no aportaría nada nuevo), así que por eso la hacemos abstracta (en el caso de ActionScript, lanzamos un error si se intenta instanciar).


Un ejemplo claro de esto es la clase Math. Cuando realizas un redondeo, por ejemplo, tú utilizas:

Código ActionScript :

Math.floor(3.4) // devuelve 3

Podrías hacerlo así también:

Código ActionScript :

var matematicas:Math = new Math();
matematicas.floor(3.4) // devuelve 3

Pero no aportaría nada nuevo al código.

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 28 Ago 2011 01:30 am
Una cosa más: precisamente, cuando en Flash intentas instanciar la clase Math, el programa lanza un error de ejecución en el que pone:

Salida escribió:

TypeError: Error #1076: Math is not a constructor.

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 28 Ago 2011 09:55 pm
Lo resolvi. El problema que me arrojaba era con el "import".

Solo instancio el objeto y llama a la clase operaciones, y funciona perfecto.

Lo imprime en un cuadro de texto dinamico, aunque me gustaria poder usar el "appendText" dentro de una funcion y solo llamarla, pero nose como hacer referencia desde el archivo as al cuadro de texto dinamico. Me quedo asi:

Código ActionScript :

package{
   public class Operaciones{
      public function Operaciones(){
         trace("El objeto fue creado");
      }
      
      public function suma(v1:int, v2:int):int{
         return(v1+v2);
      }
      
      public function espar(v1:int):Boolean{
         if(v1%2==0)
         {
            return true;
         }
         else
         {
            return false
         }
      }
   }
}




Código ActionScript :

var r:Operaciones = new Operaciones();
var r2: int;
var r3:Boolean;

r3 = r.espar(2);

if(r3 ==true)
{
   outText.appendText("Es par");
}
else
{
   outText.appendText("Es impar");
}


Me gustaria usar meter dentro de una funcion ese if, pero no pude.

Por Lain0x

12 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.