Tipo di dato astratto Definizione e caratteristiche | Esempi | Voci correlate | Menu di navigazioneContribuiscimigliorare questa voceM4120827-4
Teoria dei tipi
informaticaprogrammazionetipo di datosemanticalinguaggi di programmazioneinterfacciaimplementazioneincapsulamentoparadigma di programmazioneprogrammazione algebricaOBJalgebricaprogrammazione orientata agli oggettiBertrand MeyerEiffelstackcoda
Tipo di dato astratto
Jump to navigation
Jump to search
.mw-parser-output .avviso .mbox-text-div>div,.mw-parser-output .avviso .mbox-text-full-div>divfont-size:90%.mw-parser-output .avviso .mbox-image divwidth:52px.mw-parser-output .avviso .mbox-text-full-div .hide-when-compactdisplay:block
Questa voce o sezione sull'argomento programmazione non cita le fonti necessarie o quelle presenti sono insufficienti. |
In informatica, specificamente nel campo della programmazione, un 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 realizzazione.
Definizione e caratteristiche |
Nei linguaggi di programmazione che consentono la programmazione per tipi di dati astratti, un tipo di dato viene definito distinguendo nettamente la sua interfaccia, ovvero le operazioni che vengono fornite per la manipolazione del dato, e la sua implementazione interna, ovvero il modo in cui le informazioni di stato sono conservate e in cui le operazioni manipolano tali informazioni al fine di esibire, all'interfaccia, il comportamento desiderato. La conseguente inaccessibilità dell'implementazione viene spesso identificata con l'espressione incapsulamento (detto anche information hiding: nascondere informazioni).
Da quanto detto fin qui si ricava che è intrinseca nel concetto di ADT l'idea che la semantica di un dato coincida con le operazioni che si possono eseguire su di esso. Dalla radicalizzazione di questa idea deriva il paradigma di programmazione della programmazione algebrica (vedi per esempio il linguaggio OBJ) in cui i tipi di dati sono completamente definiti da una descrizione algebrica delle loro operazioni. Tuttavia, il concetto di ADT, inteso come un tipo di dato che unisce una interfaccia di operazioni a una implementazione interna nascosta, ha influenzato anche paradigmi di programmazione più convenzionali, ed è alla base della stessa programmazione orientata agli oggetti, in quanto "una classe è l'implementazione di un dato astratto" (Bertrand Meyer, padre del linguaggio object-oriented Eiffel).
Esempi |
Alcuni degli esempi di ADT più comuni nella letteratura riguardano alcune strutture dati come lo stack o la coda; da qui si è diffusa l'abitudine scorretta di identificare il termine ADT (che ha valenza assolutamente generale) con tali strutture dati.
Voci correlate |
- Classe astratta
- Incapsulamento (informatica)
- Linguaggio di programmazione
- Programmazione (informatica)
- Tipo di dato
.mw-parser-output .navboxborder:1px solid #aaa;clear:both;margin:auto;padding:2px;width:100%.mw-parser-output .navbox thpadding-left:1em;padding-right:1em;text-align:center.mw-parser-output .navbox>tbody>tr:first-child>thbackground:#ccf;font-size:90%;width:100%.mw-parser-output .navbox_navbarfloat:left;margin:0;padding:0 10px 0 0;text-align:left;width:6em.mw-parser-output .navbox_titlefont-size:110%.mw-parser-output .navbox_abovebelowbackground:#ddf;font-size:90%;font-weight:normal.mw-parser-output .navbox_groupbackground:#ddf;font-size:90%;padding:0 10px;white-space:nowrap.mw-parser-output .navbox_listfont-size:90%;width:100%.mw-parser-output .navbox_oddbackground:#fdfdfd.mw-parser-output .navbox_evenbackground:#f7f7f7.mw-parser-output .navbox_centertext-align:center.mw-parser-output .navbox .navbox_imagepadding-left:7px;vertical-align:middle;width:0.mw-parser-output .navbox+.navboxmargin-top:-1px.mw-parser-output .navbox .mw-collapsible-togglefont-weight:normal;text-align:right;width:7em.mw-parser-output .subnavboxmargin:-3px;width:100%.mw-parser-output .subnavbox_groupbackground:#ddf;padding:0 10px
.mw-parser-output .CdAborder:1px solid #aaa;width:100%;margin:auto;font-size:90%;padding:2px.mw-parser-output .CdA thbackground-color:#ddddff;font-weight:bold;width:20%
Controllo di autorità | GND (DE) 4120827-4 |
---|
Categoria:
- Teoria dei tipi
(window.RLQ=window.RLQ||[]).push(function()mw.config.set("wgPageParseReport":"limitreport":"cputime":"0.192","walltime":"0.253","ppvisitednodes":"value":6869,"limit":1000000,"ppgeneratednodes":"value":0,"limit":1500000,"postexpandincludesize":"value":19979,"limit":2097152,"templateargumentsize":"value":2094,"limit":2097152,"expansiondepth":"value":12,"limit":40,"expensivefunctioncount":"value":5,"limit":500,"unstrip-depth":"value":0,"limit":20,"unstrip-size":"value":2224,"limit":5000000,"entityaccesscount":"value":1,"limit":400,"timingprofile":["100.00% 217.788 1 -total"," 39.74% 86.555 2 Template:Avviso"," 39.63% 86.316 1 Template:S"," 29.50% 64.253 1 Template:Strutture_dati"," 28.42% 61.888 4 Template:Icona_argomento"," 28.03% 61.045 1 Template:Navbox"," 20.38% 44.381 1 Template:Controllo_di_autorità"," 7.32% 15.937 1 Template:Portale"," 3.73% 8.122 2 Template:Categorie_avviso"," 3.01% 6.558 1 Template:F"],"scribunto":"limitreport-timeusage":"value":"0.067","limit":"10.000","limitreport-memusage":"value":1277310,"limit":52428800,"cachereport":"origin":"mw1326","timestamp":"20190309211336","ttl":2592000,"transientcontent":false););"@context":"https://schema.org","@type":"Article","name":"Tipo di dato astratto","url":"https://it.wikipedia.org/wiki/Tipo_di_dato_astratto","sameAs":"http://www.wikidata.org/entity/Q827335","mainEntity":"http://www.wikidata.org/entity/Q827335","author":"@type":"Organization","name":"Contributori ai progetti Wikimedia","publisher":"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":"@type":"ImageObject","url":"https://www.wikimedia.org/static/images/wmf-hor-googpub.png","datePublished":"2005-05-06T13:36:07Z","dateModified":"2018-12-18T14:29:53Z"(window.RLQ=window.RLQ||[]).push(function()mw.config.set("wgBackendResponseTime":117,"wgHostname":"mw1258"););