Post on 05-Jan-2016
description
Classes Abstratas
P. O. O.
Prof. Ângela e Grace
2
Classe Abstrata
Classes demasiadamente gerais para criar objetos reais.
Utilizadas como superclasses para subclasses concretas
Declara atributos e comportamentos comuns das várias
classes em uma hierarquia.
Em geral, uma classe abstrata contém um ou mais
métodos abstratos
Atributos e métodos concretos de uma classe abstrata
estão sujeitos às regras normais da herança.
3
Palavra-chave abstract
Utilizada para declarar uma classe abstrata.
Utilizada para declarar um método abstrato:– Classes abstratas contêm um ou mais métodos abstratos.
– Todas as subclasses concretas devem sobrescrever
todos os métodos abstratos herdados.
Tentar instanciar um objeto de uma classe abstrata
é um erro de compilação.
4
Formas geométricas
Formas geométricas
área( )
área = (b x h)/2
área = b x h
área = π x r2
5
Classe Abstrata: Forma Geométrica
Atributos básicos– Número de lados
Métodos– Set/ get número de lados: métodos não abstratos– Área: método abstrato– Imprime(): método não abstrato– Precisa construtor?
6
Classe FormaGeometrica
Atributo protected
Método concreto
7
Classe Circulo
public class Circulo extends FormaGeometrica{ private double raio; // atributo especifico do circulo
public void setRaio (double raio) { if (raio<0) this.raio = 0; else this.raio = raio; } public Circulo (double raio) // construtor { setRaio(raio); }
} Compila?
8
Classe concreta X superclasse abstrata
Classes abstratas contêm um ou mais
métodos abstratos. No caso da forma
geométrica: método area().
Todas as subclasses concretas devem
sobrescrever todos os métodos abstratos
herdados. No caso do círculo, devemos
sobrescrever o método area().
9
Classe Circulo com Método Area( )
Usa classe Math
Implementa Area( )
10
Classe TesteFormas
public class TesteFormas{ public static void main (String args[]) { FormaGeometrica f = new FormaGeometrica();
f.imprime();
Circulo c = new Circulo(5);c.imprime();
}}
Funciona?
11
Alterações
Classes abstratas não podem ser instanciadas.– Corrigir código do teste
O que o método imprime(), quando invocado a partir
de um objeto circulo deve imprimir na tela?
Como imprimir raio junto ao número de lados?
Altero em Circulo ou FormaGeometrica?
Redefinir método imprime( ) na classe circulo!
12
Classe Circulo - Método imprime( )
sobrescreve imprime( )
13
Mais alterações...
Como imprimir área da forma geométrica instanciada? No caso, a área do circulo...
Altero na classe Círculo? Ou na FormaGeometrica? Redefinir método imprime( ) incluindo
área.
14
Alterando a superclasse
15
Exemplo 02 – Subclasse Retangulo
Atributos básicos– Base– Altura
Métodos– Sets/ Gets– Construtor (base, altura)– area()– imprime()
16
Classe Retangulo
17
Classe Retangulo (cont.)
18
Teste Formas
19
Atividade 31
Codifique a classe Triângulo Crie uma classe de teste com as 3 formas
geométricas: Circulo, Retangulo e Triangulo.
20
Próximas Aulas
16/05: Lista de Exercícios
23/05: Prova 2
30/05: Interface e Componentes GUI
06/06: Interface e Componentes GUI
13/06: Substitutiva