SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
ADT
Abstract Data Type
Abstract Data Type
A.A. 2012/2013Tecniche di programmazione2
ADTs store data and allow various operations on the
data to access and change it
ADTs are mathematical models
ADTs are extremely useful when designing a complex
algorithms
ADTs are not classes (well, not quite)
Abstract Data Type
A.A. 2012/2013Tecniche di programmazione3
ADTs are “abstract” because they specify the operations
of the data structure and leave implementation details to
later
More similar to “abstract classes” or “interfaces”
(whether the language supports them)
Note: Not all implementation
details can be deferred!
Why study ADTs?
A.A. 2012/2013Tecniche di programmazione4
How many of you will actually go out and create your own ADT
from scratch?
Different ADTs, each one with its own pros and cons
Picking the right one for the job is an important step in design!
Get your data structures correct first, and the rest of the
program will write itself
David S. Johnson
(winner of Knuth’s Prize in 2010)
Why study ADTs?
A.A. 2012/2013Tecniche di programmazione5
The goal is to learn
how to learn how to
use and create ADTs
Built-in ADT
A.A. 2012/2013Tecniche di programmazione6
High level languages often provide built in ADTs. E.g.:
StandardTemplate Library (C++)
Java Collections Framework (Java)
Common Ground
A.A. 2012/2013Tecniche di programmazione7
Almost every ADT provide a way to
add an item
remove an item
find, retrieve, or access an item
Most Collection ADTs provide more possibilities
check whether the collection is empty
make the collection empty
give me a subset of the collection
…
A very simple ADT: Santa’s Sack
A.A. 2012/2013Tecniche di programmazione8
Sack’s Operations
A.A. 2012/2013Tecniche di programmazione9
insertToy(toy)
Insert a toy in the sack
Duplicates are – obviously – allowed
extractToy(toy)
Remove the given toy from the sack
… and make a children happy
countToys()
Count how many toys actually are
stored in the sack
Santa’s Sack
A.A. 2012/2013Tecniche di programmazione10
insertToy( )
extractToy( )
countToys()
Santa’s Sack (more efficient)
A.A. 2012/2013Tecniche di programmazione11
insertToy( )
extractToy( )
countToys()
keep track of
the number of
objects
The lesson
A.A. 2012/2013Tecniche di programmazione12
ADTs do not specify the details of the implementation
BUT
Some information about the algorithms is essential to
choose the right ADT
Very high-level, qualitative information
Complexity
Licenza d’uso
A.A. 2012/2013Tecniche di programmazione13
Queste diapositive sono distribuite con licenza Creative Commons
“Attribuzione - Non commerciale - Condividi allo stesso modo (CC
BY-NC-SA)”
Sei libero:
di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico,
rappresentare, eseguire e recitare quest'opera
di modificare quest'opera
Alle seguenti condizioni:
Attribuzione — Devi attribuire la paternità dell'opera agli autori
originali e in modo tale da non suggerire che essi avallino te o il modo in
cui tu usi l'opera.
Non commerciale — Non puoi usare quest'opera per fini
commerciali.
Condividi allo stesso modo — Se alteri o trasformi quest'opera, o se
la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una
licenza identica o equivalente a questa.
http://creativecommons.org/licenses/by-nc-sa/3.0/

Weitere ähnliche Inhalte

Andere mochten auch

Research Activities in Ambient Intelligence
Research Activities in Ambient IntelligenceResearch Activities in Ambient Intelligence
Research Activities in Ambient IntelligenceFulvio Corno
 
Architetture aperte per raccolta, elaborazione e distribuzione di dati energe...
Architetture aperte per raccolta, elaborazione e distribuzione di dati energe...Architetture aperte per raccolta, elaborazione e distribuzione di dati energe...
Architetture aperte per raccolta, elaborazione e distribuzione di dati energe...Fulvio Corno
 
Ambient Intelligence Design Process
Ambient Intelligence Design ProcessAmbient Intelligence Design Process
Ambient Intelligence Design ProcessFulvio Corno
 
Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
 Cosa è Gnu/Linux - Breve storia - Concetti fondamentali Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
Cosa è Gnu/Linux - Breve storia - Concetti fondamentaliFulvio Corno
 
Ingegneri e disabilità: abbattere il muro
Ingegneri e disabilità: abbattere il muroIngegneri e disabilità: abbattere il muro
Ingegneri e disabilità: abbattere il muroFulvio Corno
 
Accessibilità dei siti web
Accessibilità dei siti webAccessibilità dei siti web
Accessibilità dei siti webFulvio Corno
 
