O que é Abstração em OOP?

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

1. O que é Abstração?

A abstração é o processo de ocultar os detalhes internos de um aplicativo do mundo exterior. A abstração é usada para descrever as coisas de maneira simples. É usada para criar um limite entre o aplicativo e os programas do 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 iniciar. Você não precisa saber como o motor está sendo iniciado, quais todos os componentes que seu carro possui. A implementação interna do carro e a lógica complexa são completamente ocultas do usuário.
  • Nós 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. Fomos disponibilizados a funcionalidade de uma maneira muito simples.

3. Abstração em OOPS

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 exterior através de modificadores de acesso. Podemos fornecer acesso apenas para as 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, isso cria abstração de dados. Se necessário, o acesso aos dados do objeto é fornecido através de alguns métodos.

Data Abstraction

4.2) Abstração de Processo

Não precisamos 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, isso cria 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 analisar 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 da implementação interna são ocultados do programa cliente. Referências: Wikipedia, Documentação da Oracle

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