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

Dúvida Ex 1 do capítulo 5

Pessoal, no comando: return Math.PI raio raio; Não seria mais correto colocar: return Math.PI this.raio this. raio;

Fiz dos dois jeitos e funciona, a área é calculada corretamente das duas formas, mas raio (sem o this) não deveria valer apenas no construtor Circulo (que foi quem o criou)? Minha dúvida vem do código abaixo:

public class Circulo implements AreaCalculavel { private double raio;

public Circulo(double raio) { this.raio = raio; }

public double calculaArea() { return Math.PI raio raio; }

}

3 respostas

Mario bom a duvida seria no retorno certo? Eu não entendi direito a sua duvida, mais sobre o significado da palavra this não afeta em nada o seu código, alias afeta porque o this é uma referencia do atributo ou metodo da classe que você esta usando, então podemos dizer que é uma referencia a metodos e atributos. No seu retorno se você esta retornando uma atributo da sua propria classe não tem problemas em usar o this. mais o java automaticamente reconhece também que sem o this ele ira reconhecer o atributo da própria classe, eu sempre uso o this para referencia e também é uma boa pratica. Fica ao seu critério.

solução!

Oi Mario Sandrini, na função círculo recebemos um parâmetro com o mesmo nome do nosso atributo(raio), para demonstrar que estamos nos referenciando ao nosso atributo e não a variável que estamos recebendo por parâmetro colocamos o this.

public class Circulo implements AreaCalculavel {
     private double raio;

    public Circulo(double raio) { 
        this.raio = raio; 
    }

    public double calculaArea() { 
        return Math.PI * raio * raio;
     }
}

Já no nosso calculaArea() não temos nenhum parâmetro e apenas retornamos o valor de Math.PI*raio*raio; Não estarmos usando o this PORQUÊ estamos nos referindo ao único raio em questão e não precisamos fazer nenhuma diferenciação, pois não há sombreamento(nome do atributo == nome do parametro). Ajudei ?

  class Bola implements AreaCalculavel {
    private double raio;

    public Bola (double raio){
        this.raio = raio;
        }
    public double CalculaArea() {
        return  Math.PI * raio * raio;    
    }
}