

Por vezes, quando estamos sobre pressão, ou menos atentos, esquecemos-nos, ou temos dificuldade em nos lembrarmos das coisas mais básicas.
No caso deste post, venho falar sobre o que representam certos atributos das variáveis que utilizamos no Flex 4 / ActionScript 3.0. Isto é um tema muito importante e temos de ter estes atributos sempre em conta se queremos ter as nossas variáveis acessíveis a classes dentro dos nossos packages ou se queremos restringir as mesmas a só poderem ser acedidas num determinado scope.
Sendo assim, aqui vai uma pequena descrição dos tipos de “accessors” que temos à nossa disposição no Flex 4.
public - Este tipo de atributo faz com que a nossa variável possa ser acedida por qualquer outra classe desde que faça referência à classe que a declara.
Exemplo – Se tivermos uma classe que queira fazer referência a uma variável estática que existe em outra classe, podemos utilizar:
var myString : String = MyEnumClass.MY_VARIABLE;
No caso de querermos aceder a uma variável dentro da classe que pode ir mudando ao longo do tempo (normalmente utilizado quando temos componentes criados por nós no Flex 4):
var mySecondString : String = myClass.myVariable;
private - Este atributo da variável diz-nos que a mesma só pode ser acedida dentro da mesma classe.
Exemplo – Definimos uma variável como private na nossa classe e acedemos à mesma.
private var myVariable : String = “MyVar”;
trace (myVariable);
protected - Este atributo diz-nos que a nossa variável só pode ser acedida pela mesma classe que a cria, por todas as que fazem extends dela.
Exemplo – Definimos uma variável protected numa classse que servirá de base e depois usamo-la na nossa classe que faz extends:
Classe 1 (BaseClass):
protected var myString : String = “myString”;
Classe 2:
Classe2 extends BaseClass
trace(myString);
internal - Este tipo de atributo define a nossa variável como podendo ser acedida pela própria classe que a criar e também por qualquer das classes que se encontram dentro do mesmo package.
Se tentarmos representar as diferentes possibilidades dos atributos das variáveis, cruzando-as com o sítio onde as declaramos, podemos ter uma representação gráfica de mais fácil compreensão.
Podem ver a implementação destes accessors nesta tabela:
| Code placement |
Private |
Internal |
Protected |
Public |
| Same class |
Allow |
Allow |
Allow |
Allow |
| Descendants of class |
Deny |
Allow |
Allow |
Allow |
| Classes in same package |
Deny |
Allow |
Deny |
Allow |
| Other package |
Deny |
Deny |
Deny |
Allow |
Conclusão:
Como podemos ver, se quisermos ter o nosso código muito bem estruturado e os nossos componentes muito bem definidos, temos sempre de ter em conta os atributos que damos às nossas variáveis. Isto porque, a simples definição de uma variável, pode fazer com que estraguem a nossa implementação da classe que pensamos que já estaria bem implementada. Convém sempre perder um certo tempo a pensar, definir, e estruturar todas as variáveis dentro do nosso código! Valem sempre a pena
Esta tabela e mais informação sobre o assunto podem ser encontradas no site da FLEX{er}.
Podem também ler sobre todos os tipos de variáveis no ActionScript 3.0, aqui , na documentação da Adobe.