Astrazione dentro Java

In cosa consiste l'astrazione Java?

Astrazione è il concetto di programmazione orientata agli oggetti che "mostra" solo gli attributi essenziali e "nasconde" le informazioni non necessarie. Lo scopo principale dell'astrazione è nascondere i dettagli non necessari agli utenti. L'astrazione è la selezione dei dati da un pool più ampio per mostrare solo i dettagli rilevanti dell'oggetto all'utente. Aiuta a ridurre la complessità e gli sforzi di programmazione. È uno dei concetti più importanti di OOP.

Clicchi qui se il video non è accessibile

Studiamo l'astrazione negli OOP con l'esempio:

Supponiamo che tu voglia creare un'applicazione bancaria e ti venga chiesto di raccogliere tutte le informazioni sul tuo cliente. Ci sono possibilità che tu ottenga le seguenti informazioni sul cliente

Astrazione dentro Java
Astrazione dentro Java

Ma non tutte le informazioni di cui sopra sono necessarie per creare una domanda bancaria. Quindi, devi selezionare solo le informazioni utili per il tuo applicazione bancaria da quella piscina. Dati come nome, indirizzo, informazioni fiscali, ecc. hanno senso per un'applicazione bancaria che è un esempio di astrazione negli OOP

Astrazione dentro Java

Poiché abbiamo recuperato/rimosso/selezionato le informazioni sul cliente da un pool più grande, il processo viene definito Astrazione in OOP. Tuttavia, le stesse informazioni una volta estratte possono essere utilizzate per un'ampia gamma di applicazioni. Ad esempio, puoi utilizzare gli stessi dati per la domanda di ammissione all'ospedale, la domanda di ammissione al portale di lavoro, un database governativo, ecc. con poche o nessuna modifica. Quindi, diventano i tuoi dati master. Questo è un vantaggio dell'astrazione in OOP.

Differenza tra astrazione e incapsulamento

Astrazione incapsulamento
L'astrazione nella programmazione orientata agli oggetti risolve i problemi a livello di progettazione. L'incapsulamento risolve il livello di implementazione.
L'astrazione nella programmazione consiste nel nascondere i dettagli indesiderati, pur mostrando le informazioni più essenziali. Incapsulamento significa vincolare il codice e i dati in una singola unità.
Astrazione dei dati in Java permette di focalizzare ciò che l'oggetto informativo deve contenere incapsulamento significa nascondere i dettagli interni o i meccanismi di funzionamento di un oggetto per motivi di sicurezza.

Differenza tra classe astratta e interfaccia

Classe astratta Interfaccia
Una classe astratta può avere sia metodi astratti che non astratti. L'interfaccia può avere solo metodi astratti.
Non supporta eredità multiple. Supporta eredità multiple.
Può fornire l'implementazione dell'interfaccia. Non può fornire l'implementazione della classe astratta.
Una classe astratta può avere metodi pubblici protetti e astratti. Un'interfaccia può avere solo metodi astratti pubblici.
Una classe astratta può avere una variabile finale, statica o statica con qualsiasi specificatore di accesso. L'interfaccia può avere solo una variabile finale statica pubblica.

Cos'è la classe astratta?

CLASSE ASTRATTA è un tipo di classe in Java, che dichiarano uno o più metodi astratti. Queste classi possono avere metodi astratti e metodi concreti. Una classe normale non può avere metodi astratti. Una classe astratta è una classe che contiene almeno un metodo astratto. Possiamo comprendere il concetto dal esempio di forma in Java.

Considerate la seguente gerarchia di classi costituita da una classe Shape ereditata da tre classi Rectangle, Circle e Triangle. La classe Shape è creata per risparmiare sugli attributi e sui metodi comuni condivisi dalle tre classi Rectangle, Circle e Triangle. calculateArea() è uno di questi metodi condiviso da tutte e tre le classi figlio e presente nella classe Shape.

Classe astratta in Java

Esempio di astrazione della forma

