SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
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/

Más contenido relacionado

Destacado

Destacado (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
 

Similar a Abstract Data Types

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
Andrea Saltarello
 

Similar a 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"
 

Último

Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 

Último (18)

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
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.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
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
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
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.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
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
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
 
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
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.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/