logo

Tipi di dati astratti

UN Tipo di dati astratti (ADT) è un modello concettuale che definisce un insieme di operazioni e comportamenti per una struttura dati senza specificare le modalità di attuazione di tali operazioni o come i dati sono organizzati in memoria. La definizione di ADT menziona solo cosa le operazioni devono essere eseguite ma no Come tali operazioni verranno attuate. Non specifica come verranno organizzati i dati in memoria e quali algoritmi verranno utilizzati per implementare le operazioni. Si chiama "astratto" perché fornisce una visione indipendente dall'implementazione.

Il processo di fornire solo l’essenziale e nascondere i dettagli è noto come astrazione.

Caratteristiche dell'ADT



I tipi di dati astratti (ADT) sono un modo per incapsulare i dati e le operazioni su tali dati in una singola unità. Alcune delle caratteristiche principali degli ADT includono:

  • Astrazione: Non è necessario che l'utente conosca l'implementazione della struttura dati, vengono forniti solo gli elementi essenziali.
  • Migliore concettualizzazione: L'ADT ci offre una migliore concettualizzazione del mondo reale.
  • Robusto: Il programma è robusto e ha la capacità di rilevare errori.
  • Incapsulamento : gli ADT nascondono i dettagli interni dei dati e forniscono un'interfaccia pubblica affinché gli utenti possano interagire con i dati. Ciò consente una più semplice manutenzione e modifica della struttura dei dati.
  • Astrazione dei dati : Gli ADT forniscono un livello di astrazione dai dettagli di implementazione dei dati. Gli utenti devono solo conoscere le operazioni che possono essere eseguite sui dati, non come tali operazioni vengono implementate.
  • Indipendenza della struttura dei dati : Gli ADT possono essere implementati utilizzando diverse strutture dati come array o elenchi collegati senza influire sulla funzionalità dell'ADT.
  • Nascondere informazioni: Gli ADT possono proteggere l'integrità dei dati consentendo l'accesso solo agli utenti e alle operazioni autorizzati. Ciò aiuta a prevenire errori e usi impropri dei dati.
  • Modularità : Gli ADT possono essere combinati con altri ADT per formare strutture dati più grandi e complesse. Ciò consente una maggiore flessibilità e modularità nella programmazione.

Nel complesso gli ADT forniscono un potente strumento per organizzare e manipolare i dati in modo strutturato ed efficiente.

Questa immagine mostra come un Abstract Data Type (ADT) nasconde strutture di dati interne (come array e elenchi collegati) utilizzando funzioni pubbliche e private che espongono solo un'interfaccia definita al programma applicativo.

Tipi di dati astratti

Perché utilizzare gli ADT?

I motivi principali per utilizzare gli ADT in Java sono elencati di seguito:

  • Incapsulamento: Nasconde dettagli di implementazione complessi dietro un'interfaccia pulita.
  • Riutilizzabilità : consente diverse implementazioni interne (ad esempio array o elenco collegato) senza modificare l'utilizzo esterno.
  • Modularità: Semplifica la manutenzione e gli aggiornamenti separando la logica.
  • Sicurezza: Protegge i dati impedendo l'accesso diretto riducendo al minimo bug e modifiche involontarie.

Esempio di astrazione

Ad esempio utilizziamo valori primitivi come int float e char con la consapevolezza che questi tipi di dati possono funzionare ed essere eseguiti senza alcuna conoscenza dei dettagli di implementazione. Gli ADT funzionano in modo simile definendo quali operazioni sono possibili senza dettagliarne l'implementazione.

Differenza tra ADT e UDT

La tabella seguente mostra la differenza tra ADT e UDT.

rivestimento delle corde Java

Aspetto

Tipi di dati astratti (ADT)

Tipi di dati definiti dall'utente (UDT)

Definizione

Definisce una classe di oggetti e le operazioni che possono essere eseguite su di essi insieme al loro comportamento previsto (semantica) ma senza specificare i dettagli di implementazione.

Un tipo di dati personalizzato creato combinando o estendendo tipi primitivi esistenti specificando sia la struttura che le operazioni.

quali mesi sono q1

Messa a fuoco

Quali operazioni sono consentite e come si comportano senza dettare come vengono implementate.

Come sono organizzati i dati in memoria e come vengono eseguite le operazioni.

Scopo

Fornisce un modello astratto per definire le strutture dati in modo concettuale.

Consente ai programmatori di creare implementazioni concrete di strutture dati utilizzando tipi primitivi.

Dettagli di implementazione

Non specifica come vengono implementate le operazioni o come sono strutturati i dati.

Specifica come creare e organizzare i tipi di dati per implementare la struttura.

Utilizzo

Utilizzato per progettare e concettualizzare strutture dati.

Utilizzato per implementare strutture dati che realizzano i concetti astratti definiti dagli ADT.

Esempio

Elenco ADT Stack ADT Coda ADT.

Strutture di classi enumerazioni record.

Esempi di ADT

Ora comprendiamo tre ADT comuni: List ADT Stack ADT e Queue ADT.

1. Elenco ADT

L'ADT List (Abstract Data Type) è una raccolta sequenziale di elementi che supporta un insieme di operazioni senza specificare l'implementazione interna . Fornisce un modo ordinato per archiviare l'accesso e modificare i dati.

