Abstração em Java

O que é abstração em Java?

Abstração é o conceito de programação orientada a objetos que “mostra” apenas atributos essenciais e “esconde” informações desnecessárias. O principal propósito da abstração é esconder os detalhes desnecessários dos usuários. Abstração é selecionar dados de um conjunto maior para mostrar apenas detalhes relevantes do objeto para o usuário. Ajuda a reduzir a complexidade e os esforços de programação. É um dos conceitos mais importantes de POO.

Clique aqui. se o vídeo não estiver acessível

Vamos estudar abstração em OOPs com exemplo:

Suponha que você queira criar um aplicativo bancário e seja solicitado a coletar todas as informações sobre seu cliente. Há chances de você encontrar as seguintes informações sobre o cliente

Abstração em Java
Abstração em Java

Mas, nem todas as informações acima são necessárias para criar um aplicativo bancário. Então, você precisa selecionar apenas as informações úteis para o seu aplicação bancária daquela piscina. Dados como nome, endereço, informações fiscais, etc. fazem sentido para uma aplicação bancária que é um exemplo de abstração em OOPs

Abstração em Java

Como buscamos/removemos/selecionamos as informações do cliente de um conjunto maior, o processo é referido como Abstração em OOPs. No entanto, as mesmas informações, uma vez extraídas, podem ser usadas para uma ampla gama de aplicações. Por exemplo, você pode usar os mesmos dados para inscrição em hospital, inscrição em portal de emprego, um banco de dados do governo, etc. com pouca ou nenhuma modificação. Portanto, eles se tornam seus Dados Mestres. Esta é uma vantagem da Abstração em POOs.

Diferença entre Abstração e Encapsulamento

Abstração Encapsulamento
A abstração na Programação Orientada a Objetos resolve os problemas no nível do design. O encapsulamento resolve o nível de implementação.
Abstração em programação consiste em ocultar detalhes indesejados enquanto mostra as informações mais essenciais. Encapsulamento significa vincular o código e os dados em uma única unidade.
Abstração de dados em Java permite focar no que o objeto de informação deve conter Encapsulamento significa ocultar os detalhes internos ou a mecânica de como um objeto faz algo por motivos de segurança.

Diferença entre classe abstrata e interface

Classe Abstrata Interface
Uma classe abstrata pode ter métodos abstratos e não abstratos. A interface pode ter apenas métodos abstratos.
Não suporta heranças múltiplas. Ele suporta heranças múltiplas.
Ele pode fornecer a implementação da interface. Não pode fornecer a implementação da classe abstrata.
Uma classe abstrata pode ter métodos públicos abstratos e protegidos. Uma interface pode ter apenas métodos abstratos públicos.
Uma classe abstrata pode ter uma variável final, estática ou final estática com qualquer especificador de acesso. A interface só pode ter uma variável final estática pública.

O que é classe abstrata?

AULA ABSTRATA é um tipo de aula em Java, que declaram um ou mais métodos abstratos. Essas classes podem ter métodos abstratos e também métodos concretos. Uma classe normal não pode ter métodos abstratos. Uma classe abstrata é uma classe que contém pelo menos um método abstrato. Podemos entender o conceito pela exemplo de forma em java.

Considere a seguinte hierarquia de classes que consiste em uma classe Shape que é herdada por três classes Rectangle, Circle e Triangle. A classe Shape é criada para economizar atributos e métodos comuns compartilhados pelas três classes Rectangle, Circle e Triangle. calculaArea() é um método compartilhado por todas as três classes filhas e presente na classe Shape.

Classe abstrata em Java

Exemplo de abstração de forma

Agora, suponha que você escreva código para criar objetos para as classes descritas acima. Vamos observar como esses os objetos parecerão em um mundo prático. Um objeto da classe retângulo dará um retângulo, uma forma que tão comumente observamos na vida cotidiana.

Classe Abstrata

Um objeto da classe triângulo dará um triângulo, novamente uma forma comum do dia a dia.

