Prima di conoscere il tipo di dati astratto, dovremmo sapere cos'è una struttura di dati.
Cos'è la struttura dei dati?
Una struttura dati è una tecnica di organizzazione dei dati in modo che i dati possano essere utilizzati in modo efficiente. Esistono due modi per visualizzare la struttura dei dati:
Perché la struttura dei dati?
I vantaggi derivanti dall'utilizzo della struttura dati sono i seguenti:
- Questi sono gli ingredienti essenziali utilizzati per creare algoritmi veloci e potenti.
- Ci aiutano a gestire e organizzare i dati.
- Le strutture dati rendono il codice più pulito e più facile da comprendere.
Cos'è il tipo di dati astratto?
Un tipo di dati astratto è un'astrazione di una struttura dati che fornisce solo l'interfaccia a cui deve aderire la struttura dati. L'interfaccia non fornisce dettagli specifici su qualcosa che dovrebbe essere implementato o in quale linguaggio di programmazione.
In altre parole, possiamo dire che i tipi di dati astratti sono le entità che sono definizioni di dati e operazioni ma non hanno dettagli di implementazione. In questo caso, conosciamo i dati che stiamo archiviando e le operazioni che possono essere eseguite sui dati, ma non conosciamo i dettagli di implementazione. Il motivo per cui non sono disponibili i dettagli di implementazione è che, ad esempio, ogni linguaggio di programmazione ha una strategia di implementazione diversa; una struttura dati C viene implementata utilizzando strutture mentre una struttura dati C++ viene implementata utilizzando oggetti e classi.
Per esempio, un Elenco è un tipo di dati astratto implementato utilizzando un array dinamico e un elenco collegato. Una coda viene implementata utilizzando una coda basata su elenchi collegati, una coda basata su array e una coda basata su stack. Una mappa viene implementata utilizzando la mappa ad albero, la mappa hash o la tabella hash.
Modello del tipo di dati astratto
Prima di conoscere il modello del tipo di dati astratto, dovremmo conoscere l'astrazione e l'incapsulamento.
forme normali
Astrazione: è una tecnica per nascondere i dettagli interni all'utente e mostrare all'utente solo i dettagli necessari.
Incapsulamento: è una tecnica per combinare i dati e la funzione membro in una singola unità nota come incapsulamento.
La figura sopra mostra il modello ADT. Esistono due tipi di modelli nel modello ADT, ovvero la funzione pubblica e la funzione privata. Il modello ADT contiene anche le strutture dati che utilizziamo in un programma. In questo modello, viene eseguito il primo incapsulamento, ovvero tutti i dati vengono racchiusi in una singola unità, ovvero ADT. Quindi, eseguire l'astrazione significa mostrare le operazioni che si possono eseguire sulla struttura dati e quali sono le strutture dati che stiamo utilizzando in un programma.
Comprendiamo il tipo di dati astratto con un esempio reale.
Se consideriamo lo smartphone. Osserviamo le elevate specifiche dello smartphone, come:
- 4 GB di RAM
- Processore Snapdragon da 2,2 GHz
- Schermo LCD da 5 pollici
- Doppia fotocamera
- Android 8.0
Le specifiche dello smartphone di cui sopra sono i dati e possiamo anche eseguire le seguenti operazioni sullo smartphone:
come aprire un file con java
Lo smartphone è un'entità i cui dati o specifiche e operazioni sono sopra riportate. La vista e le operazioni astratte/logiche sono le viste astratte o logiche di uno smartphone.
Di seguito è riportata la vista implementativa della vista astratta/logica di cui sopra:
class Smartphone { private: int ramSize; string processorName; float screenSize; int cameraCount; string androidVersion; public: void call(); void text(); void photo(); void video(); }
Il codice sopra riportato è l'implementazione delle specifiche e delle operazioni che possono essere eseguite sullo smartphone. La visione dell'implementazione può differire perché la sintassi dei linguaggi di programmazione è diversa, ma la visione astratta/logica della struttura dei dati rimarrebbe la stessa. Pertanto, possiamo dire che la visione astratta/logica è indipendente dalla visione implementativa.
Nota: conosciamo le operazioni che possono essere eseguite sui tipi di dati predefiniti come int, float, char, ecc., ma non conosciamo i dettagli di implementazione dei tipi di dati. Pertanto, possiamo dire che il tipo di dati astratto è considerato come la scatola nascosta che nasconde tutti i dettagli interni del tipo di dati.
Esempio di struttura dati
Supponiamo di avere un array di indici di dimensione 4. Abbiamo una posizione di indice che inizia da 0, 1, 2, 3. L'array è una struttura dati in cui gli elementi sono memorizzati in una posizione contigua. L'indirizzo di memoria del primo elemento è 1000, il secondo elemento è 1004, il terzo elemento è 1008 e il quarto elemento è 1012. Poiché è di tipo intero, occuperà 4 byte e la differenza tra gli indirizzi di ciascun elemento è 4 byte. I valori memorizzati in un array sono 10, 20, 30 e 40. Questi valori, posizioni di indice e indirizzi di memoria sono le implementazioni.
La vista astratta o logica dell'array di numeri interi può essere espressa come:
- Memorizza un insieme di elementi di tipo intero.
- Legge gli elementi per posizione, cioè indice.
- Modifica gli elementi per indice
- Esegue l'ordinamento
La vista di implementazione dell'array di numeri interi:
a[4] = {10, 20, 30, 40} cout<< a[2] a[3] = 50