Você está aqui: ActionScript ::: Dicas de Estudo e Anotações ::: Modificadores

Aprenda a usar o modificador (atributo) static para modificar variáveis e métodos de uma classe

Quantidade de visualizações: 7954 vezes


O modificador (atributo em ActionScript) static é usado para especificar que um método ou variável pertence à uma classe e não aos objetos dessa classe. Em outras palavras, podemos acessar métodos, constantes e variáveis marcadas como static em uma classe sem a necessidade de construir uma instância dessa classe.

Tome por exemplo a classe Math. Todos os métodos, variáveis e constantes públicas são marcadas como static. Isso permite que usemos código como o seguinte:
var valor:Number = Math.ceil(45.6);
Veja que usamos o nome da classe e o método que desejamos chamar. Vamos escrever um trecho de código exemplificando isso. Comece criando a classe a seguir:
package{
  public class UtilidadesString{

    // método static que remove os espaços
    // antes e depois de uma string
    public static function trim(str:String):String{
      return str.replace(/(^\s+)|(\s+$)/g, ""); 
    }    
 
  }
}
Salve esta classe como "UtilidadesString.as" e veja como usá-la em um programa Flex:
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  applicationComplete="iniciar()">
  
  <mx:Script>
    <![CDATA[
      import mx.controls.Alert;      

      public function iniciar():void{
        var frase:String = "   Tenho espaços no " +
          "início e fim.    ";

        // vamos remover os espaços
        frase = UtilidadesString.trim(frase);        
 
        Alert.show("#" + frase + "#");
      }
    ]]>
  </mx:Script>

</mx:Application>
Como você pode ver, o método trim da classe UtilidadesString é marcado como static:
public static function trim(str:String):String{
  return str.replace(/(^\s+)|(\s+$)/g, ""); 
}
Isso permitiu que ele pudesse ser chamado na aplicação Flex sem a necessidade de se construir uma instância da classe UtilidadesString. Tudo que fizemos foi usar o nome da classe e o nome do método:
frase = UtilidadesString.trim(frase);
Vejamos agora um exemplo usando uma variável marcada como static. Crie a seguinte classe:
package{
  public class Aviao{

    // variável marcada como static
    public static var quantidade:int;

    // construtor da classe   
    public function Aviao(){
      quantidade++;
    } 

  }
}
Salve esta classe como "Aviao.as" e analise-a cuidadosamente. Perceba que temos uma variável chamada quantidade do tipo inteiro e marcada como static. Isso quer dizer que a variável pertence à classe Aviao e não às suas instâncias. Observe ainda que esta variável é incrementada todas as vezes que o construtor da classe é chamado. Veja agora como usar esta classe em um programa Flex:
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  applicationComplete="iniciar()">
  
  <mx:Script>
    <![CDATA[
      import mx.controls.Alert;      

      public function iniciar():void{
        // cria instâncias da classe avião        
        var aviao1:Aviao = new Aviao(); 
        var aviao2:Aviao = new Aviao();
        var aviao3:Aviao = new Aviao();

        // obtém a quantidade de aviões criados
        var quant:int = Aviao.quantidade;

        Alert.show(quant + " aviões foram criados.");
      }
    ]]>
  </mx:Script>

</mx:Application>
Quando você executar este programa verá a seguinte mensagem:
3 aviões foram criados.
Isso aconteceu porque criamos três instâncias da classe Aviao e, como era de se esperar, a cada construção de uma instância, o valor da variável é incrementado. Finalmente nós acessamos seu valor usando o nome da classe:
var quant:int = Aviao.quantidade;
Quer saber o que aconteceria se tentássemos acessar a variável quantidade a partir de uma instância da classe?
var quant:int = aviao1.quantidade;
Em ActionScript 3.0 teríamos a seguinte mensagem de erro de compilação:
Error: Access of possibly undefined property
quantidade through a reference with static 
type Aviao.

  var quant:int = aviao1.quantidade;
