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

public void com if?

No curso Java OO, capítulo 5, aula 8 ("Para saber mais: cuidado com o modelo anêmico"), os métodos "saca" e "deposita", que usam "if", não deveriam vir antecedidos de "public boolean" por estarem operando com uma condicional?

class Conta{
    private String titular;
    private double saldo;

    public void setTitular(String titular){
        this.titular = titular;
    }

    public String getTitular(){
        return titular;
    }

    public void saca(double valor){
        if(valor > 0 && saldo >= valor){
            saldo -= valor;
        }
    }

    public void deposita(double valor){
        if(valor>0){
            saldo += valor;
        }
    }

    public double getSaldo(){
        return saldo;
    }

}
5 respostas

Opa Rafael, tudo bem? Então cara, o void ele quer dizer somente que o método não vai retornar nada, ou seja, em nenhuma linha dentro do método você encontra a palavra reservada do java return, você pode ter inumeras operações dentro de um método, por exemplo:

public void deposita(double valor) {
     if(valor>0) {
        saldo += valor;
     } else {
        saldo += valor * 0.1;
     }
}

Quando tiver um método, que possui esse return, ai o tipo dele será colocado no lugar do void, por exemplo:

public double multiplica(double valor) {
     return valor * 2;
}

Neste caso retornamos anterior um double, mas podemos retornar qualquer outro tipo, como um boolean por exemplo:

public boolean ehNegativo(double valor) {
     if(valor < 0) {
       return true;
     } 

     return false;
}

Espero que tenha ficado claro Rafael, qualquer duvida estou a disposição :)

Acredito que o problema é não ter sido explorado com mais detalhe ainda o sentido de "return", pois inclusive no vídeo seguinte o Paulo usa "return" com "public void" pra que um método não seja usado em certas situações, o que me pareceu esquisito, por ser a primeira vez em que vi isso ser feito. Não entendi exatamente quais os usos do "return", mas espero que isso seja mais bem trabalhado adiante.

Opa, creio que será abordado sim, mas vamos lá, imagina quando você vai ao banco, no caixa eletrônico, você não faz o deposito e ele te devolve o saldo no mesmo local, pois são coisas diferentes, então você faz a operação de depoisitar:

public void deposita(double valor)  {
        saldo +=valor;
}

Ou seja, não tem nenhum retorno que deve ser mostrado, pois essa operação é apenas um deposito, agora pensando em um outro cenario, para printar um saldo, caso nosso saldo for 0 eu não quero dar o System.out.println(); em nada:

public void mostraSaldo()  {
        //ISSO AQUI É CHAMADO DE EARLY RETURN
        if(this.saldo == 0) return;

        System.out.println("Seu saldo é  R$" + this.saldo);
}

Ou seja, quando damos o early return quando o saldo é 0, nós não chegamos a executar o resto desse bloco de codigo, pois já que o saldo é 0, ele não interessa para nós(de acordo com essa regra que estabelecemos acima).

Então, o return pode ser usado no retorno do método ou para simplesmente parar a execução por alí.

Espero que tenha ficado um pouco mais claro, ou pelo menos de dado um norte.

É, acho que o recurso usado pelo Paulo no vídeo que eu mencionei se encaixa nisso de early return, em que o return serve pra não executar alguma instrução que vinha depois. Com esse emprego, eu só havia visto, no curso do Flávio de Lógica de Programação, aquele esquema de break no while, em que o break interrompe uma série de instruções.

solução!

Isso ai, o early return/return acaba com a execução do método independente de onde estiver e retorna o valor e o break força (manualmente) a saida de um laço ou condicional no caso do switch.