Ds intro
-
Upload
roy-de-zomer -
Category
Education
-
view
20 -
download
0
Transcript of Ds intro
Universiteit LeidenThe Netherlands
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
Bart Hijmans, Universiteit Leiden.
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
1 | 11Focus
� Ervaring in gebruik en implementatie van datastructuren
� Kennis van mogelijkheden
� Programmeren voor andere programmeurs
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
2 | 11Uit Eerdere Colleges
� Korte, herbruikbare en leesbare functies
� E�ciënte code
� Consequent inspringen
� Consequente naamgeving voor variabelen
� Gebruik geen Nederlands en Engels door elkaar� Overweeg bijvoorbeeld camel case: maakNaamVoorFunctie()� of lage streepjes: maak_naam_voor_functie()
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
3 | 11Files
� Iedere klasse een eigen header (.h) met klassede�nitie
� Een andere programmeur ziet alleen de .h!
� Iedere klasse een eigen source (.cc of .cpp) met uitwerking
� Uitzondering: bij overerving mag de uitwerking in de .h
� Voor header �les, gebruik preprocessor operaties om dubbele
de�nities te voorkomen:
#ifndef Bestandsnaam.h#define Bestandsnaam.h// normale code hier#endif
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
4 | 11Abstractie
� private, public en protected functies en variabelen
� Public: alleen functies die voor de gebruiker bedoeld zijn
� Private: alle variabelen (gebruik public get en set functies)
� Private: interne hulpfuncties
� Protected is vergelijkbaar met private, maar ook toegankelijk
vanuit afgeleide klasses door inheritence.
� Zorg dat een gebruiker een datastructuur niet kapot kan
maken
� Beschermt data en programmeurs
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
5 | 11Const Correctness
� Laat de programmeur weten welke functies niks veranderen
aan de datastructuur en welke parameters zeker niet worden
aangepast.
� const voor een parameter betekent dat dat parameter niet
wordt aangepast
� const aan het eind van een functiedeclaratie betekent dat de
datastructuur niet wordt aangepast
bool zetInLijst(const int waarde);bool haalUitLijst(const int plaats, int waarde);bool isInLijst(const int waarde) const;
� static functies kunnen niet const zijn
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
6 | 11Const Correctness (2)
� Let op de verschillen tussen:
� int const * p; // p is pointer to const int� int * const p; // p is const pointer to int� int const * const p;//p is const pointer to const int
� Lees van rechts naar links
� Het is niet in alle gevallen mogelijk alles te verbieden, zorg
wel dat je je er aan houdt!
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
7 | 11Commentaar Boven Files
/*** klassenaam: beschrijving van klasse/programma* @author naam (studentnummer)* @author naam (studentnummer)* @file filenaam* @date datum laatste wijziging**/
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
8 | 11Commentaar Boven Functies
� Boven (member)functiedeclaraties
class dinges{public:
// commentaar hier!void doeIets();
}
// Niet hier!void dinges::doeIets(){}
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
9 | 11Commentaar Boven Functies (2)
/*** @function functienaam* @abstract beschrijving wat de functie doet* @param parameternaam beschrijving rol parameter* @return beschrijving van het resultaat* @pre exacte beschrijving preconditie* @post exacte beschrijving postconditie**/
� precondities moeten testbaar zijn!
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
10 | 11Uitzonderlijke Gevallen
� Wat gebeurt er als:
� een datastructuur vol is?� een datastructuur leeg is?� er een lege string wordt meegegeven?� er een nullpointer wordt meegegeven?
� Let op dat postcondities alle gevallen beslaan
� Stel eisen aan parameters waar nodig
� Return booleans als een operatie kan falen!
� Gebruik nooit cout (of cerr) in een memberfunctie voor
errors
Leiden University. The university to discover.
Datastructuren Werkcollege Intro
11 | 11Standard Template Library datastructuren
� Bevat veel standaard datastructuren, waaronder vectors,
lists, stacks, maps, queues en deques
� de interne werking is bijna altijd onbelangrijk.
� toegevoegd als include, bv #include <stack>
� Datastructuren zijn templates, ze werken voor elk type data,maar voor maar 1 tegelijk
� stack<string> myStack; //een stack met strings� list<int> myList; //een list met ints