De koektrommel of de grabbelton - PowerPoint PPT Presentation

About This Presentation
Title:

De koektrommel of de grabbelton

Description:

De koektrommel of de grabbelton Een presentatie over Templates Door Paul Bouman Abstracte Datatypes Algemene idee n over de opslag van gegevens. – PowerPoint PPT presentation

Number of Views:45
Avg rating:3.0/5.0
Slides: 15
Provided by: PaulBo154
Category:

less

Transcript and Presenter's Notes

Title: De koektrommel of de grabbelton


1
De koektrommel of de grabbelton
  • Een presentatie over Templates
  • Door Paul Bouman

2
Abstracte Datatypes
  • Algemene ideeën over de opslag van gegevens.
  • Toepasbaar op allerlei soorten data.
  • Voorbeelden zijn terug te vinden in ontelbare
    informatica boeken.
  • Gebruikt in talloze algortimen
  • Stack
  • Heap
  • Tree
  • List
  • Map
  • Queue

3
Voorbeeld List met alleen add
  • Class IntList
  • Node first, last
  • List()
  • add(int i)
  • Node n new Node(i)
  • last.next n
  • n.prev last
  • last n
  • Class Node
  • int inhoud Node prev Node next

4
We willen een Koektrommel

5
Nadelen
  • Bijna identieke code voor het opslaan van ints en
    koeken.
  • Als we iets willen veranderen in onze lijst,
    moeten we dat nu op twee plekken doen!
  • Bij grote projecten met niet alleen ints en
    koeken, krijg je nog veel meer identieke code.

6
Oplossing 1 Smalltalk stijl
Class ObjectList Node first, last
List() add(Object i) Node n new
Node(i) last.next n n.prev last last
n Class Node Object inhoud Node
prev, next
  • Object-georienteerde talen kennen type
    overerving
  • Laat alle objecten afstammen van één type
    (bijvoorbeeld Object)
  • Laat de datastructuur werken met Objecten in
    plaats van met ints of Koeken.

7
Probleem 1 Klassen van anderen
  • In C stammen klassen NIET automatisch van één
    ouder af.
  • Je kunt er zelf voor zorgen.
  • Maar wat bij bibliotheken die dat niet doen?

8
Oplossing Multiple Inheritance
Object
Is dit wat we willen? Je ziet door de bomen het
bos niet meer!
9
Probleem 2 Bugs
List koek1 new List() List koek2 new
List() KokosMakroon km, ab, fg BokkenPoot bp,
rs, pq koek1.add(km) koek1.add(km) koek1.add(km
) koek1.add(km) koek1.add(km) koek1.add(km)
List koek1 new List() List koek2 new
List() KokosMakroon km, ab, fg BokkenPoot bp,
rs, pq koek1.add(km) koek1.add(ab) koek1.add(fg
) koek1.add(bp) koek1.add(rs) koek1.add(pq)
List koek1 new List() List koek2 new
List() KokosMakroon km, ab, fg BokkenPoot bp,
rs, pq koek1.add(km) koek1.add(ab) koek1.add(fg
) koek1.add(bp) koek1.add(rs) koek1.add(pq)
  • Bij het ophalen van Objecten uit de
    datastructuren moet er gecast worden.
  • Hierdoor kunnen er fouten in het programma slopen
    die pas ontdekt worden tijdens het uitvoeren.

10
Templates
  • Vaak wordt duplicatie van code voorkomen met
    parametrisatie.
  • In C kan dat met behulp van Templates
  • In Java (vanaf 1.5) tegenwoordig ook met behulp
    van Generics
  • De twee hebben grote verschillen, maar die vallen
    niet direct op voor de programmeur.

11
Hoe werkt het?
Stap 3 De compiler kopieert de code van List
voor elke klasse die je gebruikt.
12
Templates vs. Generics
  • Templates maken object code voor elke combinatie
    van parameters.
  • Je moet je broncode distribueren en bij het
    compilen gelinked worden.
  • Generics leiden tot één generiek stuk object
    code.
  • Objectcode is daarom distribueerbaar en kan
    runtime gelinked worden.

13
Templates vs. Generics (2)
  • Templates kunnen andere parameters krijgen dan
    typen.
  • Hierdoor is het mogelijk om Template
    Metaprogramming toe te passen.
  • Dit is turing compleet!
  • Bij generics is het alleen mogelijk om types als
    parameter mee te geven.

Voor meer informatie over niet-type parameters
bij Templates en Template Meta Programming
verwijs ik graag naar het boek Thinking in C
Volume 2 van Bruce Eckel en de Wikipedia Pagina
over Template Metaprogamming.
14
Conclusie
  • Met templates kan code duplicatie voorkomen
    worden.
  • Met templates kan je een erg ingewikkelde
    multiple inheritance structuur voorkomen.
  • Met templates worden types bij het compilen
    gecontroleerd.
  • Hierdoor wordt het makkelijker bekende
    datastructuren en algoritmes op nieuwe problemen
    toe te passen.
Write a Comment
User Comments (0)
About PowerShow.com