Supponiamo ora di scrivere codice per creare oggetti per le classi illustrate sopra. Osserviamo come questi gli oggetti guarderanno in un mondo pratico. Un oggetto della classe rettangolo darà un rettangolo, una forma che osserviamo così comunemente nella vita di tutti i giorni.

Classe astratta

Un oggetto della classe triangolo darà un triangolo, ancora una volta una forma comune di tutti i giorni.

Classe astratta

Ma come sarebbe un oggetto di Class Shape in un mondo pratico??

Classe astratta

Se osservi la classe Shape serve il nostro obiettivo da raggiungere eredità e polimorfismo. Ma non è stato creato per essere istanziato. Tali classi possono essere etichettate Astratto. Non è possibile istanziare una classe Java astratta.

Sintassi:

abstract class Shape{
	// code
}

È possibile NON etichettare la classe Shape come Abstract e quindi crearne un'istanza. Ma tale oggetto non avrà alcuna utilità nel codice e aprirà spazio a potenziali errori. Quindi questo non è auspicabile.

Cosa sono i metodi astratti? Java?

METODO ASTRATTO in Java, è un metodo che ha solo la definizione del metodo ma non contiene l'implementazione. Un metodo senza corpo è noto come metodo astratto. Deve essere dichiarato in una classe astratta. Il metodo astratto non sarà mai definitivo perché la classe astratta deve implementare tutti i metodi astratti.

Come tutti sappiamo, la formula per calcolare l'area di rettangolo, cerchio e triangolo è diversa. Il metodo calcolaArea() dovrà essere sovrascritto dalle classi ereditarie. Non ha senso definirlo nella classe Shape, ma dobbiamo assicurarci che tutte le classi che ereditano abbiano il metodo.

Tali metodi possono essere etichettati astratto.

Sintassi:

abstract public void calculateArea();

Per un metodo astratto, non è richiesta alcuna implementazione. Viene definita solo la firma del metodo.

Esempio di codice di astrazione

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();
}  
}

Vantaggi dell'astrazione

  • Il vantaggio principale dell'utilizzo di un'astrazione in Programmazione è che ti permette di raggruppare diverse classi correlate come fratelli.
  • L'astrazione nella programmazione orientata agli oggetti aiuta a ridurre la complessità del processo di progettazione e implementazione del software.

Parola chiave finale in Java

Il modificatore finale si applica a classi, metodi e variabili. Il significato di finale varia da contesto a contesto, ma l'idea essenziale è la stessa.

  • Una classe finale non può essere ereditata
  • Una variabile finale diventa una costante e il suo valore non può essere modificato.
  • Non è possibile sovrascrivere un metodo finale. Questo viene fatto per motivi di sicurezza e questi metodi vengono utilizzati per l'ottimizzazione.

Esempio :- Per imparare parole chiave astratte e finali

Passo 1) Copiare il codice seguente in un 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) Salva, compila ed esegui il codice.

Passo 3) Errore =? Il metodo astratto non è implementato nella classe Rectangle. Per risolvere il problema rimuovere il commento dalla riga n. 15.

Passo 4) Decommenta la riga n. 13. Salva e compila il codice.

Passo 5) Errore = ? la variabile b è definitiva

Quando utilizzare metodi astratti e classi astratte?

I metodi astratti vengono per lo più dichiarati dove due o più sottoclassi fanno la stessa cosa in modi diversi attraverso implementazioni diverse. Inoltre estende la stessa classe Abstract e offre diverse implementazioni dei metodi astratti.

Le classi astratte aiutano a descrivere tipi generici di comportamenti e gerarchia di classi di programmazione orientata agli oggetti. Descrivono anche sottoclassi per offrire dettagli di implementazione della classe astratta.

Sommario:

  • L'astrazione nella programmazione è il processo di selezione di set di dati importanti per un Oggetto nel tuo software e tralasciando quelli insignificanti.
  • Dopo aver modellato il tuo oggetto utilizzando Data Abstraction in Java, lo stesso insieme di dati potrebbe essere utilizzato in applicazioni diverse.

Newsletter quotidiana di Guru99

Inizia la giornata con le ultime e più importanti notizie sull'intelligenza artificiale, pubblicate in questo momento.