Como implementar a abstração de dados em Java?

Publicados: 2022-05-17

Abstração, polimorfismo, encapsulamento e herança são os quatro elementos básicos da programação orientada a objetos. Uma delas, a Abstração de Dados, será discutida em detalhes no artigo a seguir. Também aprenderemos como realizar a abstração de dados em Java.

Índice

O que é abstração de dados?

A abstração de dados é o recurso característico onde apenas os detalhes mais importantes são mostrados ao usuário. O usuário é mantido inconsciente dos detalhes triviais ou não essenciais. Por exemplo, um automóvel é considerado como um todo e não como suas partes distintas. A prática de identificar apenas os atributos necessários de um item enquanto descarta as informações estranhas é conhecida como abstração de dados.

Em termos simples, a abstração de dados exibe itens importantes para o usuário, mantendo ocultos elementos insignificantes.

Usamos a palavra-chave “abstract” para implementar a abstração com a ajuda de classes e interfaces. Podemos ter métodos abstratos e concretos em classes abstratas.

O que são classes abstratas?

Na Programação Orientada a Objetos, uma classe abstrata é uma classe que declara um ou mais métodos abstratos. A única distinção entre classes Java abstratas e regulares é que as classes abstratas contêm a palavra-chave abstract, enquanto as classes Java regulares não. Para a declaração de uma classe abstrata, usamos a palavra-chave abstract antes do nome da classe. Pode haver métodos abstratos e concretos em classes. No entanto, métodos abstratos não podem estar presentes em classes regulares. Uma classe com pelo menos um método abstrato é chamada de classe abstrata.

Sua sintaxe é:

classe abstrata pública Name_of_Class

{

public abstract Name_of_Method();

}

Um exemplo de implementação de classe abstrata é:

//nomeação de classe abstrata

classe abstrata DemoClass

{

//nomeação de método abstrato

abstract void disp();

}

//continuando com a classe abstrata

classe pública MainClass estende DemoClass

{

//definindo o corpo do método da classe abstrata

void display()

{

System.out.println(“Método abstrato chamado.”);

}

public static void main(String[] args)

{

MainClass obj = new MainClass();

//invocando o método abstrato

obj.display();

}

}

Para listar pontualmente:

  • Uma classe deve ser definida como abstrata se tiver pelo menos um método abstrato.
  • Uma classe que foi declarada abstrata não pode ser instanciada.
  • Você deve herdar uma classe abstrata de outra classe e fornecer implementações para que seus métodos abstratos a utilizem.
  • Você deve fornecer implementações para todos os métodos abstratos em uma classe abstrata se a herdar.

O que são Métodos Abstratos?

Um método abstrato tem apenas a declaração do método e nenhuma implementação. Um método abstrato pode ser representado por um método sem um corpo próprio. Métodos abstratos devem ser declarados exclusivamente dentro de classes abstratas.

Se você quiser que uma classe tenha um método, mas a implementação real desse método seja determinada por classes filhas, designe o método como abstrato na classe pai.

Vantagens da abstração de dados na programação orientada a objetos

  • Na Programação Orientada a Objetos, a abstração reduz a complexidade do projeto do programa e o processo de sua implementação no software.
  • A principal vantagem da implementação da abstração na programação Java é que os usuários podem organizar facilmente as classes com base em semelhanças, como irmãos e, portanto, a herança de dados e a migração de dados se tornam fáceis e viáveis.
  • A herança é possível. Por exemplo:

/* Nome do arquivo: DemoAbstract.java */

public class DemoResumo {

public static void main(String [] args) {

/* o seguinte não pode ser escrito e iniciar erros */

funcionário e = novo funcionário(“Peter D.”, “Hartford, CT”, 35);

System.out.println(“\n Use referência de funcionário e chame MailCheck–“);

e.mailCheck();

}

}

Isso mostra o seguinte erro:

Employee.java:46: Employee é abstrato; não pode ser instanciado

funcionário e = novo funcionário(“Peter D.”, “Hartford, CT”, 35);

^

1 erro

Então, usamos o uso da classe abstrata como:

/* Nome do arquivo: empregado.java */

funcionário público de classe abstrata {

cadeia privada N;

private String Adicionar;

private int Num;

public Employee(String N, String Add, int Num) {

System.out.println(“Construindo um funcionário”);

este.nome = N;

this.address = Adicionar;

this.number = Num;

}

public double compute_pay() {

System.out.println(“Inside Employee compute_pay”);

retorno 0,0;

}

public void Mailcheck() {

System.out.println(“Enviando um cheque para ” + this.name + ” ” + this.address);

}

public String toString() {

return N + ” ” + Adicionar + ” ” + N;

}

public String getNome() {

retornar N;

}

public String getAddress() {

retornar Adicionar;

}

public void setAddress(String newAddress) {

Adicionar = novoEndereço;

}

public int getNumero() {

retornar Num;

}

}

Quando usamos classe abstrata ou métodos abstratos?

Quando consideramos o exemplo geral de “formas”, podemos imaginá-lo sendo usado em referência a um sistema de design assistido por computador ou para uma simulação de videogame. O tipo fundamental referido aqui é uma “forma”, com cada forma tendo seus próprios atributos de cor, tamanho, etc. podem ter propriedades e comportamentos exclusivos extras. Certas formas, por exemplo, podem ser simétricas, enquanto outras não. Tanto as semelhanças quanto as diferenças distintas entre as formas são incorporadas na hierarquia de tipos.

