Faça Sua Pesquisa.

sexta-feira, 24 de fevereiro de 2012

As3 e Orientação a Objetos >> Escopo de variáveis e funções


Quando programamos utilizando classes no AS3 devemos definir o escopo de acesso das variáveis e funções de nossas classes. O escopo de acesso de uma variável ou função determina onde e como eles serão acessados.
A primeira parte ao definirmos tal escopo é dizer se a variável ou função será public, protected ou private:
public: Visível para referências em todos os lugares.
protected: Visível para referências na mesma classe e em classes filhas.
private: Visível para referências na mesma classe.
Agora ao invés de escrevermos apenas:
var minhaVariavel:int;
function executaAlgo():void{}
Teríamos:
public var minhaVariavel:int;
private function executaAlgo():void{}
Note que antes da declaração da variável e do método definimos seu escopo de acesso como sendo public e private respectivamente.
Ainda na definição do escopo de acesso de variáveis e funções, podemos defini-los como sendo "static". Quando uma variável ou função é "static" ela passa a pertencer a classe e não mais a uma instancia de um objeto da classe. Logo para acessalos usamos o nome da classe e não mais uma variável contendo uma instancia da classe.
Suponha que você tenha uma classe Moto com a variável tanque e com a função anda() sendo "static", Veja o exemplo:
var motoQualquer:Moto = new Moto();
Moto.tanque;//acessa a variável static tanque
motoQualquer.tanque;//lança um erro pois agora a variável tanque pertence a classe e deve ser acessada através do nome da classe
Moto.anda();//acessa a função static anda()
motoQualquer.anda();//lança um erro pois agora a função anda() pertence a classe e deve ser acessada através do nome da classe
Definir variáveis ou funções como sendo "static" é util para quando precisamos pegar uma variável ou chamar uma função de uma classe onde não temos como recuperar a instancia da mesma... Por exemplo, quando de uma classe de nosso projeto precisamos chamar uma variável da classe principal...
Exemplo:
//DEFINIÇÃO DA CLASSE PRINCIPAL DO PROJETO
package {
    import telas.Tela1Class;
    import telas.Tela2Class;
    public class classePrincial{
        public static var tela1:Tela1Class;
        public static var tela2:Tela2Class;
        public function classePrincial(){
            tela1 = new Tela1Class();
            tela2 = new Tela2Class();
        }
    }
}

//DEFINIÇÃO DE UMA CLASSE DO PROJETO QUE PRECISA ACESSAR UMA VARIAVEL DA CLASSE PRINCIPAL
package telas{
    public class Tela1Class{
        public function Tela1Class(){
            classePrincipal.tela2.toString();//acessa a variável tela2 contida na classe principal
        }
    }
}

0 comentários:

Postar um comentário

TecCodigos Copyright © 2011 | Template created by O Pregador | Powered by Blogger