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

Aula 1 - Convenção: Uso de Propriedade vs Método

Boa tarde, professor.

Será que poderia falar um pouco mais sobre a convenção de quando devo usar a propriedade e quando devo usar método?

3 respostas
solução!

Olá, Thiago. Tudo bom?

Não existe uma convenção propriamente dito, mas, existe um guia para decidir isto. No site da Microsoft tem um artigo sobre estes guidelines aqui:(https://msdn.microsoft.com/en-us/library/ms229054(v=vs.100).aspx.

Em resumo, escolhemos método quando a operação:

  • É muito mais lenta que o acesso a um campo;
  • É uma conversão;
  • Sempre devolve valores diferentes, mesmo quando chamado com os mesmos parâmetros;
  • Retorna uma cópia de seu estado interno;

O que você acha?

Abs e bons estudos

Poderia falar mais sobre esse "retorna uma cópia do seu estado interno"? Teria um exemplo disso?

Estamos criando um objeto qualquer, como por exemplo, um objeto do tipo Carro:

Carro c = new Carro();
c.Cor = "Prata";
c.Placa = "cvss-23729";
c.Marca = "Tesla";
c.Modelo = "Model S";

E precisamos de outro objeto muitíssimo semelhante, mas, trocando apenas a Cor para "Vermelho". Seremos obrigados a duplicar todo o código:

Carro c2 = new Carro();
c2.Cor = "Vermelho";
c2.Placa = "cvss-23729";
c2.Marca = "Tesla";
c2.Modelo = "Model S";

Ou podemos criar um método em Carro que retorna seu estado interno, como um Clonar. E nosso código ficaria:

Carro c = new Carro();
c.Cor = "Prata";
c.Placa = "cvss-23729";
c.Marca = "Tesla";
c.Modelo = "Model S";

Carro c2 = c.Clonar();
c2.Cor = "Vermelho";

A implementação do método Clonar, na classe Carro, seria algo como:

public Carro Clonar()
{
    Carro clone = new Carro();
    clone.Cor = this.Cor;
    clone.Placa = this.Placa;
    clone.Marca = this.Marca;
    clone.Modelo = this.Modelo;

    return clone;
}

Lembrando que o uso do this não é obrigatório neste caso. Usei apenas para reforçar que Clone é um método em Carro.

O que você acha?

Abs e bons estudos.