Portanto, forma pode ser análoga a uma classe abstrata, enquanto os diferentes tipos de formas podem ser denotados como classes concretas.

Aqui está um cenário da vida real para explicar classes abstratas:

// Programa Java para demonstrar Abstração

forma de classe abstrata {

Cor da corda;

área dupla abstrata();

public abstract String toString();

// classe abstrata pode ter o construtor

forma pública (cor da corda)

{

System.out.println(“Construtor de forma chamado”);

this.color = cor;

}

// este é um método concreto

public String getColour() { return color; }

}

class Circle estende a forma {

duplo r;

public Circle(Cor da string, double(r)

{

// chamando o construtor Shape

super(cor);

System.out.println(“Construtor de círculo chamado”);

este.r = r;

}

@Substituir área dupla()

{

return Math.PI * Math.pow(r, 2);

}

@Override public String toString()

{

return “A cor do círculo é ” + super.getColor()

+ “e área é: ” + área();

}

}

class Rectangle estende a forma {

comprimento duplo;

largura dupla;

public Rectangle(Cor da string, comprimento duplo,

largura dupla)

{

// chamando o construtor Shape

super(cor);

System.out.println(“Construtor de retângulo chamado”);

this.comprimento = comprimento;

this.width = largura;

}

@Override double area() { return comprimento * largura; }

@Override public String toString()

{

return “A cor do retângulo é” + super.getcolor()

+ “e área é: ” + área();

}

}

classe pública Teste {

public static void main(String[] args)

{

Forma s1 = new Círculo(“Vermelho”, 2.2);

Forma s2 = new Rectangle(“Amarelo”, 2, 4);

System.out.println(s1.toString());

System.out.println(s2.toString());

}

}

Este segmento de código é uma versão modificada do aqui .

Um trecho de código de um programa onde a abstração de dados em Java é usada:

// Abstração em Java

classe abstrata ElecBill

{

//método abstrato

resumo float compBill();

}

classe Comm estende ElecBill

{

float compBill() {

retornar 1,00*100;

}

}

classe Doméstica estende ElecBill

{

float compBill() {

retorna 0,50*75;

}

}

Conclusão

A abstração de dados é um aspecto importante da programação orientada a objetos. Para linguagens como Java, abstração e outros conceitos de POO como herança, encapsulamento e polimorfismo desempenham um papel crucial na escrita de programas eficientes.

Se você deseja aprender OOPs em profundidade e adquirir habilidades de programação de primeira classe, recomendamos ingressar na Certificação PG vinculada ao trabalho do upGrad em Engenharia de Software, projetada para ajudar os alunos a adquirir habilidades em Java, OODAP, DSA, HTML5, CSS3 , JavaScript, MERN, AWS, bancos de dados SQL e NoSQL, Spring Boot, etc. O curso de 5 meses abrange duas especializações - Especialização MERN Stack e Especialização Cloud-Native e fornece acesso a sessões de aconselhamento de carreira upGrad 360°.

Aprenda cursos de desenvolvimento de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

O que é polimorfismo? Como é diferente da abstração de dados?

O polimorfismo é uma generalização, semelhante à abstração de dados, mas ocorre em tempo de execução. Se houver um mecanismo para acessar uma coleção de tipos de objetos distintos nos quais eles são indistinguíveis uns dos outros, eles são polimórficos. Assim, mesmo que não sejam idênticos, todos os objetos dentro deles têm a mesma aparência e sensação. O objetivo é diminuir drasticamente a codificação. Em vez de escrever todas as inúmeras permutações para cada tipo individual, você pode escrever uma solução universal.

Quais são as diferenças entre encapsulamento e abstração de dados?

ENCAPSULAÇÃO - 1. O encapsulamento oculta os dados (informações), enquanto a abstração oculta os detalhes (ocultação da implementação). 2. A abstração da Programação Orientada a Objetos resolve problemas no nível do projeto. 3. Para fins de segurança, o encapsulamento implica ocultar as informações internas ou mecânicas de como um objeto realiza algo. ABSTRAÇÃO - 1. Enquanto o encapsulamento une dados e métodos que operam nele, a abstração de dados se preocupa em expor a interface do usuário enquanto obscurece os detalhes da implementação. 2. É resolvido no nível de implementação por meio de encapsulamento. 3. Em Java, a abstração de dados permite que você se concentre no que o objeto de informação deve incluir.

Quais são as características distintivas entre interface e classe abstrata?

Interface - 1. Apenas métodos abstratos fazem parte da interface. 2. São suportadas heranças múltiplas. 3. Não pode oferecer a implementação da classe abstrata. 4. Apenas métodos abstratos públicos são permitidos em uma interface. 5. Apenas uma variável final estática pública pode ser usada na interface. Classe abstrata - 1. Os métodos abstratos, assim como os não abstratos, podem ser encontrados em uma classe abstrata. 2. Heranças múltiplas não são suportadas. 3. É capaz de implementar a interface. 4. Métodos públicos protegidos e abstratos são possíveis em uma classe abstrata. 5. Com qualquer especificador de acesso, uma classe abstrata pode ter variáveis ​​finais, estáticas ou estáticas.