SPARQL and Linked Data
SPARQL and Linked DataSPARQL and Linked Data
SPARQL and Linked DataFulvio Corno
 
Uomini, maghi, superuomini
Uomini, maghi, superuominiUomini, maghi, superuomini
Uomini, maghi, superuominiFulvio Corno
 
Tracciamento delle attività in Moodle
 Tracciamento delle attività in Moodle Tracciamento delle attività in Moodle
Tracciamento delle attività in MoodleFulvio Corno
 
Bellman-Ford-Moore Algorithm and Dijkstra’s Algorithm
Bellman-Ford-Moore Algorithm and Dijkstra’s AlgorithmBellman-Ford-Moore Algorithm and Dijkstra’s Algorithm
Bellman-Ford-Moore Algorithm and Dijkstra’s AlgorithmFulvio Corno
 

Andere mochten auch (10)

Research Activities in Ambient Intelligence
Research Activities in Ambient IntelligenceResearch Activities in Ambient Intelligence
Research Activities in Ambient Intelligence
 
Architetture aperte per raccolta, elaborazione e distribuzione di dati energe...
Architetture aperte per raccolta, elaborazione e distribuzione di dati energe...Architetture aperte per raccolta, elaborazione e distribuzione di dati energe...
Architetture aperte per raccolta, elaborazione e distribuzione di dati energe...
 
Ambient Intelligence Design Process
Ambient Intelligence Design ProcessAmbient Intelligence Design Process
Ambient Intelligence Design Process
 
Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
 Cosa è Gnu/Linux - Breve storia - Concetti fondamentali Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
 
Ingegneri e disabilità: abbattere il muro
Ingegneri e disabilità: abbattere il muroIngegneri e disabilità: abbattere il muro
Ingegneri e disabilità: abbattere il muro
 
Accessibilità dei siti web
Accessibilità dei siti webAccessibilità dei siti web
Accessibilità dei siti web
 
SPARQL and Linked Data
SPARQL and Linked DataSPARQL and Linked Data
SPARQL and Linked Data
 
Uomini, maghi, superuomini
Uomini, maghi, superuominiUomini, maghi, superuomini
Uomini, maghi, superuomini
 
Tracciamento delle attività in Moodle
 Tracciamento delle attività in Moodle Tracciamento delle attività in Moodle
Tracciamento delle attività in Moodle
 
Bellman-Ford-Moore Algorithm and Dijkstra’s Algorithm
Bellman-Ford-Moore Algorithm and Dijkstra’s AlgorithmBellman-Ford-Moore Algorithm and Dijkstra’s Algorithm
Bellman-Ford-Moore Algorithm and Dijkstra’s Algorithm
 

Ähnlich wie Abstract Data Types

Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIvan Gualandri
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignAndrea Saltarello
 
Designing the User Experience
Designing the User ExperienceDesigning the User Experience
Designing the User ExperienceFulvio Corno
 
Lists (Java Collections)
Lists (Java Collections)Lists (Java Collections)
Lists (Java Collections)Fulvio Corno
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Marco Parenzan
 
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgroundsAlessandro Alpi
 
Build a LINQ-enabled Repository
Build a LINQ-enabled RepositoryBuild a LINQ-enabled Repository
Build a LINQ-enabled RepositoryAndrea Saltarello
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Commit University
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiMarco Gasparetto
 
Code Generation con i templates T4 in visual studio
Code Generation con i templates T4 in visual studioCode Generation con i templates T4 in visual studio
Code Generation con i templates T4 in visual studioMarco Parenzan
 
Note di Data Warehouse e Business Intelligence - Pensare "Agile"
Note di Data Warehouse e Business Intelligence - Pensare "Agile"Note di Data Warehouse e Business Intelligence - Pensare "Agile"
Note di Data Warehouse e Business Intelligence - Pensare "Agile"Massimo Cenci
 

Ähnlich wie Abstract Data Types (20)

Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulug
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Terza lezioneandroid
Terza lezioneandroidTerza lezioneandroid
Terza lezioneandroid
 
Designing the User Experience
Designing the User ExperienceDesigning the User Experience
Designing the User Experience
 
Fashion guide: CAD e CAD.Assyst
Fashion guide: CAD e CAD.AssystFashion guide: CAD e CAD.Assyst
Fashion guide: CAD e CAD.Assyst
 
