arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Labo

hashtag
H13-boodschappenlijstje

hashtag
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.

hashtag
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.

Tip: voor lijsten is Sort een instantiemethode

hashtag
Voorbeeldinteractie

hashtag
H13-telefoonboek (naam en nummer)

hashtag
Functionele analyse

We wensen een simpel telefoonboek bij te houden, waarin je namen en nummers plaatst.

hashtag
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

hashtag
Voorbeeldinteractie

hashtag
H13-telefoonboek (gemeente, naam en nummer)

hashtag
Functionele analyse

Zie boven, maar we willen nu telefoonnummers ook groeperen per gemeente

hashtag
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

hashtag
Voorbeeldinteractie

hashtag
H13-telefoonboek-met-builder

hashtag
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.

hashtag
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)

hashtag
Voorbeeldinteractie

In de interactie zie je geen verschil .

hashtag
SchoolAdmin project

Als je alles eerder mee hebt kunnen volgen, werk dan vanaf je recentste commit.

hashtag
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.

hashtag
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.

hashtag
AlleStudenten beveiligen

Maak 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.

hashtag
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.

Als er op het einde nog niet-gekochte items over zijn, laat je zien welke items de gebruiker is vergeten te kopen.

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

  • noem je methode TelefoonboekGemeenteNaamNummer

    zet, voor je alle gegevens print, om naar een ImmutableDictionary en pas daar een foreach lus op toe
    met de eerdere oefening