Classe Abstrata

Mas como seria um objeto de Class Shape em um mundo prático?

Classe Abstrata

Se você observar que a classe Shape serve em nosso objetivo de alcançar herança e polimorfismo. Mas não foi construído para ser instanciado. Essas classes podem ser rotuladas Sumário. Uma classe Java abstrata não pode ser instanciada.

Sintaxe:

abstract class Shape{
	// code
}

É possível que você NÃO rotule a classe Shape como Abstrata e depois a instancie. Mas tal objeto não terá utilidade em seu código e abrirá espaço para possíveis erros. Portanto, isso não é desejável.

O que são métodos abstratos em Java?

MÉTODO ABSTRATO in Java, é um método que possui apenas a definição do método, mas não contém implementação. Um método sem corpo é conhecido como Método Abstrato. Deve ser declarado em uma classe abstrata. O método abstrato nunca será final porque a classe abstrata deve implementar todos os métodos abstratos.

Como todos sabemos, a fórmula para calcular a área de retângulo, círculo e triângulo é diferente. O método calculaArea() terá que ser substituído pelas classes herdadas. Não faz sentido defini-lo na classe Shape, mas precisamos ter certeza de que todas as classes herdadas possuem o método.

Tais métodos podem ser rotulados resumo.

Sintaxe:

abstract public void calculateArea();

Para um método abstrato, nenhuma implementação é necessária. Apenas a assinatura do método é definida.

Exemplo de código de abstração

abstract class Shape{  
  abstract void calculateArea();  
}  
 class guru99 extends Shape{  
void calculateArea(){System.out.println("Area of Shape");}  
public static void main(String args[]){  
 Shape obj = new guru99();  
 obj.calculateArea();
}  
}

Vantagens da Abstração

  • O principal benefício de usar uma Abstração em Programação é que permite agrupar várias classes relacionadas como irmãs.
  • A abstração na Programação Orientada a Objetos ajuda a reduzir a complexidade do processo de design e implementação de software.

Palavra-chave final em Java

O modificador final se aplica a classes, métodos e variáveis. O significado de final varia de contexto para contexto, mas a ideia essencial é a mesma.

  • Uma classe final não pode ser herdada
  • Uma variável final torna-se uma constante e seu valor não pode ser alterado.
  • Um método final não pode ser substituído. Isso é feito por motivos de segurança e esses métodos são usados ​​para otimização.

Exemplo : - Para aprender palavras-chave abstratas e finais

Passo 1) Copie o código a seguir em um Editor.

abstract class Shape{
   final int b = 20;
   public void display(){
     System.out.println("This is display method");
   }
   abstract public void calculateArea();
}

public class Rectangle extends Shape{
   public static void main(String args[]){
      Rectangle obj = new Rectangle();
      obj.display();
     //obj.b=200;
  }
  //public void calculateArea(){}
}

Passo 2) Salve, compile e execute o código.

Passo 3) Erro =? O método abstrato não é implementado na classe Rectangle. Para corrigir o problema, remova o comentário da linha 15.

Passo 4) Remova o comentário da linha nº 13. Salve e compile o código.

Passo 5) Erro = ? variável b é final

Quando usar métodos abstratos e classes abstratas?

Métodos abstratos são declarados principalmente onde duas ou mais subclasses também fazem a mesma coisa de maneiras diferentes por meio de implementações diferentes. Também estende a mesma classe Abstract e oferece diferentes implementações dos métodos abstratos.

Classes abstratas ajudam a descrever tipos genéricos de comportamentos e hierarquia de classes de programação orientada a objetos. Também descreve subclasses para oferecer detalhes de implementação da classe abstrata.

Resumo:

  • Abstração em Programação é o processo de seleção de conjuntos de dados importantes para um objeto em seu software e deixando de fora os insignificantes.
  • Depois de modelar seu objeto usando Abstração de Dados no Java, o mesmo conjunto de dados pode ser usado em aplicações diferentes.

Resuma esta postagem com: