A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Java - Interfaces Prof. Msc. Flávio Viotti.

Apresentações semelhantes


Apresentação em tema: "Java - Interfaces Prof. Msc. Flávio Viotti."— Transcrição da apresentação:

1 Java - Interfaces Prof. Msc. Flávio Viotti

2 Interfaces Interface Podemos definir uma interface como um conjunto de métodos com suas devidas assinaturas sem nenhuma programação. Sintaxe Importante Toda variável criada em uma interface quando implementada irá se transformar em uma constante!!!!! public interface Exemplo { int valor=0; public void metodo1(); public int metodo2(String p1, float p2); public Object metodo3(Object o); } Prof. Msc. Flávio Viotti

3 Interfaces Problema Real Imagine um Sistema de Controle de Banco que pode ser acessado além dos Gerentes pelos Diretores do Banco. Então teríamos uma classe Diretor e uma Gerente. public class Diretor extends Funcionario { public boolean autentica(int senha) { //Verifica se a senha confere } public class Gerente extends Funcionario { //Verifica se o depto dele tem acesso Prof. Msc. Flávio Viotti

4 Diagrama de Classe do Sistema
Interfaces Diagrama de Classe do Sistema Repare que o método autenticação de cada tipo de Funcionario pode variar muito. Considere a classe principal SistemaInterno. Prof. Msc. Flávio Viotti

5 Interfaces public class SistemaInterno { void login(Funcionario funcionario) { //chamar o método autentica não da! Nem todo funcioinario tem } Soluções Criar um método login para cada tipo de funcionário??? R: Irá gerar problema, pois sempre que existir um novo tipo de funcionario autenticável a classe SistemaInterno teria que ser alterada!!!! Prof. Msc. Flávio Viotti

6 Interfaces Nova solução Prof. Msc. Flávio Viotti

7 Novas classes Interfaces
As classes Diretor e Gerente passariam a extender FuncionarioAutenticavel... E a classe SistemaInterno.. public class FuncionarioAutenticavel extends Funcionario { public boolean autentica(int senha) { //Faz as autenticações } public class SistemaInterno { void login(FuncionarioAutenticavel fa) { int senha = //pegar a senha biometrica boolean ok = fa.autentica(senha) } Prof. Msc. Flávio Viotti

8 Interfaces Novo Problema Precisamos que um Cliente tambem acesse o sistema. Mas.... um Cliente não é um funcionário. Necessitamos achar uma opção de referenciar Diretor, Gerente e Cliente de uma mesma maneira. Se existisse uma forma na qual essas classes garantissem a existencia de um determinado método, através de um contrato, resolveríamos o problema. Esse contrato pode vir na forma de uma interface, que define que: “Quem quiser ser autenticável precisa saber fazer: 1- autenticar dada uma determinada senha e devolver um booleano” Prof. Msc. Flávio Viotti

9 Nova interface Interfaces
Lemos a interface da seguinte maneira: “quem desejar ser autenticavel precisa saber autenticar dado um inteiro e retornando um booleano”. Realmente um contrato, onde quem assina se responsabiliza por reescrever esses métodos (cumprir o contrato). public interface Autenticavel { boolean autentica(int senha); } class Gerente extends Funcionario implements Autenticavel { private int senha; // outros atributos e métodos public boolean autentica(int senha) { if(this.senha != senha) return false; // pode fazer outras possiveis verificacoes, como saber se esse // departamento do gerente tem acesso ao Sistema return true; Prof. Msc. Flávio Viotti

10 Novo diagrama de classe
Interfaces Novo diagrama de classe Prof. Msc. Flávio Viotti

11 Exercicios Interfaces
1 – Implemente todas as classes desses slides juntamente com sua programação. Faça um método main() que instancie um objeto de cada classe e veja o que voce pode fazer com as senhas. 2 – Resolva os exercicios do livro [1] pag. 47 Prof. Msc. Flávio Viotti

12 Interfaces Bibliografia [1] Sintes, Tony; Aprenda Programação Orientada a Objetos em 21 dias – São Paulo: Pearson Education do Brasil, 2002 Prof. Msc. Flávio Viotti


Carregar ppt "Java - Interfaces Prof. Msc. Flávio Viotti."

Apresentações semelhantes


Anúncios Google