AULA 06 CLASSE ABSTRATA E INTERFACE CLASSES ABSTRATAS Às vezes utilizamos classes que servem apenas para representar conceitos e economizar na digitação de código; Desta forma podemos ter classes que nunca serão instanciadas, estas são chamadas de classes abstratas; Usamos a palavra-chave abstract para impedir que ela possa ser instanciada. Também existem métodos que são abstratos. Estes métodos obrigam uma classe a sempre escrever a funcionalidade do método. Ele indica que todas as classes filhas (concretas) devem reescrever esse método ou não compilarão. INTERFACE O uso de herança aumenta o acoplamento entre as classes (o quanto uma classe depende da outra); Isto acaba fazendo com que o programador das classes filhas tenha que conhecer a implementação da classe pai e vice-versa. Isto é um problema da herança e não do polimorfismo; Entretanto podemos resolver isto com a ajuda das interfaces Interface é um “contrato” que define as condições que uma classe deve fazer para ter um determinado status; Ao assinar esse “contrato” a classe se compromete a explicar como será feita certos métodos. Uma interface pode definir uma série de métodos, mas nunca conter implementação deles; 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. O objetivo do uso de uma interface é deixar seu código mais flexível e possibilitar a mudança de implementação sem maiores dificuldades. Prof. Marcelo Henrique dos Santos COMPARAÇÃO: INTERFACE X CLASSE ABSTRATA Prof. Marcelo Henrique dos Santos Prof. Marcelo Henrique dos Santos EXERCÍCIO ICMS pode ser diferenciado dependendo do tipo de produto. Para evitar que um programa chame cada classe específica para calcular o ICMS, pode-se criar uma interface que vai ser acionada pelo programa. A implementação dela está nas classes específicas de cada produto. public interface ICMS { static final double aliquota = 0.9; public abstract double meuICMS(); } IMPLEMENTA class Carro implements ICMS { String fabricante, modelo; int ano, vel_max, peso; float preco; int num_rodas = 4; int } num_portas; public double meuICMS() { return 0.17 * preco; } } class Consultoria implements ICMS { double valor; public double meuICMS() { return 0.1 * valor; } REFERÊNCIAS BIBLIOGRÁFICAS “Conceitos Essenciais de Computação com Java”. C. Horstmann. Ed. Bookman. “Java – Como Programar”, Deitel & Deitel, 6a. Edição, Ed. Prentice Hall. 2005. “Interfaces X Classes Abstratas”. DevMedia. Artigo disponível no seguinte link: http://www.devmedia.com.br/interfaces-x-classes-abstratas/13337. (Acessado em 30/08/13). Memória de aula do professor Vieira, J. R. “Classe Abstrata e Interface”. Memória de aula do professor Faria, Tadeu dos Reis “Revisão conceitos”. Prof. Marcelo Henrique dos Santos