Baixe o app para aproveitar ainda mais
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
Compartilhar