Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida em relação a interfaces

Não entendi isso bem, e gostaria de saber se alguém pode me explicar essa aplicação de interfaces em softwares orientados a objetos . Obrigado!

1 resposta
solução!

Olá Tibério, tudo bem com você?

Então, não sei se você pegou o conceito de interface como sendo um palavra, ou como sendo de fato uma estrutura do Java

Um ponto importante é que não é bem uma limitação do Java, inclusive James Gosling, um dos criadores, disse que se tivesse mais tempo para construir, ele teria até retirado o conceito de herança

Mas voltando a sua questão, em java o comum é criarmos varias interfaces que ditam os protocolos que elas devem seguir

public interface BaseRepository {

    boolean adicionarEntidade();

    boolean removerEntidade();

    Integer contarEntidade();
}

public interface Auditavel {

    String gerarRelatorio();
}

E dentro das nossas classes podemos implementar múltiplas interfaces:

public class UserDatabase implements BaseRepository, Auditavel{
    @Override
    public String gerarRelatorio() {
        return null;
    }

    @Override
    public boolean adicionarEntidade() {
        return false;
    }

    @Override
    public boolean removerEntidade() {
        return false;
    }

    @Override
    public Integer contarEntidade() {
        return null;
    }
}

A utilização é bem simples, garantimos a uniformidade das classes que decidem implementar a interface, e além disso, podemos utilizar do polimorfismo e ter um método por exemplo

public class BaseController {

    private BaseRepository repository;

    public BaseController(BaseRepository repository){
        this.repository = repository;
    }

} 

Neste caso eu posso passar para o meu controlador tanto um UserDatabase, quanto um CategoriaDatabase, ou qualquer outro :)

Conseguiu Compreender?

Abraços e Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software