O Que é Abstração em POO?

A abstração é um dos principais conceitos da Programação Orientada a Objetos. A abstração define um modelo para criar um componente de aplicação. A implementação da abstração depende das funcionalidades e processos específicos da linguagem.

1. O que é Abstração?

A abstração é o processo de ocultar os detalhes internos de uma aplicação do mundo exterior. A abstração é usada para descrever coisas de forma simples. É usada para criar uma fronteira entre a aplicação e os programas cliente.

2. Abstração na Vida Real

A abstração está presente em quase todas as máquinas da vida real.

  • Seu carro é um ótimo exemplo de abstração. Você pode iniciar um carro girando a chave ou pressionando o botão de partida. Você não precisa saber como o motor está sendo iniciado, quais componentes seu carro possui. A implementação interna do carro e a lógica complexa são completamente ocultas do usuário.
  • Podemos aquecer nossa comida no Micro-ondas. Pressionamos alguns botões para definir o temporizador e o tipo de comida. Finalmente, obtemos uma refeição quente e deliciosa. Os detalhes internos do micro-ondas estão ocultos de nós. Foi-nos dado acesso à funcionalidade de maneira muito simples.

3. Abstração em OOPS

Os objetos são os blocos de construção da Programação Orientada a Objetos. Um objeto contém algumas propriedades e métodos. Podemos ocultá-los do mundo externo através de modificadores de acesso. Podemos fornecer acesso apenas para funções e propriedades necessárias para outros programas. Este é o procedimento geral para implementar a abstração em OOPS.

4. Quais são os diferentes tipos de abstração?

Há dois tipos de abstração.

  1. Abstração de Dados
  2. Abstração de Processo

4.1) Abstração de Dados

Quando os dados do objeto não são visíveis para o mundo exterior, cria-se a abstração de dados. Se necessário, o acesso aos dados do objeto é fornecido por meio de alguns métodos.

Data Abstraction

4.2) Abstração de Processo

Não é necessário fornecer detalhes sobre todas as funções de um objeto. Quando ocultamos a implementação interna das diferentes funções envolvidas em uma operação do usuário, cria-se uma abstração de processo.

Process Abstraction

5. Abstração em Java

A abstração em Java é implementada por meio de interfaces e classes abstratas. Elas são usadas para criar uma implementação base ou contrato para as classes de implementação reais. Carro.java: Interface base ou classe abstrata

package com.journaldev.oops.abstraction;

public interface Car {

	void turnOnCar();

	void turnOffCar();

	String getCarType();
}

CarroManual.java, CarroAutomatico.java: classes de implementação do Carro.

package com.journaldev.oops.abstraction;

public class ManualCar implements Car {

	private String carType = "Manual";
	
	@Override
	public void turnOnCar() {
		System.out.println("turn on the manual car");
	}

	@Override
	public void turnOffCar() {
		System.out.println("turn off the manual car");
	}

	@Override
	public String getCarType() {
		return this.carType;
	}
}
package com.journaldev.oops.abstraction;

public class AutomaticCar implements Car {

	private String carType = "Automatic";

	@Override
	public void turnOnCar() {
		System.out.println("turn on the automatic car");
	}

	@Override
	public void turnOffCar() {
		System.out.println("turn off the automatic car");
	}

	@Override
	public String getCarType() {
		return this.carType;
	}
}

Programa do Usuário: Vamos olhar um programa de teste onde as funções do Carro serão utilizadas.

package com.journaldev.oops.abstraction;

public class CarTest {

	public static void main(String[] args) {
		Car car1 = new ManualCar();
		Car car2 = new AutomaticCar();

		car1.turnOnCar();
		car1.turnOffCar();
		System.out.println(car1.getCarType());

		car2.turnOnCar();
		car2.turnOffCar();
		System.out.println(car2.getCarType());

	}

}

O programa cliente só conhece o Carro e as funções que o Carro fornece. Os detalhes de implementação interna são ocultados do programa cliente. Referências: Wikipedia, Oracle Docs

Source:
https://www.digitalocean.com/community/tutorials/what-is-abstraction-in-oops