Você está na página 1de 4

22/08/2012

Programao Orientada a Objetos Classes Abstratas


Tcnico em Informtica
Prof. Marcos Andr Pisching, M.Sc.

Classes Abstratas

Programao Orientada a Objetos

Classes Abstratas
Abstrao
Devemos considerar as qualidades e comportamentos independentes dos objetos a que pertencem, isolamos seus atributos considerando o que certo grupo de objetos tm em comum. Por exemplo:
Imagine uma mesa:
Logo, qualquer um, ter a imagem de uma mesa que tenha ps, uma base e uma finalidade. Mas no importa quantos ps, ou tipo de base ou a finalidade da mesa. Isso no far com que a mesa imaginria, deixe de ser uma mesa. Ela sempre ser uma mesa.

Classes Abstratas Abstrao


Na programao necessrio dizer ao computador para ser um objeto mesa.
Mas antes disso preciso dizer a este objeto qual seria a sua estrutura inicial. Neste caso teremos uma classe abstrata Mesa.

Assim, classes abstratas servem como base para outras classes que queiram ser do mesmo grupo de objetos.

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

Classes Abstratas Abstrao


Uma classe abstrata no pode ser instanciada. No possvel usar o new para criar um novo objeto de uma classe abstrata. Uma classe abstrata s pode ser herdada, e todo mtodo, propriedade, evento que for abstrato dever ser implementado pela classe filha.

Exemplo classe abstrata Implementao Conta Bancria

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

Programao Orientada a Objetos

22/08/2012

Classes Abstratas - exemplo No banco, todas as contas so de um tipo especfico.


Por exemplo, conta poupana, conta corrente ou conta salrio. Essas contas poderiam ser modeladas atravs das seguintes classes utilizando o conceito de herana:
Projeto Netbeans - Exemplo: ExercicioPOOBanco_Heranca_ClassesAbstratas
Programao Orientada a Objetos
Prof. Marcos Andr Pisching 7

Classes Abstratas - exemplo

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

Classes Abstratas - exemplo


Para cada conta do domnio do banco, devemos criar um objeto da classe correspondente ao tipo da conta.
Por exemplo, se existe uma conta poupana no domnio do banco, devemos criar um objeto da classe ContaPoupanca.

Classes Abstratas - exemplo


No faz sentido criar um objeto da classe Conta pois estaramos instanciado um objeto que no suficiente para representar uma conta que pertena ao domnio do banco. Mas, a princpio no h nada proibindo a criao de objetos dessa classe. Para adicionar essa restrio no sistema, devemos tornar a classe Conta abstrata. Uma classe concreta pode ser diretamente utilizada para instanciar objetos. Por outro lado, uma classe abstrata no pode. Para definir uma classe abstrata, basta adicionar o modificador abstract.

Faz sentido criar objetos da classe ContaPoupanca pois existem contas poupana no domnio do banco. Logo, dizemos que a classe ContaPoupanca uma classe concreta pois Podemos criar objetos a partir dela.
Por outro lado, a classe Conta no define uma conta que de fato existe no domnio do banco. Ela apenas serve como base (super classe) para definir as contas concretas.

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

10

Classes Abstratas - exemplo


Exemplo:

Exemplo classe abstrata Implementao Mtodo Abstrato Conta Bancria


Todo cdigo que tenta criar um objeto de uma classe abstrata no compila.

Instanciar!!!

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

11

Programao Orientada a Objetos

12

22/08/2012

Mtodos Abstratos - exemplo


Suponha que o banco oferea extrato detalhado das contas e para cada tipo de conta as informaes e o formato desse extrato detalhado so diferentes. Alm disso, a qualquer momento o banco pode mudar os dados e o formato do extrato detalhado de um dos tipos de conta. Neste caso, parece no fazer sentido ter um mtodo na classe Conta para gerar extratos detalhados pois ele seria reescrito nas classes especficas sem nem ser reaproveitado.

Mtodos Abstratos - exemplo


Poderamos, simplesmente, no definir nenhum mtodo para gerar extratos detalhados na classe Conta. Porm, no haveria nenhuma garantia que as classes que derivam direta ou indiretamente da classe Conta implementem mtodos para gerar extratos detalhados. Mas, mesmo supondo que toda classe derivada implemente um mtodo para gerar os extratos que desejamos, ainda no haveria nenhuma garantia em relao as assinaturas desses mtodos. As classes derivadas poderiam definir mtodos com nomes ou parmetros diferentes. Isso prejudicaria a utilizao dos objetos que representam as contas devido a falta de padronizao das operaes.

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

13

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

14

Mtodos Abstratos - exemplo


Para garantir que toda classe concreta que deriva direta ou indiretamente da classe Conta tenha uma implementao de mtodo para gerar extratos detalhados e alm disso que uma mesma assinatura de mtodo seja utilizada, devemos utilizar o conceito de mtodos abstratos.
Na classe Conta, definimos um mtodo abstrato para gerar extratos detalhados. Um mtodo abstrato no possui corpo (implementao).

Mtodos Abstratos - exemplo


Para garantir que toda classe concreta que deriva direta ou indiretamente da classe Conta tenha uma implementao de mtodo para gerar extratos detalhados e alm disso que uma mesma assinatura de mtodo seja utilizada, devemos utilizar o conceito de mtodos abstratos.
Na classe Conta, definimos um mtodo abstrato para gerar extratos detalhados. Um mtodo abstrato no possui corpo (implementao).

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

15

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

16

Mtodos Abstratos - exemplo


As classes concretas que derivam direta ou indiretamente da classe Conta devem possuir uma implementao para o mtodo imprimirExtratoDetalhado().

Mtodos Abstratos - exemplo


Se uma classe concreta derivada da classe Conta no possuir uma implementao do mtodo imprimirExtratoDetalhado()ela no compilar.
Uma classe herdeira dever implementar todas os mtodos abstratos da super classe.

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

17

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

18

22/08/2012

Mtodos Abstratos - exemplo


Instanciando objetos e usando mtodos:
Uma varivel poder ser declarada com o supertipo mas a instncia ter que ser de um subtipo concreto.

Referncias Bibliogrficas
www.k19.com.br (o contedo deste material baseado na apostila C# e Orientao a Objetos, de propriedade da K19 Treinamentos) Polimorfismo. Disponvel em: http://techblog.desenvolvedores.net/2011/02/12/p olimorfismo-poo/. Acessado em: 02/06/2012. Agradecimento:
Agradeo a K19 pela disponibilizao da excelente apostila sobre C# e Orientao a Objetos.

Para lembrar: Esta implementao tambm nos possibilitar a implementao do conceito de polimorfismo.

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

19

Programao Orientada a Objetos


Prof. Marcos Andr Pisching

20