Labo
Last updated
Last updated
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
.
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
We wensen een simpel telefoonboek bij te houden, waarin je namen en nummers plaatst.
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
Zie boven, maar we willen nu telefoonnummers ook groeperen per gemeente
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
We willen graag dat ons Dictionary (zonder gemeente) veilig doorgegeven kan worden aan methodes enz. Daarom zullen we er een ImmutableDictionary van maken.
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
In de interactie zie je geen verschil met de eerdere oefening.
Als je alles eerder mee hebt kunnen volgen, werk dan vanaf je recentste commit.
StudieProgramma.ToonOverzicht()
, Cursus.ToonOverzicht()
en Student.ToonOverzicht()
met foreach
Pas je ToonOverzicht-methodes aan zodat er geen gebruik wordt gemaakt van een klassieke for
, maar wel van een foreach
.
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
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.
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 null
waarden in lijsten worden geplaatst als dat niet zinvol is. Dit kan je code wat korter maken.