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

Aula 7 - Atividade 1 - Revendo a composição

O professor escreveu o código como se estivesse criando um objeto normal de classe.

AutenticacaoUtil util = new AutenticacaoUtil();

(util está escrito em marrom)

Até aí tudo bem. Logo em seguida ele transformou esse objeto em um atributo!?!?!?!:

this.util = new AutenticacaoUtil();

(util escrito em azul)

Na sequencia, ele utiliza esse atributo para invocar um método, o setSenha()!?!?!?!;

Primeira vez que isso aparece no curso...

Eu tentei fazer um teste simples, criei duas classe, uma classe (teste) com um atributo (String nome) e um método (setNome();), e outra classe (teste1) com o método main, e o objeto (t1) da primeira classe.Posteriormente no main eu invoquei o método utilizando o objeto (t1 escrito em marrom), e funcionou conforme esperado (t1.setNome("nomet1");), e tentei invocar o método pelo atributo (escrito em azul), e não funcionou (nomet1.setNome("novonomet1"));. O código estava assim;

primeira classe

public class teste {
    String nome;

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

}


segunda classe com o main

public class teste1 {

    public static void main(String[] args) {
        teste t1 = new teste();
        t1.setNome("nomet1"); // funcionou ok, como eu esperava.

        nomet1.setNome("novonomet1"); // nao funciona, o que eu tb esperava.

    }

}

Então a minha dúvida é: Quando o professor escreveu essa linha: this.util = new AutenticacaoUtil(); ele fez com que o "util" tivesse o poder de invocar métodos (objeto escrito em marrom), ao mesmo tempo que tb é um atributo (escrito em azul)?

Não ficou exatamente claro pra mim como um atributo pode invocar um método. Poderia explicar de outra forma, por favor?

4 respostas

Boa tarde, Átila! Como vai?

Vc poderia colar aqui o link da aula onde essa situação ocorre para que eu possa me contextualizar e tentar te ajudar?

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Oi Gabriel! Tranquilo, e você?

Esse é o link da aula: https://cursos.alura.com.br/course/java-heranca-interfaces-polimorfismo/task/35092

Aos 6:25 ele cria esse objeto.

Obrigado!

Oi boa tarde!

Alguém pode me ajudar, por favor? Ainda estou com essa dúvida.

solução!

Atila, boa tarde!

Isso porque, o atributo util é do tipo AutenticacaoUtil isso significa que: essa 'variável' só aceita uma referência do tipoAutenticacaoUtil, sendo assim quando ele faz:

this.util = new AutenticacaoUtil();

Ele só esta atribuindo a uma variável que já ia ser do tipo AutenticacaoUtil, já que:

AutenticaoUtil util = null;
util = new AutenticacaoUtil();

É o mesmo que ` this.util = new AutenticacaoUtil(); Apenas mudou que ele fez a criação do atributo antes mesmo de ter o objeto.

Espero ter ajudado e bons estudos!