IC2008 Introduzione Did You Know?
IC2008 Introduzione Did You Know?IC2008 Introduzione Did You Know?
IC2008 Introduzione Did You Know?
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
Lists (Java Collections)
Lists (Java Collections)Lists (Java Collections)
Lists (Java Collections)
 
Corso Java - Introduzione
Corso Java - IntroduzioneCorso Java - Introduzione
Corso Java - Introduzione
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
 
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
 
Build a LINQ-enabled Repository
Build a LINQ-enabled RepositoryBuild a LINQ-enabled Repository
Build a LINQ-enabled Repository
 
Java lezione1
Java lezione1Java lezione1
Java lezione1
 
LucianoZu_CV
LucianoZu_CVLucianoZu_CV
LucianoZu_CV
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
 
ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessi
 
Code Generation con i templates T4 in visual studio
Code Generation con i templates T4 in visual studioCode Generation con i templates T4 in visual studio
Code Generation con i templates T4 in visual studio
 
Nettools Epanet
Nettools   EpanetNettools   Epanet
Nettools Epanet
 
Note di Data Warehouse e Business Intelligence - Pensare "Agile"
Note di Data Warehouse e Business Intelligence - Pensare "Agile"Note di Data Warehouse e Business Intelligence - Pensare "Agile"
Note di Data Warehouse e Business Intelligence - Pensare "Agile"
 

Kürzlich hochgeladen

Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptcarlottagalassi
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 

Kürzlich hochgeladen (11)

Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.ppt
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 

Abstract Data Types

  • 2. Abstract Data Type A.A. 2012/2013Tecniche di programmazione2 ADTs store data and allow various operations on the data to access and change it ADTs are mathematical models ADTs are extremely useful when designing a complex algorithms ADTs are not classes (well, not quite)
  • 3. Abstract Data Type A.A. 2012/2013Tecniche di programmazione3 ADTs are “abstract” because they specify the operations of the data structure and leave implementation details to later More similar to “abstract classes” or “interfaces” (whether the language supports them) Note: Not all implementation details can be deferred!
  • 4. Why study ADTs? A.A. 2012/2013Tecniche di programmazione4 How many of you will actually go out and create your own ADT from scratch? Different ADTs, each one with its own pros and cons Picking the right one for the job is an important step in design! Get your data structures correct first, and the rest of the program will write itself David S. Johnson (winner of Knuth’s Prize in 2010)
  • 5. Why study ADTs? A.A. 2012/2013Tecniche di programmazione5 The goal is to learn how to learn how to use and create ADTs
  • 6. Built-in ADT A.A. 2012/2013Tecniche di programmazione6 High level languages often provide built in ADTs. E.g.: StandardTemplate Library (C++) Java Collections Framework (Java)
  • 7. Common Ground A.A. 2012/2013Tecniche di programmazione7 Almost every ADT provide a way to add an item remove an item find, retrieve, or access an item Most Collection ADTs provide more possibilities check whether the collection is empty make the collection empty give me a subset of the collection …
  • 8. A very simple ADT: Santa’s Sack A.A. 2012/2013Tecniche di programmazione8
  • 9. Sack’s Operations A.A. 2012/2013Tecniche di programmazione9 insertToy(toy) Insert a toy in the sack Duplicates are – obviously – allowed extractToy(toy) Remove the given toy from the sack … and make a children happy countToys() Count how many toys actually are stored in the sack
  • 10. Santa’s Sack A.A. 2012/2013Tecniche di programmazione10 insertToy( ) extractToy( ) countToys()
  • 11. Santa’s Sack (more efficient) A.A. 2012/2013Tecniche di programmazione11 insertToy( ) extractToy( ) countToys() keep track of the number of objects
  • 12. The lesson A.A. 2012/2013Tecniche di programmazione12 ADTs do not specify the details of the implementation BUT Some information about the algorithms is essential to choose the right ADT Very high-level, qualitative information Complexity
  • 13. Licenza d’uso A.A. 2012/2013Tecniche di programmazione13 Queste diapositive sono distribuite con licenza Creative Commons “Attribuzione - Non commerciale - Condividi allo stesso modo (CC BY-NC-SA)” Sei libero: di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare quest'opera di modificare quest'opera Alle seguenti condizioni: Attribuzione — Devi attribuire la paternità dell'opera agli autori originali e in modo tale da non suggerire che essi avallino te o il modo in cui tu usi l'opera. Non commerciale — Non puoi usare quest'opera per fini commerciali. Condividi allo stesso modo — Se alteri o trasformi quest'opera, o se la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una licenza identica o equivalente a questa. http://creativecommons.org/licenses/by-nc-sa/3.0/