Programação      Orientada a ObjetosUnidade V – Elementos Avançadosde Orientação a Objetos com Java            (Parte I)  ...
ObjetivoReconhecer o conceito de estruturasabstratas de programação e suasfuncionalidades aplicando-as com alinguagem Java...
RoyaltiesEstes slides foram gentilmente cedidos pelo prof.   Régis Pires (IFPI-Parnaíba) com algumas adaptações do prof. N...
Classes Abstratas–   Usamos a palavra chave abstract para impedir    a instanciação de uma classe.–   Classes abstratas no...
Classes Abstratas                Prof. Nécio Veras
Classes Abstratas●   Regras sobre métodos abstratos e as classes que os    contêm:    –   Toda classe que possui métodos a...
Classes Abstratas–   Se uma subclasse de uma classe abstrata não    implementa todos os métodos abstratos que ela    herda...
Classes Abstratasabstract class Conta {  protected double saldo;    public void retira(double valor) {      this.saldo -= ...
Interfaces●   Problema    –   Suponha que você define as classes abstratas Forma        e Desenhavel e a classe Circulo (q...
Interfaces●   Solução    –   Para resolver esse tipo de problema Java define o conceito        de interfaces         ●   U...
Interfaces●   Quais as diferenças entre interface e classe    abstrata?    –   Declaração de métodos        ●   Em uma cla...
Interfaces             Prof. Nécio Veras
Interfacesinterface Autenticavel {   boolean autentica(int senha);}class Gerente extends Funcionario                      ...
Herança entre Interfaces–   Diferentemente das classes, uma interface pode    herdar de mais de uma interface.–   É como u...
Para que usar interfaces?–   Para deixar o código mais flexível, e    possibilitar a mudança de implementação    sem maior...
Interfaces             Prof. Nécio Veras
Regras de Ouro●   No livro Design Patterns, logo no início os    autores citam 2 regras “de ouro”:    –   “Evite herança, ...
Um exemplo destas regras:Q u e r e m o s m o d e la r e s ta s m e s a se m te r m o s d e o b je to s1                   ...
Problema: Como resolver?●   Usando herança?    –   Solução mais “natural”;    –   Adição estática de responsablidades;    ...
Um ótima solução●   Por que não decorar?    –   Embelezar a mesa com objeto que adiciona rodinhas,        outro objeto que...
Diagrama da solução                Prof. Nécio Veras
Exercício●   Implemente o seguinte o diagrama:                                        Prof. Nécio Veras
Próximos SlideShares
Carregando em…5
×

Classes abstratas e interfaces

2.238 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
2.238
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
101
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Classes abstratas e interfaces

  1. 1. Programação Orientada a ObjetosUnidade V – Elementos Avançadosde Orientação a Objetos com Java (Parte I) Prof. Nécio de Lima Veras http://lattes.cnpq.br/8284657916723590
  2. 2. ObjetivoReconhecer o conceito de estruturasabstratas de programação e suasfuncionalidades aplicando-as com alinguagem Java. Prof. Nécio de Lima Veras http://lattes.cnpq.br/8284657916723590
  3. 3. RoyaltiesEstes slides foram gentilmente cedidos pelo prof. Régis Pires (IFPI-Parnaíba) com algumas adaptações do prof. Nécio de Lima Veras (IFPI- Parnaíba). Prof. Nécio Veras
  4. 4. Classes Abstratas– Usamos a palavra chave abstract para impedir a instanciação de uma classe.– Classes abstratas normalmente possuem um ou mais métodos abstratos.– Um método abstrato não possui corpo, apenas define a assinatura (protótipo) do método– Classes abstratas são úteis quando uma classe define métodos a serem implementados apenas pelas suas subclasses Prof. Nécio Veras
  5. 5. Classes Abstratas Prof. Nécio Veras
  6. 6. Classes Abstratas● Regras sobre métodos abstratos e as classes que os contêm: – Toda classe que possui métodos abstratos é automaticamente abstrata e deve ser declarada como tal. – Uma classe pode ser declarada abstrata mesmo se ela não possuir métodos abstratos. – Uma classe abstrata não pode ser instanciada. – Uma subclasse de uma classe abstrata pode ser instanciada se: ● Sobrescreve cada um dos métodos abstratos de sua superclasse ● Fornece uma implementação para cada um deles Prof. Nécio Veras
  7. 7. Classes Abstratas– Se uma subclasse de uma classe abstrata não implementa todos os métodos abstratos que ela herda, então a subclasse também é abstrata– Para declarar um método abstrato coloque a palavra-chave abstract no início do protótipo do método– Para declarar uma classe abstrata coloque a palavra-chave abstract no início da definição da classe Prof. Nécio Veras
  8. 8. Classes Abstratasabstract class Conta { protected double saldo; public void retira(double valor) { this.saldo -= valor; } public void deposita(double valor) { this.saldo += valor; } public double getSaldo() { return this.saldo; } public abstract void atualiza();} Prof. Nécio Veras
  9. 9. Interfaces● Problema – Suponha que você define as classes abstratas Forma e Desenhavel e a classe Circulo (que estende Forma) – Como criar a classe CirculoDesenhavel que é ao mesmo tempo Circulo e Desenhavel? public class CirculoDesenhavel extends Circulo, Desenhavel { ... } – Mas... o código acima está ERRADO! ● Java, diferentemente de C++, não permite que uma classe possua duas superclasses diretas, ou seja, não suporta herança múltipla! Prof. Nécio Veras
  10. 10. Interfaces● Solução – Para resolver esse tipo de problema Java define o conceito de interfaces ● Uma interface é semelhante a uma classe abstrata, exceto pelo fato de utilizar a palavra chave interface no lugar de abstract class na definição da classe. – Interface é um contrato onde quem assina se responsabiliza por implementar os métodos definidos na interface (cumprir o contrato). – Ela só expõe o que o objeto deve fazer, e não como ele faz, nem o que ele tem. Como ele faz vai ser definido em uma implementação dessa interface. Prof. Nécio Veras
  11. 11. Interfaces● Quais as diferenças entre interface e classe abstrata? – Declaração de métodos ● Em uma classe abstrata podem ser definidos métodos abstratos e não-abstratos ● Todos os métodos de uma interface são implicitamente abstratos (NÃO precisam ser declarados como tal) – Declaração de variáveis ● Em uma classe abstrata podem ser definidas variáveis de instância, de classe e constantes ● Todos os atributos de uma interface são sempre public static final (constantes), mesmo que essas palavras reservadas não sejam usadas. Prof. Nécio Veras
  12. 12. Interfaces Prof. Nécio Veras
  13. 13. Interfacesinterface 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. Nécio Veras
  14. 14. Herança entre Interfaces– Diferentemente das classes, uma interface pode herdar de mais de uma interface.– É como um contrato que depende de que outros contratos sejam fechados antes deste valer.– Você não herda métodos e atributos, e sim responsabilidades. Prof. Nécio Veras
  15. 15. Para que usar interfaces?– Para deixar o código mais flexível, e possibilitar a mudança de implementação sem maiores traumas.– Elas também trazem vantagens em não acoplar as classes. ● Uma vez que herança através de classes traz muito acoplamento, muitos autores clássicos dizem que em muitos casos herança quebra o encapsulamento. Prof. Nécio Veras
  16. 16. Interfaces Prof. Nécio Veras
  17. 17. Regras de Ouro● No livro Design Patterns, logo no início os autores citam 2 regras “de ouro”: – “Evite herança, prefira composição”. – “Programe voltado a interface e não a implementação”. Prof. Nécio Veras
  18. 18. Um exemplo destas regras:Q u e r e m o s m o d e la r e s ta s m e s a se m te r m o s d e o b je to s1 2 I s to é u m a m e s a I s to é u m a m e s a ! c o m r o d in h a s ! 3 A a p lic a ç ã o p o d e , e m a lg u m I s to é u m a m e s a m o m e n to , u s a r a m e s a p u r a , d e p in g p o n g e m o u tr o , c o m r o d in h a s , e m o u tr o , c o m r o d in h a s ! c o m r e d e d e p in g p o n g , e tc . Prof. Nécio Veras
  19. 19. Problema: Como resolver?● Usando herança? – Solução mais “natural”; – Adição estática de responsablidades; – Cliente não tem como controlar como e quando colocar rodinhas, a rede de ping-pong ou outras coisas: – Responsabilidade é atribuída a classe e não a cada objeto – Não é facilmente extensível; – E se quisermos usar a mesa para jantar? Prof. Nécio Veras
  20. 20. Um ótima solução● Por que não decorar? – Embelezar a mesa com objeto que adiciona rodinhas, outro objeto que adiciona rede de ping-pong, etc; – Cada objeto que “embeleza” a mesa é um decorator (Design Patterns); – Isto é, Composição de objetos! Prof. Nécio Veras
  21. 21. Diagrama da solução Prof. Nécio Veras
  22. 22. Exercício● Implemente o seguinte o diagrama: Prof. Nécio Veras

×