logotipo Blog Giovani Da Cruz
Delphi

Como Utilizar “Get” e “Set” no Delphi e Lazarus

5 min de leitura 76 visualizações
getters and setters in delphi and lazarus
Em Delphi e Lazarus também existem os “getter” and “setter

 

No desenvolvimento de software, a utilização de métodos getter e setter é uma prática comum para encapsular atributos de uma classe. No Delphi, esses métodos desempenham um papel crucial na criação de programas mais estruturados, flexíveis e seguros. Neste artigo, explicaremos o que são, como utilizá-los e quando aplicá-los de maneira eficiente.

 

O que são métodos “Get” e “Set”?

  • Getter: Um método utilizado para obter o valor de um atributo privado de uma classe. Ele fornece acesso controlado às informações sem permitir modificações diretas.
  • Setter: Um método usado para atribuir valores a um atributo, permitindo validar ou processar os dados antes de efetuar a atribuição.

Esses métodos ajudam a implementar o princípio da encapsulação, protegendo os atributos de acessos indevidos e facilitando a manutenção do código.

 

Por que utilizar Getters e Setters?

  • Encapsulamento: Protege os atributos, garantindo que só sejam acessados de forma controlada.
  • Validação: Permite implementar regras para verificar os valores antes de armazená-los.
  • Flexibilidade: Facilita futuras mudanças na lógica de acesso ou atribuição sem impactar diretamente os consumidores da classe.
  • Debugging: Ajuda a identificar alterações inesperadas em atributos.

 

Estrutura básica no Delphi / Lazarus

No Delphi, os métodos getter e setter geralmente são definidos como métodos privados ou protegidos na seção private ou protected da classe. O atributo correspondente também é mantido privado.

Exemplo básico:

type
  TCliente = class
  private
    FNome: string;
    procedure SetNome(const Value: string);
    function GetNome: string;
  public
    property Nome: string read GetNome write SetNome;
  end;

implementation

{ TCliente }

function TCliente.GetNome: string;
begin
  Result := FNome;
end;

procedure TCliente.SetNome(const Value: string);
begin
  if Value.Trim = '' then
    raise Exception.Create('O nome não pode estar vazio.');
  FNome := Value;
end;

Explicação do código acima

  1. Atributo Privado: FNome é o atributo privado da classe, inacessível diretamente de fora da classe.
  2. Getter (GetNome): Retorna o valor de FNome. Esse método pode incluir lógica adicional, como formatações ou cálculos, antes de retornar o valor.
  3. Setter (SetNome): Valida o valor antes de atribuí-lo a FNome. Nesse caso, o valor não é aceito se for uma string vazia.
  4. Propriedade: A propriedade Nome conecta os métodos GetNome e SetNome, tornando-os acessíveis como se fossem um campo público.

 

Exemplo avançado com mais validações

Suponha que temos uma classe que representa uma conta bancária. Vamos adicionar validações para evitar atribuições inválidas ao saldo.

type
  TContaBancaria = class
  private
    FSaldo: Double;
    function GetSaldo: Double;
    procedure SetSaldo(const Value: Double);
  public
    property Saldo: Double read GetSaldo write SetSaldo;
  end;

implementation

{ TContaBancaria }

function TContaBancaria.GetSaldo: Double;
begin
  Result := FSaldo;
end;

procedure TContaBancaria.SetSaldo(const Value: Double);
begin
  if Value < 0 then
    raise Exception.Create('O saldo não pode ser negativo.');
  FSaldo := Value;
end;

Neste exemplo:

  • Getter: Apenas retorna o saldo.
  • Setter: Bloqueia a atribuição de valores negativos ao saldo.

 

Uso no código principal

Depois de criar a classe, você pode usá-la assim:

var
  Conta: TContaBancaria;
begin
  Conta := TContaBancaria.Create;
  try
    Conta.Saldo := 100.00; // Atribuindo um valor válido
    ShowMessage(Format('Saldo atual: %.2f', [Conta.Saldo]));

    // Tentar atribuir um saldo inválido
    Conta.Saldo := -50.00; // Irá gerar uma exceção
  except
    on E: Exception do
      ShowMessage('Erro: ' + E.Message);
  end;
  Conta.Free;
end;

 

Melhores práticas

Use validações sempre que necessário: Valide os dados no setter para evitar erros no restante da aplicação.

Mantenha a lógica simples: Evite incluir lógicas complexas em getters e setters. Use métodos adicionais para processamentos mais sofisticados.

Documente sua classe: Adicione comentários claros para descrever os métodos getter e setter.

 

Conclusão

Os métodos get e set no Delphi / Lazarussão ferramentas poderosas para o controle e a segurança dos dados em uma aplicação. Eles permitem aplicar o conceito de encapsulamento, melhorar a manutenção do código e proteger os atributos da classe contra acessos indevidos. Ao utilizá-los adequadamente, você garante que seu código será mais robusto, seguro e preparado para mudanças futuras.

 

 

Gostou do conteúdo?

Ficou com alguma dúvida ou tem uma dica para compartilhar? 💬

Deixe seu comentário abaixo, vou adorar saber sua opinião! 🚀😊

 

 

💻 Não esqueça de compartilhar o post se ele te ajudou! 😊

 

 

📚 Obrigado por acompanhar até aqui! Explore outros posts relacionados no blog e continue evoluindo suas habilidades. Tem mais conteúdos sobre diversos assuntos te esperando! 👩‍💻 🔍✨

Até o próximo post. Valeu! 👋📖

 

 

#Delphi #Lazarus #Programação #Encapsulamento

#GetSet #DesenvolvimentoDeSoftware

#OrientaçãoAObjetos #Codificação #DevLife

#Tecnologia #GiovaniDaCruz

 

 

Deixe um comentário

Seu e-mail não será publicado.