Classes Abstratas

20
Classes Abstratas P. O. O. Prof. Ângela e Grace

description

Classes Abstratas. P. O. O. Prof. Ângela e Grace. 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. - PowerPoint PPT Presentation

Transcript of Classes Abstratas

Page 1: Classes Abstratas

Classes Abstratas

P. O. O.

Prof. Ângela e Grace

Page 2: Classes Abstratas

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.

Page 3: Classes Abstratas

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.

Page 4: Classes Abstratas

4

Formas geométricas

Formas geométricas

área( )

área = (b x h)/2

área = b x h

área = π x r2

Page 5: Classes Abstratas

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?

Page 6: Classes Abstratas

6

Classe FormaGeometrica

Atributo protected

Método concreto

Page 7: Classes Abstratas

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?

Page 8: Classes Abstratas

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().

Page 9: Classes Abstratas

9

Classe Circulo com Método Area( )

Usa classe Math

Implementa Area( )

Page 10: Classes Abstratas

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?

Page 11: Classes Abstratas

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!

Page 12: Classes Abstratas

12

Classe Circulo - Método imprime( )

sobrescreve imprime( )

Page 13: Classes Abstratas

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.

Page 14: Classes Abstratas

14

Alterando a superclasse

Page 15: Classes Abstratas

15

Exemplo 02 – Subclasse Retangulo

Atributos básicos– Base– Altura

Métodos– Sets/ Gets– Construtor (base, altura)– area()– imprime()

Page 16: Classes Abstratas

16

Classe Retangulo

Page 17: Classes Abstratas

17

Classe Retangulo (cont.)

Page 18: Classes Abstratas

18

Teste Formas

Page 19: Classes Abstratas

19

Atividade 31

Codifique a classe Triângulo Crie uma classe de teste com as 3 formas

geométricas: Circulo, Retangulo e Triangulo.

Page 20: Classes Abstratas

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