Programação Orientada a Objetos: Classes Abstratas

porLuis Augusto Moretto

Programação Orientada a Objetos: Classes Abstratas

Programação orientada a objetos

O que é a Abstração?

A Abstração é um processo de ocultar os detalhes de implementação e mostrar apenas funcionalidades para o usuário.

Mostra apenas coisas importantes para o usuário e esconde os detalhes internos, por exemplo: Enviando sms, basta digitar o texto e enviar a mensagem. 

Você não conhece o processamento interno sobre a entrega da mensagem.

A abstração permite que você se concentre no que o objeto faz em vez de como ele faz.

Existem duas formas de implementar a abstração. Uma delas é através de classes abstratas e a outra através de interfaces.

Classes Abstratas: Características

Uma  classe abstrata  em JAVA, é uma classe que foi declarada com o modificador abstract.

Pode ou não incluir métodos abstratos. As classes abstratas não podem ser instanciadas, mas podem ser heradadas.

Um método abstrato é um método que é declarado sem implementação (sem chaves e seguido de ponto e vírgula), assim:

abstract void moveTo (double deltaX, double deltaY);

Se uma classe inclui métodos abstratos, a classe em si deve ser declarada abstract, como em:

classe abstrata pública PseudoObjeto{
   // declarar atributos
   // declarar métodos não resumidos
   abstract void draw ();
}

Quando uma classe abstrata é herdada, a subclasse geralmente fornece implementações para todos os métodos abstratos em sua classe pai. No entanto, se não, a subclasse também deve ser  declarada abstract.

Caso de uso

Suponhamos que estivemos modelando o comportamento dos animais, criando uma hierarquia de classes que começou com uma classe base chamada Animal.

Os animais são capazes de fazer coisas diferentes como voar, cavar e caminhar, mas há algumas operações comuns, bem como comer e dormir.

Algumas operações comuns são realizadas por todos os animais, mas também de maneira diferente.

Quando uma operação é realizada de forma diferente, é um bom candidato para um método abstrato (forçando subclasses a fornecer uma implementação personalizada).

Vejamos um exemplo de uso de uma  classe base Animal abstrata. A classe define um método abstrato para fazer um som (como um ladrido de cachorro, um moo de vaca ou um ovo de porco).

Cada subclasse de Animal é responsável por definir o comportamento.

Exemplo

Neste exemplo, Bike a classe abstrata que contém apenas um método abstrato executado. 

A implementação é fornecida pela classe Honda.

Classes abstratas em Java

Referência