A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação Orientada a Objetos

Apresentações semelhantes


Apresentação em tema: "Programação Orientada a Objetos"— Transcrição da apresentação:

1 Programação Orientada a Objetos
Classes Abstratas

2 3.8 Classes Abstratas Em uma hierarquia é útil padronizar os serviços providos pelas classes. Represente através de classes os seguintes polígonos: Retângulo, Quadrado, Elipse e Triângulo. Estes polígonos terão dois métodos básicos: calculaArea() e calculaPerimetro(). Alan Santos

3 3.8 Classes Abstratas Agora, para ser fácil trabalhar com um array de polígonos, seria útil que todos os polígonos possuíssem uma mesma superclasse, Polígono. Para isso, nós queremos que a classe Poligono contenha todas as estruturas que nossos polígonos tenham em comum (os métodos calculaArea() e calculaPerimetro()). Realize essa alteração usando herança. Alan Santos

4 3.8 Classes Abstratas Porém, esses métodos não podem ser implementados na classe Poligono, pois eles têm comportamentos diferentes. Por exemplo, a área de um triângulo é diferente da área de um quadrado. Java lida com essas situações através de métodos abstratos. Alan Santos

5 3.8 Classes Abstratas Java permite definir um método sem implementá- lo declarando o método com o modificador abstract. Um método abstract não possui corpo ele possui somente a definição da assinatura (nome, argumentos e tipo de retorno) seguida de um ponto-e-vírgula (;). Alan Santos

6 3.8 Classes Abstratas Realize essa alteração nas classes que você implementou, observe que haverá um erro de compilação Isso acontece por que toda classe que contém pelo menos um método abstract é uma classe abstrata e deve ser declarada como abstract. Elimine o erro, efetuando a correção devida. Alan Santos

7 3.8 Classes Abstratas Algumas regras para classes abstratas:
Uma classe abstrata não pode ser instanciada. Uma subclasse de uma classe abstrata pode ser instanciada somente se implementar todos os métodos abstratos. Se uma subclasse de uma classe abstrata não implementa todos os métodos abstratos que herda, então ela também é uma classe abstrata. Métodos static, private e final não podem ser abstratos (abstract), pois não podem ser sobrescritos na subclasse. Classes abstratas podem ter variáveis e métodos não abstratos. Alan Santos

8 3.8 Classes Abstratas Assim, se a classe Poligono possui os métodos abstratos circunferência ( ) e área ( ), é necessário que todas as subclasses de Poligono implementem estes métodos para que possam ser instanciadas. Efetue as definições destas classes no exemplo estudado. Alan Santos

9 3.8 Classes Abstratas Note que uma classe abstrata é implementada através da palavra-chave extends: class Retangulo extends Poligono{ A classe Retangulo não é abstrata e por este motivo implementa todos os métodos abstratos da classe Poligono. Além disso, como a classe Retangulo herda todas os métodos e variáveis da superclasse ela pode utilizar o método getType( ) implementado na classe abstrata Poligono. Alan Santos

10 3.8 Classes Abstratas Uma classe abstrata é uma classe que não tem instâncias diretas. Uma classe concreta é uma classe que pode ter instâncias. Em outras palavras se X é uma classe abstrata o código a seguir não pode ser executado: X objeto = new X(); Apesar disso, você pode criar construtores de uma classe abstrata para que eles sejam chamados pelos construtores das subclasses. (Reutilização) Alan Santos

11 3.8 Classes Abstratas O objetivo de criarmos classes abstratas é encapsular outras classes com comportamento comum. Elas podem surgir naturalmente na modelagem ou serem criadas para promover o reuso. Além disso, uma classe abstrata pode definir um protocolo para uma operação sem definir a implementação do método. public abstract class Poligono { // inicio da classe Poligono public abstract double calculArea(); public abstract double calculaPerimetro(); }// fim da classe Poligono Alan Santos

12 3.8 Classes Abstratas Assim, você pode declarar métodos abstratos em uma classe abstrata apenas para especificar um protocolo comum de operações. Toda subclasse concreta da classe abstrata deve fornecer uma implementação para TODOS os métodos abstratos: class Circulo extends Poligono { protected double raio; public Circulo(double r) { raio = r; } public double calculaArea() { return PI*raio*raio; public double calculaPerimetro() { return 2*PI*raio; Alan Santos

13 3.8 Classes Abstratas Se uma subclasse de uma classe abstrata não implementa todos os métodos abstratos então ela também é abstrata e Uma classe abstrata também pode ter métodos concretos. Frequentemente, faz sentido mover o máximo de funcionalidade possível para uma superclasse, seja ela abstrata ou não. Alan Santos


Carregar ppt "Programação Orientada a Objetos"

Apresentações semelhantes


Anúncios Google