Getters e setters

Getters e setters em C# são métodos especiais usados para controlar o acesso a variáveis privadas de uma classe, promovendo o encapsulamento dos dados. Em C#, eles são implementados por meio de propriedades, que combinam aspetos de variáveis e métodos: para quem utiliza a classe, uma propriedade se comporta como um campo comum, mas internamente ela executa código ao ser lida (getter) ou modificada (setter).

  • O getter (acessador get) é chamado quando a propriedade é lida e retorna o valor do campo privado associado.
  • O setter (acessador set) é chamado quando a propriedade recebe um valor, permitindo validar ou modificar o dado antes de armazená-lo.

Exemplo:

private string nome; // campo privado

public string Nome // propriedade pública
{
get { return nome; } // getter
set { nome = value; } // setter
}

Assim, getters e setters permitem proteger os dados internos da classe e controlar como eles são acedidos e alterados, podendo incluir validações ou lógica adicional no processo.

Definir getters e setters

Para definir getters e setters em classes em C#, utiliza-se o conceito de propriedades. Propriedades são membros especiais que encapsulam o acesso a campos privados, permitindo controlar como os dados são lidos e modificados de fora da classe, promovendo o encapsulamento.

Exemplo Básico

public class Pessoa
{
private string nome; // campo privado

public string Nome // propriedade pública
{
get { return nome; } // getter: retorna o valor do campo
set { nome = value; } // setter: atribui um valor ao campo
}
}
  • O método get retorna o valor do campo privado.
  • O método set atribui um valor ao campo, usando a palavra-chave value.

Utilizando a Propriedade

Pessoa p = new Pessoa();
p.Nome = "Maria"; // Chama o setter
Console.WriteLine(p.Nome); // Chama o getter

Propriedades Automáticas

Se não for necessário lógica adicional no getter ou setter, pode-se usar propriedades automáticas:

public class Produto
{
public string Nome { get; set; } // campo implícito, getter e setter automáticos
}

Somente Leitura ou Escrita

  • Somente leitura: defina apenas o get: csharppublic string Nome { get; }
  • Somente escrita: defina apenas o set: csharppublic string Nome { set { ... } }

Resumo

  • Declare o campo como private.
  • Crie uma propriedade pública com os métodos get e/ou set.
  • Use a propriedade para aceder e modificar o valor do campo de forma controlada.

Essa abordagem melhora a segurança e a manutenção do código, permitindo adicionar validações e lógica personalizada no acesso aos dados.