Tipi di dati astrattiVie di lista

Operazioni:

nuova riga in Python

L'ADT Elenco deve memorizzare i dati richiesti nella sequenza e dovrebbe avere le seguenti operazioni :

  • Ottenere(): Restituisce un elemento dalla lista in qualsiasi posizione.
  • inserire(): Inserisci un elemento in qualsiasi posizione nell'elenco.
  • rimuovere(): Rimuove la prima occorrenza di qualsiasi elemento da un elenco non vuoto.
  • rimuoviAt(): Rimuove l'elemento in una posizione specificata da un elenco non vuoto.
  • sostituire(): Sostituisci un elemento in qualsiasi posizione con un altro elemento.
  • misurare(): Restituisce il numero di elementi nell'elenco.
  • èVuoto(): Restituisce vero se la lista è vuota; altrimenti restituisce false.
  • èPieno(): Restituisce vero se la lista è piena altrimenti restituisce falso. Applicabile solo in implementazioni a dimensione fissa (ad esempio elenchi basati su array).

2. Impilare l'ADT

Lo Stack ADT è una struttura dati lineare che segue il principio LIFO (Last In First Out). Consente di aggiungere e rimuovere elementi solo da un'estremità chiamata parte superiore della pila.

Tipi di dati astrattiVista della pila

Operazioni:

Nello Stack ADT l'ordine di inserimento e cancellazione dovrebbe essere secondo il principio FILO o LIFO. Gli elementi vengono inseriti e rimossi dalla stessa estremità chiamata cima della pila. Dovrebbe inoltre supportare le seguenti operazioni:

  • spingere(): Inserisci un elemento a un'estremità della pila chiamata top.
  • pop(): Rimuovi e restituisci l'elemento in cima allo stack se non è vuoto.
  • sbirciare(): Restituisce l'elemento in cima allo stack senza rimuoverlo se lo stack non è vuoto.
  • misurare(): Restituisce il numero di elementi nello stack.
  • èVuoto(): Restituisce vero se lo stack è vuoto; altrimenti restituisce false.
  • èPieno(): Restituisce vero se lo stack è pieno; altrimenti restituisce false. Rilevante solo per stack a capacità fissa (ad esempio basati su array).

3. ADT coda

Il Queue ADT è una struttura dati lineare che segue il principio FIFO (First In First Out). Permette di inserire elementi ad un'estremità (posteriore) e di rimuoverli dall'altra estremità (anteriore).

Tipi di dati astrattiVista della coda

Operazioni:

L'ADT coda segue un design simile all'ADT stack ma l'ordine di inserimento ed eliminazione cambia in FIFO. Gli elementi vengono inseriti ad un'estremità (detta posteriore) e rimossi dall'altra estremità (detta anteriore). Dovrebbe supportare le seguenti operazioni:

Lettore multimediale vlc scarica youtube
  • accodare(): Inserisci un elemento alla fine della coda.
  • di conseguenza(): Rimuove e restituisce il primo elemento della coda se la coda non è vuota.
  • sbirciare(): Restituisce l'elemento della coda senza rimuoverlo se la coda non è vuota.
  • misurare(): Restituisce il numero di elementi nella coda.
  • èVuoto(): Restituisce vero se la coda è vuota; altrimenti restituisce false.

Vantaggi e svantaggi dell'ADT

I tipi di dati astratti (ADT) presentano numerosi vantaggi e svantaggi che dovrebbero essere considerati quando si decide di utilizzarli nello sviluppo di software. Ecco alcuni dei principali vantaggi e svantaggi dell’utilizzo degli ADT:

Vantaggio:

I vantaggi sono elencati di seguito:

  • Incapsulamento : Gli ADT forniscono un modo per incapsulare dati e operazioni in una singola unità semplificando la gestione e la modifica della struttura dei dati.
  • Astrazione : Gli ADT consentono agli utenti di lavorare con strutture dati senza dover conoscere i dettagli di implementazione che possono semplificare la programmazione e ridurre gli errori.
  • Indipendenza della struttura dei dati : Gli ADT possono essere implementati utilizzando diverse strutture di dati che possono facilitare l'adattamento alle mutevoli esigenze e requisiti.
  • Nascondere le informazioni : Gli ADT possono proteggere l'integrità dei dati controllando l'accesso e impedendo modifiche non autorizzate.
  • Modularità : Gli ADT possono essere combinati con altri ADT per formare strutture dati più complesse che possono aumentare la flessibilità e la modularità della programmazione.

Svantaggi:

Gli svantaggi sono elencati di seguito:

  • In testa : L'implementazione degli ADT può comportare un sovraccarico in termini di memoria ed elaborazione che può influire sulle prestazioni.
  • Complessità : Gli ADT possono essere complessi da implementare soprattutto per strutture dati grandi e complesse.
  • Apprendimento Curva: l'utilizzo degli ADT richiede la conoscenza della loro implementazione e utilizzo, il cui apprendimento può richiedere tempo e impegno.
  • Flessibilità limitata: Alcuni ADT potrebbero avere funzionalità limitate o potrebbero non essere adatti a tutti i tipi di strutture dati.
  • Costo : L’implementazione degli ADT può richiedere risorse e investimenti aggiuntivi che possono aumentare i costi di sviluppo.
Crea quiz