Download - Classes Abstratas
![Page 1: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/1.jpg)
Classes Abstratas
P. O. O.
Prof. Ângela e Grace
![Page 2: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/4.jpg)
4
Formas geométricas
Formas geométricas
área( )
área = (b x h)/2
área = b x h
área = π x r2
![Page 5: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/6.jpg)
6
Classe FormaGeometrica
Atributo protected
Método concreto
![Page 7: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/9.jpg)
9
Classe Circulo com Método Area( )
Usa classe Math
Implementa Area( )
![Page 10: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/12.jpg)
12
Classe Circulo - Método imprime( )
sobrescreve imprime( )
![Page 13: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/14.jpg)
14
Alterando a superclasse
![Page 15: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/15.jpg)
15
Exemplo 02 – Subclasse Retangulo
Atributos básicos– Base– Altura
Métodos– Sets/ Gets– Construtor (base, altura)– area()– imprime()
![Page 16: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/16.jpg)
16
Classe Retangulo
![Page 17: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/17.jpg)
17
Classe Retangulo (cont.)
![Page 18: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/18.jpg)
18
Teste Formas
![Page 19: Classes Abstratas](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022083006/56813ab1550346895da2b175/html5/thumbnails/20.jpg)
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