logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!

SobreCarga de método no AS3

Colocado por Robson Fernandes na(s) categoria(s): Adobe Flex - AS3, Adobe Flex - Core em 12 1st, 2009 | 1 Comentário

RiaSoftware FlashRiaSoftware Flex

Boa noite pessoal!

Hoje vou falar um pouco sobre Overloading (Sobrecarga) de métodos no AS3.

O que é “SobreCarga de Método”

Segundo o Wikipédia: “ Sobrecarga de método permite a existência de vários métodos de mesmo nome, porém com assinaturas levemente diferentes ou seja variando no número , tipo de argumentos , no valor de retorno e até variáveis diferentes. Ficará a cargo do compilador escolher de acordo com as listas de argumentos os procedimentos ou métodos a serem executados.”

Um exemplo em Java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Soma {
 
  public int Soma(int x, int y) {
    return x+y;
  }
 
  public String Soma(String x, String y) {
    return x+y;
  }
 
  public double Soma(double x, double y) {
    return x+y;
  }
 
}

Porém, infelizmente o ActionScript não possui essa característica
nativamente na sua versão atual, a 3.0.Entretanto, nós podemos simular esta
funcionalidade trabalhando com Namespaces no AS3.
Observem o exemplo abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package
{
 import flash.display.Sprite;
 /**
 * ...
 * @author Robson Fernandes
 */
 public class Main extends Sprite
 {
 
 //É definido uma namespace para cada método
 public namespace metodo1;
 public namespace metodo2;
 
 public function Main():void
 {
 //Invoca método 1
 trace(metodo1::sobreCargaMetodo(1));
 //Invoca método 2
 trace(metodo2::sobreCargaMetodo(1, 2));
 }
 
 //Sobrecarga 1
 metodo1 function sobreCargaMetodo(arg0:Number):String {
 return "Método 1 => args {"+arg0+"}";
 }
 
 //Sobrecarga 2
 metodo2 function sobreCargaMetodo(arg0:Number,arg1:Number):String {
 return "Método 2 => args {"+arg0+","+arg1+"}";
 }
 
 }
 
}

Vejam que os 2 métodos possuem o mesmo nome, porém as assinaturas são diferenciadas.

Caso precise utiliza-los através de um objeto instanciado,
terá que definir métodos para acessar a Namespace utilizada.
Como no exemplo a seguir:

1
2
3
4
5
6
7
8
9
10
11
12
//Retorna Namespace => Metodo1
 public function getNameSpaceMetodo1():Namespace
 {
 return metodo1;
 }
 //Retorna Namespace => Metodo2
 public function getNameSpaceMetodo2():Namespace
 {
 return metodo2;
 }
 
...
1
2
3
4
5
6
7
 var objeto:Main = new Main();
 
 var metodo1:Namespace = objeto.getNameSpaceMetodo1();
 var metodo2:Namespace = objeto.getNameSpaceMetodo2();
 
 trace(objeto.metodo1::sobreCargaMetodo(1));
 trace(objeto.metodo2::sobreCargaMetodo(1, 2));

Obrigado pessoal!.

Abs.
Robson Fernandes.

Veja o post original no blog do autor aqui!  

Robson Fernandes

Escrito por Robson Fernandes @ http://www.riasoftware.com.br/blog/
Saiba mais sobre o autor na sua pagina de perfil
Outros posts do autor:
» PrintDocument – Silverlight 4
» Design com Silverlight 3, criando um botão personalizado.
» Leitor de Feeds no Flex 3

Comentários ( 1 Comentário )
 

[...] existe sobrecarga de métodos em Action Script 3! A título de curiosidade, neste link tem a explicação de como “contornar o problema”, mas infelizmente ainda é bem [...]

Furos na sobrecarga e herança do Flex « Sednablog juntou estes bytes...
Deixe um comentário



Spam Protection by WP-SpamFree

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2795 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com