A mensagem nos diz que não é possível acessar uma variável marcada como static a partir de referências a objetos da classe.

Por fim, saiba que não é possível acessar variáveis, constantes e métodos não static a partir de um método marcado como static. Isso faz sentido. Se o método pertence à classe e não às suas instâncias e poderá ser chamado sem que nenhuma instância da classe seja criada, é razoável supor que, ao chamar ou acessar membros de instância, o ambiente de compilação ou execução emita mensagens de erro. Veja o que acontece tentando compilar um programa Flex que faz uso da seguinte classe:
package{
  public class Aviao{

    // variável não é static
    private var marca:String;

    public static function umMetodo():void{
      // tenta acessar uma variável não
      // static a partir de um método static
      marca = "Fox57";
    }
 
  }
}
Em ActionScript 3.0 teremos a seguinte mensagem de erro de compilação:
Error: Access of undefined property marca.

marca = "Fox57";
^
Esta mensagem de erro não ajuda muito. Tudo que o compilador nos diz é que "houve uma tentativa de acessar uma variável não definida". O mais certo seria "Não é possível acessar dados não static a partir de métodos static". Mas tudo bem. Um dia o pessoal da Adobe chega lá.

Link para compartilhar na Internet ou com seus amigos:

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Alvenaria: Técnicas construtivas

Durante o levantamento de alvenaria, para atenuar as tensões que ficarão concentradas nos contornos dos vãos de portas e janelas devido à descontinuidade da parede, é necessária a execução de elementos estruturais específicos. O elemento localizado acima dos vãos é denominado de:

A) Marco.

B) Caixilho.

C) Esquadria.

D) Verga.

E) Contramarco.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte trecho de código JavaScript

var valores = new Array(2, 4);

Este código

A) cria uma matriz chamada valores com 2 linhas e 4 colunas.

B) cria um array valores e atribui os valores 2 e 4 para valores[1] e valores[2].

C) cria um array valores e atribui os valores 2 e 4 para valores[0] e valores[1].

D) cria um array de três elementos com os índices variando de 2 até 4.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Equação de Bernoulli

Considere o tubo de fluxo abaixo contendo óleo, que flui de forma a podermos considera-lo um fluido ideal. Ele flui por um tubo que sobe de nível e se estreita. Dois manômetros marcam a pressão em dois pontos do tubo, como mostra a figura. Qual o valor da pressão indicada no segundo manômetro? (Dados: ρóleo = 900 kg / m3 e g = 9,8 m/s2)



A) 290 kPa

B) 109 kPa

C) 114 kPa

D) 286 kPa

E) 90,7 kPa
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Ética, Legislação e Entidades que regulamentam a profissão

Você estudou sobre a aplicação do método de solução de problemas de engenharia para fins de análise e solução de dilemas éticos na profissão. Com base nessa ferramenta, as alternativas abaixo apresentam etapas de análise e solução de problemas éticos, exceto:

A) Definição do problema e determinação dos objetivos.

B) Identificação de soluções alternativas e de restrições.

C) Escolha de uma solução e testes de potenciais impactos da solução.

D) Negociação e aprovação da solução pelo ente envolvido, a fim de evitar atritos.

E) Documentação e comunicação da solução.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Locação da obra

Quais equipamentos são considerados de grande importância para a locação de uma obra?

A) Colher de pedreiro, óculos de proteção, protetor auricular e luvas.

B) Trena de plástico, capacete, cimento e calculadora digital.

C) Colher de pedreiro, trena de plástico e régua metálica.

D) Régua metálica, teodolito e trena de plástico.

E) Teodolito, nível de mangueira, trena metálica, linha de náilon e prumo.
Verificar Resposta Estudar Cards Todas as Questões

Veja mais Dicas e truques de ActionScript

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 71 usuários muito felizes estudando em nosso site.