abstract data types

13
ADT Abstract Data Type

Upload: fulvio-corno

Post on 29-Oct-2014

12 views

Category:

Education


2 download

DESCRIPTION

Definition and introduction to Abstract Data Type. Teaching material for the course of "Tecniche di Programmazione" at Politecnico di Torino in year 2012/2013. More information: http://bit.ly/tecn-progr

TRANSCRIPT

Page 1: Abstract Data Types

ADT

Abstract Data Type

Page 2: Abstract Data Types

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)

Page 3: Abstract Data Types

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!

Page 4: Abstract Data Types

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)

Page 5: Abstract Data Types

Why study ADTs?

A.A. 2012/2013Tecniche di programmazione5

The goal is to learn how to learn how to use and create ADTs

Page 6: Abstract Data Types

Built-in ADT

A.A. 2012/2013Tecniche di programmazione6

� High level languages often provide built in ADTs. E.g.:

� Standard Template Library (C++)

� Java Collections Framework (Java)

Page 7: Abstract Data Types

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

� …

Page 8: Abstract Data Types

A very simple ADT: Santa’s Sack

A.A. 2012/2013Tecniche di programmazione8

Page 9: Abstract Data Types

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

Page 10: Abstract Data Types

Santa’s Sack

A.A. 2012/2013Tecniche di programmazione10

insertToy( )

extractToy( )

countToys()

Page 11: Abstract Data Types

Santa’s Sack (more efficient)

A.A. 2012/2013Tecniche di programmazione11

insertToy( )

extractToy( )

countToys()

keep track of the number of

objects

Page 12: Abstract Data Types

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

Page 13: Abstract Data Types

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/