Buscar

Programação Orientada a Objetos: Interfaces e Classes Abstratas

Prévia do material em texto

Programação Orientada a 
Objetos 
Interfaces e Classes Abstratas 
1 
Parte desse material foi cedido pelo Prof. Frederico Durão 
Classe abstrata 
 Uma classe abstrata contém membros que 
serão reutilizados para a criação de um novo 
tipo de classe; 
 Não é possível instanciar uma classe abstrata; 
 Podem conter membros que são úteis em 
uma hierarquia de classes, mas são tão 
genéricas que acabam não tendo significado 
se isoladas destas classes. 
2 
Classe abstrata 
 Simplificam o reuso de código; 
 Definem “contratos” a serem realizados por 
subclasses; 
 Tornam o polimorfismo mais claro; 
 Devem ser declaradas com a palavra-chave 
abstract; 
 Podem declarar métodos abstratos 
◦ Métodos sem implementação 
◦ Implementação fornecida na subclasse 
 Podem declarar métodos concretos 
◦ Métodos com implementação 
3 
Classe abstrata 
 Estrutura: 
public abstract class NomeClasse { 
 atributo1; 
 atributo2; 
 ... 
 public void metodoConcreto() { 
 //Código 
 } 
 ... 
 public abstract void metodoAbstrato(); 
} 
4 
Interface 
 É um contrato entre a classe e o mundo 
externo; 
 Quando uma classe implementa uma 
interface, ela está comprometida a fornecer o 
comportamento publicado pela interface. 
5 
Interface 
 Exemplo: 
interface IConta { 
 double saldo(); 
 int numConta(); 
} 
class ContaCorrente implements IConta { 
 ... 
 double saldo() { 
 // código específico 
 } 
 
 int numConta() { 
 // código específico 
 } 
 ... 
} 
Interface 
Implementação 
6 
Classes abstratas x Interfaces 
Classes (abstratas) Interfaces 
Agrupa objetos com 
implementações compartilhadas 
Agrupa objetos com 
implementações diferentes 
Define novas classes através de 
herança de código 
Define novas interfaces através de 
herança de assinaturas 
Só uma classe pode ser supertipo 
de outra classe 
Várias interfaces podem ser 
supertipo do mesmo tipo 
7 
Estudo de Caso – Conta 
Bancária 
Vamos consolidar nosso 
aprendizado dos conceitos de 
Programação Orientada a 
Objetos; 
 
8 
Classes Conta e Poupança 
9 
Classes Conta e Poupança 
10 
Classes Conta e Poupança 
11 
Classes Conta e Poupança 
 Problemas 
◦ Duplicação desnecessária de código 
◦ Uma poupança também é uma conta 
12 
Classes Conta e Poupança 
13 
Classes Conta e Poupança 
14 
Classes Conta e Poupança 
 Instanciando nossas classes. 
15 
Classes Conta e Poupança 
 Instanciando nossas classes. 
16 
Classes Conta e Poupança 
 Instanciando nossas classes. Problemas? 
17 
Classes Conta e Poupança 
 Instanciando nossas classes. Problemas? 
18 
Classes Conta e Poupança 
 Instanciando nossas classes. Problemas? 
19 
Classes Conta e Poupança 
 Instanciando nossas classes. Problemas? 
Cast 
20 
Classes Conta e Poupança 
 Operador instanceof 
21 
Contas Bonificadas 
 Sobreposição 
22 
Conta Imposto 
23 
Conta Imposto 
24 
Nova Classe – Conta Abstrata 
25 
Modificando a classe Conta 
26 
Modificando a classe 
ContaImposto 
27 
Agora temos 
ContaAbstrata 
Conta ContaImposto 
Poupanca ContaBonificada 
28 
Auditor de Banco de Investimentos 
 Cliente 
29 
Auditor de Banco de Seguro 
 Cliente 
30 
Problema 
 Duplicação desnecessária de código 
 
 O mesmo auditor deveria ser capaz de 
investigar qualquer tipo de banco que possua 
operações para calcular 
31 
Definição de Interfaces 
32 
Utilização de Interfaces 
 BancoInvest 
33 
Utilização de Interfaces 
 BancoSeguros 
34 
Auditor Genérico 
 Novo cliente 
35 
Usando o Auditor Genérico 
36

Continue navegando