Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida sobre Gets/Sets

Na cadeira de Java, na Faculdade, meu professor ensinou a criar métodos Gets e Sets para acessar os atributos da classe, evitando acessar os atributos diretamente. Têm alguma diferença ou vantagem entre os dois códigos abaixo?

    //Como estou fazendo:
        private string nome;

    public void setNome(string nome)
        {
            this.nome = nome;
        }

        public string getNome()
        {
            return this.nome;
        }
//Exemplo da aula:
class Cliente
{
    private string cpf;
    public string Cpf {
        get
        {
            return cpf;
        }
        set
        {
            this.cpf = value;
        }
    }
}
5 respostas

Olá!

Acredito que a única diferença seja que, utilizando o método da aula, podemos acessar e/ou mudar o CPF de um cliente facilmente, desta forma:

Cliente cliente = new Cliente(); // Instanciando
cliente.Cpf = "12345678900"; // Modificando
string cpf = cliente.Cpf; // Acessando e atribuindo a uma variável

Enquanto que utilizando o seu método, teríamos que utilizar as palavras get ou set em funções de maneira mais explícita:

Cliente cliente = new Cliente();
cliente.setCpf("12345678900");
string cpf = cliente.getCpf();

Acredito que se isto é bom ou ruim, varia de programador para programador, conforme suas necessidades/convenções de escrita.

Mas, pessoalmente, acredito que a maneira da aula seja melhor, pois podemos controlar a habilidade de acessar(get) ou modificar(set) apenas adicionando um private antes do set ou do get na classe Cliente. Ex (Acesso público e modificação privada):

class Cliente
{
    private string cpf;
    public string Cpf {
        get
        {
            return cpf;
        }
        private set {}
    }
}

Dexa eu ver se eu entendi, em Java adotaram por convenção, a criação de métodos Sets e Gets pq não existe atributos com propriedades, já no C#, como existe as Propriedades, não é necessário criar métodos com os Sets e os Gets. É isso?

Oi Maxranderson,

Exatamente isso.. No C# deram um jeito de vc indicar os métodos de acesso a um atributo de uma maneira muito mais legal :). Inclusive no mundo java, existem projetos que tentam simular isso, um deles é o lombok.

Interessante, pra finalizar, os desenvolvedores em C# usam por convenção as Propriedades e não os métodos Sets e Gets, é isso ou fica a caráter do desenvolvedor?

solução!

Usam as properties e customizam quando precisam :)