Discutiamo su .... tipi di dati astratti.
In due testi, il primo sulla OOP, il secondo sull'ingegneria del software, vengono definiti gli ADT (tipi di dati astratti) come un insieme di dati e operazioni ad essi applicabili.
Wikipedia dice
Ma cosa vuol dire?tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica del dato e non dalla sua implementazione.
Questi ADT (in java), si creano mediante interfacce (public interface ...) o classi?
Inoltre, stando alla prima definizione: tutto è poco chiaro.
Insieme di dati. Sono intese forse variabili e altri oggetti?
operazioni ad essi applicabili. Metodi?
I tipi di dati astratti stanno alla base dell'incapsulamento, poichè permettono di nascondere i dettagli dell'implementazione e di favorire il riutilizzo (poichè appunto si ricorre all'astrazione individuando soluzioni generali e semplificate di problemi complessi).
La mancanza di esempi pratici forse causa incomprensioni.
Qual è un ADT? Il primo listato che segue, o il secondo, o entrambi?
codice:public interface Animale{ public void cammina(); public void mangia(); }Ovviamente l'interfaccia (dal punto di vista di codifica) in sè non è nulla.codice:public class Animale{ String specie; String nome; public Animale(String nome, String specie){ this.nome=nome; this.specie=specie; } public void cammina(){ } }
Dunque...
Qualcuno mi sa dare una definizione esaustiva degli ADT (so che chiedo troppo )
Come si definisce un tipo di dato astratto?