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

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

Linguagem II Classes Abstratas Interfaces. Davi Pires Revisão Reuso de código Superclasses e subclasses Composição vs. Herança Construtores.

Apresentações semelhantes


Apresentação em tema: "Linguagem II Classes Abstratas Interfaces. Davi Pires Revisão Reuso de código Superclasses e subclasses Composição vs. Herança Construtores."— Transcrição da apresentação:

1 Linguagem II Classes Abstratas Interfaces

2 Davi Pires {dpr@cin.ufpe.br} Revisão Reuso de código Superclasses e subclasses Composição vs. Herança Construtores –super Sobrescrevendo métodos Casts –erro: ClassCastException instanceof

3 Davi Pires {dpr@cin.ufpe.br} Um exemplo... Herança e polimorfismo –Caso extremo: classes inúteis! ProfessorProfessorDaPos ProfessorDaGraduacao ProfessorAdjunto class Professor { double getSalario( ) { //... }

4 Davi Pires {dpr@cin.ufpe.br} Métodos abstratos Podemos especificar quais métodos não sabemos implementar na classe. Assim, obrigamos as subclasses a implementá-los. Palavra reservada abstract.

5 Davi Pires {dpr@cin.ufpe.br} Métodos abstratos class Professor { abstract double getSalario( ); } class ProfessorDaPos extends Professor { public double getSalario( ) { return 2500.00; } class ProfessorAdjunto extends Professor { public double getSalario( ) { return 1500.00; }

6 Davi Pires {dpr@cin.ufpe.br} Classes abstratas Contêm métodos abstratos. Nunca serão instanciadas. São declaradas usando a palavra reservada abstract. Se uma classe tem pelo menos um método abstrato, ela deve ser declarada abstract, ou teremos um erro de compilação! Se uma classe tem pelo menos um método abstrato, ela deve ser declarada abstract, ou teremos um erro de compilação!

7 Davi Pires {dpr@cin.ufpe.br} Classes Abstratas abstract class Professor { abstract double getSalario( ); } class ProfessorDaPos extends Professor { public double getSalario( ) { return 2500.00; } class ProfessorAdjunto extends Professor { public double getSalario( ) { return 1500.00; }

8 Davi Pires {dpr@cin.ufpe.br} Classes Abstratas Exemplo Professor professor; professor = new Professor( ); professor = new ProfessorAdjunto( );

9 Davi Pires {dpr@cin.ufpe.br} Classes Abstratas Subclasses que não implementam o método abstrato também são abstract. abstract class Professor { abstract double getSalario( ); } abstract class ProfessorGraduacao extends Professor { //... }

10 Davi Pires {dpr@cin.ufpe.br} Classes Abstratas Exemplo: –Professor*.java Exercício –Faça um método main e teste. –Faça com que todo Professor tenha um atributo nome que deve ser passado no construtor. –Crie um novo tipo de ProfessorGraduacao e insira-o no projeto.

11 Davi Pires {dpr@cin.ufpe.br} Considerações Extensibilidade. Flexibilidade. Classes abstratas permitem-nos abstrair partes da implementação. E se quiséssemos abstrair toda a implementação?

12 Davi Pires {dpr@cin.ufpe.br} Considerações Uma classe abstrata define uma interface a ser necessariamente implementada por suas subclasses. E se nos interessasse definir apenas o que deve ser implementado? –definir apenas a interface! Exemplo: –Repositórios –Servidores

13 Davi Pires {dpr@cin.ufpe.br} Interfaces Em Java, podemos definir interfaces. São um novo tipo. interface Exemplo { public void a(..); public void b(..); }

14 Davi Pires {dpr@cin.ufpe.br} Interfaces Por serem tipos, podem ser usados como tipos de variáveis, atributos ou retorno de métodos. interface RepositorioX { public void inserir(X novoX); public void remover(..); } class CadastroX { RepositorioX repositorio; void inserirX(X novoX) { repositorio.inserir(x); }

15 Davi Pires {dpr@cin.ufpe.br} Interfaces Interfaces não fazem nada. –além de definir o que deve ser feito. –“Contratos”. Classes devem implementar os métodos ali definidos. Palavra reservada implements Uma classe pode implementar diversas interfaces. –Embora só estenda uma classe.

16 Davi Pires {dpr@cin.ufpe.br} Implementando interfaces interface RepositorioX { public void inserir(X novoX); public void remover(..); } class RepositorioX implements Repositorio X{ public void inserir(X novoX) { //... } public void remover(..) { //... }

17 Davi Pires {dpr@cin.ufpe.br} Implementando interfaces Se Então ou class A implements InterfaceB {...} A implementa todos os métodos de InterfaceB A é declarada como abstract

18 Davi Pires {dpr@cin.ufpe.br} Interfaces Exemplo: –Estruturação em camadas. –*Conta.java

19 Davi Pires {dpr@cin.ufpe.br} Dúvidas

20 Davi Pires {dpr@cin.ufpe.br} Exercícios Em CadastroContas, crie um método que cheque se uma conta deve ser inserida. –Inclua a chamada no método inserir(..). Em seguida, abstraia a maneira como essa checagem é implementada nessa classe. –abstract!

21 Davi Pires {dpr@cin.ufpe.br} Exercícios Tente implementar a estrutura hierárquica feita em Professores* com interfaces, ao invés de classes abstratas. Compare as vantagens e desvantagens de cada técnica.

22 Este trabalho está licenciado sob uma Licença Creative Commons Atribuição-Uso Não-Comercial-Compatilhamento pela mesma licença. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-sa/2.0/br/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.


Carregar ppt "Linguagem II Classes Abstratas Interfaces. Davi Pires Revisão Reuso de código Superclasses e subclasses Composição vs. Herança Construtores."

Apresentações semelhantes


Anúncios Google