Labo
H13-boodschappenlijstje
Functionele analyse
Schrijf een programma om een boodschappenlijstje samen te stellen en af te werken aan de hand van List<string>. Maak deze versie deel van de klasse Datastructuren.
Technische analyse
- Vraag eerst om items toe te voegen, totdat er een lege regel wordt ingegeven. Toon telkens om het hoeveelste item het gaat, zoals in de voorbeeldinteractie. 
- Sorteer vervolgens de lijst. 
- Vraag dan, zo lang er nog items op de lijst staan en zo lang de gebruiker nog wenst te winkelen, welk item gekocht is. Wanneer er een item wordt ingegeven dat op het lijstje staat, verwijder je dat van het lijstje. 
- Als er op het einde nog niet-gekochte items over zijn, laat je zien welke items de gebruiker is vergeten te kopen. 
Tip: voor lijsten is Sort een instantiemethode
Voorbeeldinteractie

H13-telefoonboek (naam en nummer)
Functionele analyse
We wensen een simpel telefoonboek bij te houden, waarin je namen en nummers plaatst.
Technische analyse
- maak eerst een blanco Dictionary van string naar string aan 
- vraag in een lus telkens of de gebruiker nog wil doorgaan en, zo ja, vraag om een naam en een nummer 
- hou de koppeling van de naam en dat nummer bij - dit mag geen fout leveren als de naam al in het woordenboek staat - overschrijf in dat geval de waarde - je kan controleren met de instantiemethode - ContainsKey
 
 
- toon tenslotte de inhoud van heel je telefoonboek 
- noem je methode - TelefoonboekNaamNummer
Voorbeeldinteractie

H13-telefoonboek (gemeente, naam en nummer)
Functionele analyse
Zie boven, maar we willen nu telefoonnummers ook groeperen per gemeente
Technische analyse
- per gemeente heb je een Dictionary dat werkt zoals in de vorige oefening - om aan het Dictionary van een gemeente te komen, gebruik je een "groter" Dictionary met de naam van de gemeente als opzoekingssleutel 
 
- achteraf print je de gegevens per gemeente, zoals dat ook in een fysiek telefoonboek ongeveer het geval is 
- noem je methode TelefoonboekGemeenteNaamNummer 
Voorbeeldinteractie

H13-telefoonboek-met-builder
Functionele analyse
We willen graag dat ons Dictionary (zonder gemeente) veilig doorgegeven kan worden aan methodes enz. Daarom zullen we er een ImmutableDictionary van maken.
Technische analyse
- start met aanmaak van een builder voor een ImmutableDictionary 
- vraag de gegevens zoals in de eerdere oefening 
- plaats deze stap voor stap in de builder (ook hier kan je ContainsKey gebruiken) 
- zet, voor je alle gegevens print, om naar een ImmutableDictionary en pas daar een foreach lus op toe 
Voorbeeldinteractie
In de interactie zie je geen verschil met de eerdere oefening.
SchoolAdmin project
Als je alles eerder mee hebt kunnen volgen, werk dan vanaf je recentste commit.
StudieProgramma.ToonOverzicht() , Cursus.ToonOverzicht() en Student.ToonOverzicht() met foreach
StudieProgramma.ToonOverzicht() , Cursus.ToonOverzicht() en Student.ToonOverzicht() met foreachPas je ToonOverzicht-methodes aan zodat er geen gebruik wordt gemaakt van een klassieke for, maar wel van een foreach.
Alle studenten in het systeem bijhouden
Voorzie de klasse Student van een statische read-only property AlleStudenten. Deze is van het type List<Student> en bevat altijd elke student die in het systeem aanwezig is. Dit gebeurt door bij de constructie van elk Student-object de lijst uit te breiden.
AlleStudenten beveiligen
AlleStudenten beveiligenMaak van AlleStudenten een ImmutableList<T> in plaats van een gewone List<T>. Merk op dat je dit niet hoeft te doen voor het achterliggend attribuut.
Lijsten
Vervang alle properties van StudieProgramma, Cursus en Student van een arraytype naar een List type. AlleCursussen maak je immutable.
Vervang hierbij ook for-lussen door foreach-lussen waar je kan. Je hoeft geen rekening te houden met capaciteiten die eerder zijn vastgelegd voor arrays. Je mag er ook van uitgaan dat er geen nullwaarden in lijsten worden geplaatst als dat niet zinvol is. Dit kan je code wat korter maken.
Last updated
Was this helpful?
