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

Estou com dúvida no curso de Java e Orientação a Objetos, no exercício do capítulo Interfaces.

Outra seção com problemas entre o texto e o vídeo - não há introdução e conceitos de Interface. Veja a última frase do texto:

Como resolver essa situação? Note que conhecer a sintaxe da linguagem não é o suficiente, precisamos estruturar/desenhar bem a nossa estrutura de classes.
4 respostas

Logo interface que é um conceito que normalmente não se entende com facilidade.

Interface permite a especificação de um tipo sem fornecer uma implementação desse tipo, Esse recurso oferece um mecanismo de declaração de tipos que são distintos das classes, fornecendo uma extensão importante á maneira como objetos e o mecanismo de herança podem ser usados em JAVA. "Russel Winder & Graham Roberts".

Ou seja é um contrato que especificamos com apenas assinaturas dos metodos, e quem for usar, tem que implementar os metodos

solução!

Como dito acima interface proposta a assinatura de um contrato com as classes, onde somete conterá seus métodos sem implementação.

public interface Autenticavel {
    boolean autentica(int senha);
}

Vantagens, imagine uma classe Diretor e uma gerente que tem uma função de autenticar:

package br.com.aulas.interfaces.autentica;

public class Diretor extends Funcionario implements Autenticavel {

    private int senha = 4321; 

    @Override
    public boolean autentica(int senha) {
        if (this.senha != senha) {
            return false;
        }
        return true;
    }

}

class Gerente extends Funcionario implements Autenticavel {

    private int senha = 123;

    @Override
    public boolean autentica(int senha) {
        if (this.senha != senha) {
            return false;
        }
        return true;
    }



}

Na hora de determinar qual método autenticar o sistema vai usar é somente usar a interface:


public class ValidaTeste {

    public static void main(String[] args) {


        Autenticavel diretor = new Diretor();
        Autenticavel gerente = new Gerente();
        SistemaInterno valida = new SistemaInterno(); 

        valida.login(diretor, 12);
        valida.login(gerente,123);

    }

class SistemaInterno {

    void login(Autenticavel autenticar, int senha){

        boolean valida = autenticar.autentica(senha);

        if (valida == true) {

            System.out.println("Logado com sucesso! ");
        } else {
            System.err.println("Senha invalida");
        }


    }

Valeu galera, mas o problema é a qualidade do curso. Estou notificando o pessoal do suporte para verificar essa diferença, divergência entre o texto e a video aula. Sei que o conceito de Interface é importantíssimo, por isso o alerta.