Métodos e variáveis estáticas

Quando declaramos um método ou uma variável em uma classe, por default, o mesmo será acessado a partir do objeto, ou seja, para utilizarmos este método ou variável teremos que instanciar um objeto desta classe.

Métodos e variáveis estáticas são elementos que pertencem à classe e não ao objeto, dessa forma quando os declaramos temos que usá-los a partir da classe.

No Delphi para declararmos métodos e variáveis estáticas precisamos incluir a palavra reservada class na frente dos mesmos.

unit Unit2;



interface

type

  TCliente = Class

    private

      class var Bairro:String;

    public

      var Nome:String;

      class function GetBairro:String;

      class procedure SetBairro(Value:String);

  End;



implementation



{ TCliente }



class function TCliente.GetBairro: String;

begin

  result := Bairro;

end;



class procedure TCliente.SetBairro(Value: String);

begin

  bairro := Value;

end;



end.

No exemplo àcima temos a variável Nome que é do objeto e a variável Bairro que é da classe(note a declaração da mesma, class var). Além disso temos os métodos Get e Set de bairro também como sendo da classe.

Para usarmos estes métodos e variáveis faríamos da seguinte maneira:

Form 1
Form 1
procedure TForm1.Button1Click(Sender: TObject);

begin

  //Click do botão Cria Cliente 1

  C1 := TCliente.Create;

  C1.Nome := 'Ricardo';

  TCliente.SetBairro('Realengo');

end;



procedure TForm1.Button2Click(Sender: TObject);

begin

  //Click do botão Cria Cliente 2

  C2 := TCliente.Create;

  C2.Nome := 'Ricardo';

  TCliente.SetBairro('Barra');

end;



procedure TForm1.Button4Click(Sender: TObject);

begin

  //Click do botão Exibir Valores

  ShowMessage('C1 ' +#13+

              'Nome:' + C1.Nome + #13 +

              'Bairro:' + TCliente.getBairro + #13 +

              'C2 ' +#13+

              'Nome:' + C2.Nome + #13 +

              'Bairro:' + TCliente.getBairro);

end;

Como podemos ver no nosso exemplo, temos 2 botões para criar dois clientes diferentes e um terceiro para exibir os valores de cada um deles. Note que para passamos o valor para a variável Nome, usamos o objeto(C1.Nome e C2.Nome), porém para usar os métodos estáticos que manipulam a variável Bairro usamos diretamente a classe(TCliente.Bairro).

Vale ressaltar algo muito importante, quando definimos uma variável estática em uma classe, esta só terá um valor independentemente da quantidade de objetos que tenhamos desta classe, no exemplo acima se clicarmos no botão “Criar Cliente 1”, depois no “Criar Cliente 2” e em seguida “Exibir Valores” veremos a seguinte mensagem:

Projetc 2

Por isso devemos ter cuidado ao definir variáveis estáticas pois acabam sendo globais para toda a aplicação, visto que a definição da classe dentro de nossa aplicação é uma só.

Outro ponto importante ressaltar é que um método estático só pode acessar variáveis estáticas da classe e um método do objeto só pode acessar variáveis do objeto, ou seja, se no nosso exemplo, na implementação do método SetBairro tentássemos manipular o valor de Nome, obteríamos um erro de compilação.

Saiu da DevMedia!

  • Primeiros passos na JSF com Ajax:
    Aprenda a enviar um formulário com Ajax utilizando componentes da JSF. Neste curso você dará os seus primeiros passos na programação com Ajax na JSF e aprenderá a utilizar esse mecanismo com validações de campos do formulário, geradas no back-end da aplicação pela Bean Validation.
  • CDI 2.0: avanços no Java EE e além:
    Injeção de dependências é um pilar do desenvolvimento moderno; com CDI 2.0, esta ferramenta será disponível para desenvolvedores Java SE. A nova versão de CDI também traz avanços para programação assíncrona, que é um tópico muito relevante para a performance de uma aplicação.
  • Por onde começar a programar uma aplicação?:
    Você já se perguntou “por onde eu deveria começar a programar essa aplicação”? Mesmo um bom programador pode ter dúvidas sobre como priorizar suas tarefas. Veja aqui um bate papo cheio de dicas sobre como chegar ao core da aplicação.

Saiba mais sobre Delphi ;)

  • Desenvolvimento Android no Delphi:
    Neste artigo vamos aprender a desenvolver, em Delphi, um aplicativo mobile para Android para recolher assinaturas dos usuários.
  • Guia Completo de Delphi:
    Neste Guia de Referência você encontrará o conteúdo que precisa para iniciar seus estudos em Delphi, uma plataforma para desenvolvimento de aplicativos completa, principalmente para soluções desktop e mobile.
  • Delphi: Cálculo de Saldo:
    Precisamos exibir o valor de saldo que deverá ser apresentado linha a linha no relatório de extrato financeiro. Caramba! Como isso pode ser feito?