diff --git a/_images/blueprint1.png b/_images/blueprint1.png new file mode 100644 index 00000000..4791d9b1 Binary files /dev/null and b/_images/blueprint1.png differ diff --git a/_images/dutch_bike_symbol.png b/_images/dutch_bike_symbol.png new file mode 100644 index 00000000..6fd9c2ee Binary files /dev/null and b/_images/dutch_bike_symbol.png differ diff --git a/_images/word_cloud.png b/_images/word_cloud.png new file mode 100644 index 00000000..9decf6f9 Binary files /dev/null and b/_images/word_cloud.png differ diff --git a/_sources/course/ex_5.md b/_sources/course/ex_5.md new file mode 100644 index 00000000..5e5668e7 --- /dev/null +++ b/_sources/course/ex_5.md @@ -0,0 +1,4 @@ +# Opgaven week 5 + +- Opgave 1 [Voertuigen](../problems/verhuur/index.md) +- Opgave 2 [Codingbat Arrays](../exercises/codingbat_arrays.md) diff --git a/_sources/course/week_5.md b/_sources/course/week_5.md new file mode 100644 index 00000000..6025d215 --- /dev/null +++ b/_sources/course/week_5.md @@ -0,0 +1,13 @@ +# Week 5 + +## Boek + +- Hoofdstuk 12: [Arrays of Objects](https://books.trinket.io/thinkjava2/chapter12.html) +- Hoofdstuk 13: [Objects of Arrays](https://books.trinket.io/thinkjava2/chapter13.html) +- Hoofdstuk 14: [Extending Classes](https://books.trinket.io/thinkjava2/chapter14.html) + +## Optioneel + +Java for Python Programmers: + +- [Defining Classes in Java](https://runestone.academy/runestone/books/published/java4python/Java4Python/definingclasses.html) diff --git a/_sources/exercises/codingbat_arrays.md b/_sources/exercises/codingbat_arrays.md new file mode 100644 index 00000000..0a2e51eb --- /dev/null +++ b/_sources/exercises/codingbat_arrays.md @@ -0,0 +1,18 @@ +# CodingBat + +[CodingBat](https://codingbat.com/java) is een handige site waar je kan oefenen met onder andere arrays en strings. Het is aan te raden om een account aan te maken zodat jouw opgaven bewaard blijven voor een volgende keer dat je de site bezoekt. + +## Arrays + +- [Arrays 1](https://codingbat.com/java/Array-1) + + Basic array problems + +- [Arrays 2](https://codingbat.com/java/Array-2) + + Medium array problems (1 loop) + +- [Arrays 3](https://codingbat.com/java/Array-3) + + Harder array problems (2 loops, more complex logic) + diff --git a/_sources/exercises/hypotheek.md b/_sources/exercises/hypotheek.md new file mode 100644 index 00000000..ccc5c22c --- /dev/null +++ b/_sources/exercises/hypotheek.md @@ -0,0 +1,528 @@ +# Overervering + +## Inleiding + +Dit practicum is een inleiding in overerving. Overerving wil zeggen dat een klasse eigenschappen overneem van zijn ouder-klasse (*parent class*). + +## Hypotheek + +Een lening voor de financiering van een huis wordt in de volksmond ook wel een hypotheek genoemd. + +Een hypotheek bestaat uit één of meerdere leningdelen. + +Elk leningdeel heeft een bedrag, een rentepercentage en looptijd. + +De looptijd wordt uitgedrukt in maanden en is standaard 360 maanden (30 jaar). + +Het rentepercentage kan in werkelijkheid veranderen. Om het eenvoudig te houden, is het in deze opgave gedurende de looptijd een vast percentage. + +Het bedrag kan gedurende de looptijd lager worden doordat er wordt afgelost. De verplichte maandelijkse aflossing is afhankelijk van het soort leningdeel. Daarnaast is het altijd mogelijk om extra af te lossen. + +Hoewel er verschillende soorten leningdelen zijn, hebben ze altijd bovenstaande eigenschappen. De verschillen tussen soorten leningdelen heeft vooral te maken met hoe wordt bepaald welk bedrag maandelijks wordt afgelost. De meest eenvoudige soort is aflossingsvrij, waarbij er geen verplichte maandelijkse aflossing is. + +Financieel adviseurs gebruiken software om inzichtelijk te maken wat de maandlasten van een hypotheek zijn. Met klassen voor een hypotheek en voor verschillende leningdelen kunnen veel verschillende hypotheken worden ondersteund. + +## De klasse `Aflossingsvrij` + +Onderstaande code bevat een klasse voor een aflossingsvrij leningdeel. Bestudeer de code om een goed beeld te krijgen van hoe deze werkt. De klasse is lang, maar de methodes zijn kort en eenvoudig. + +```{code-block} java +public class Aflossingsvrij { + + private double bedrag; // oorspronkelijke bedrag + private double resterendBedrag; // resterend bedrag + private double rentePercentage; // Jaarlijks rentepercentage + private int looptijd; // oorspronkelijke looptijd + private int resterendeLooptijd; // resterende looptijd + + /** + * Constructor + * @param bedrag Bedrag van het leningdeel + * @param rentePercentage Rentepercentage + * @param looptijd Looptijd uitgedrukt in maanden + */ + public Aflossingsvrij(double bedrag, double rentePercentage, int looptijd) { + this.rentePercentage = rentePercentage; + this.bedrag = bedrag; + this.resterendBedrag = bedrag; + this.looptijd = looptijd; + this.resterendeLooptijd = looptijd; + } + + /** + * Constructor met standaard looptijd van 30 jaar + * @param bedrag Bedrag van het leningdeel + * @param rentePercentage Rentepercentage + */ + public Aflossingsvrij(double bedrag, double rentePercentage) { + this(bedrag, rentePercentage, 360); // standaard looptijd is 30 jaar + } + + public double getRentePercentage() { + return rentePercentage; + } + + public double getBedrag() { + return bedrag; + } + + public double getResterendBedrag() { + return resterendBedrag; + } + + public int getLooptijd() { + return looptijd; + } + + public int getResterendeLooptijd() { + return resterendeLooptijd; + } + + /** + * Af te lossen bedrag deze maand + * @return bedrag aan aflossing deze maand + */ + public double berekenMaandlastAflossing() { + return 0; // geen standaard aflossing + } + + /** + * De te betalen rente deze maand + * @return bedrag aan rente in de huidige termijn + */ + public double berekenMaandlastRente() { + return ( resterendBedrag / 100 * rentePercentage ) / 12; + } + + /** + * De totale maandlast bestaat uit maandelijkse rente en vaste maandelijkse aflossing + * @return totale maandlast + */ + public double berekenMaandlast() { + return berekenMaandlastRente() + berekenMaandlastAflossing(); + } + + /** + * Bedrag aflossen + * Deze methode wordt gebruikt voor de verplichte maandelijkse aflossing + * maar kan ook worden gebruikt voor extra aflossingen. + * @param aflossing bedrag aan aflossing + */ + public void aflossen(double aflossing) { + resterendBedrag = resterendBedrag - aflossing; + if (resterendBedrag < 0) { + resterendBedrag = 0; + } + } + + /** + * Naar volgende maand gaan + */ + public void volgendeMaand() { + if (resterendeLooptijd > 0) { + // Aflossing verwerken + aflossen( berekenMaandlastAflossing() ); + // Resterende looptijd verlagen + resterendeLooptijd--; + } + } + + /** + * Naar volgend jaar gaan + * door middel van 12 keer naar volgende maand gaan + */ + public void volgendJaar() { + for(int t = 0; t < 12; t++) { + volgendeMaand(); + } + } + + /** + * Retourneert true als hypotheek nog een resterende looptijd heeft (actief is). + * @return true als hypotheek nog actief is + */ + public boolean isActief() { + return resterendeLooptijd > 0; + } + +} +``` + +Neem de klasse `Aflossingsvrij` over in je IntelliJ. + +Maak een klasse `Main` met een main-methode met de volgende code om het leningdeel te testen: + +```{code-block} java +Aflossingsvrij leningdeel = new Aflossingsvrij(150000, 4.5); // Leningdeel 150.000 euro 4,5% +while( leningdeel.isActief() ) { + System.out.printf("%d maanden € %.2f [maandbedrag rente + aflossing : € %.2f + € %.2f = € %.2f]\n", + leningdeel.getResterendeLooptijd(), leningdeel.getResterendBedrag(), + leningdeel.berekenMaandlastRente(), leningdeel.berekenMaandlastAflossing(), + leningdeel.berekenMaandlast() + ); + leningdeel.volgendJaar(); +} +System.out.printf("Einde looptijd: € %.2f\n", leningdeel.getResterendBedrag()); + +``` + +Verwachte uitvoer:
+ +```{code-block}shell +360 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 0,00 = € 562,50] +348 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 0,00 = € 562,50] +... +24 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 0,00 = € 562,50] +12 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 0,00 = € 562,50] +Einde looptijd: € 150000,00 +``` + +## De klasse `Lineair` + +Lineair aflossen wil zeggen dat elke maand hetzelfde bedrag wordt afgelost, zodat aan het einde van de looptijd het leningdeel volledig is afgellost. Kenmerkt van linair aflossen is dat de maandelijkse lasten steeds iets lager worden, omdat de te betalen rente afneemt. Het af te lossen bedrag wordt berekend door het resterende bedrag te delen door de resterende looptijd. + +Maak de klasse `Lineair` door een kopie te maken van klasse `Aflossingsvrij`. Alleen de methode `berekenMaandlastAflossing` moet aangepast worden, op basis van de bovenstaande beschrijving.Test de klasse met behulp van de main-methode. + +Verwachte uitvoer:
+ +```{code-block}shell +360 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 416,67 = € 979,17] +348 maanden € 145000,00 [maandbedrag rente + aflossing : € 543,75 + € 416,67 = € 960,42] +... +24 maanden € 10000,00 [maandbedrag rente + aflossing : € 37,50 + € 416,67 = € 454,17] +12 maanden € 5000,00 [maandbedrag rente + aflossing : € 18,75 + € 416,67 = € 435,42] +Einde looptijd: € 0,00 +``` + +## Problemen van twee soortgelijke klassen + +De klassen `Aflossingsvrij` en `Lineair` zijn soortgelijke klassen. Beide representeren een leningdeel. De code komt grotendeels overeen, wat resulteert in duplicate code. Als de opzet van de ene klasse verandert, dient dit waarschijnlijk ook in de andere klasse te gebeuren. Dit probleem wordt groter naarmate er meerdere soorten leningdelen bijkomen. + +Een ander probleem is gebruik van het datatype: Bij het wijzigen van `Aflossingsvrij` naar `Lineair` in `main` moesten zowel het *datatype* van de declaratie als het *object* bij keyword `new` aangepast worden. Dit maakt het gebruik van arrays of collecties voor het opslaan van een lijst verschillende leningdelen moeilijk. Het is wenselijk om een datatype te kunnen gebruiken voor een leningdeel, ongeacht het specifieke soort leningdeel (aflossingsvrij of lineair). + +De oplossing voor dit probleem is overerving. Overervaring wordt gerealiseerd met het keyword `extends`: + +```{code-block} java +public class Lineair extends Aflossingsvrij { + ... +} +``` + +In dit geval overerft de klasse `Lineair` de klasse `Aflossingsvrij`. De klasse `Lineair` is de *parent class*. De klasse `Aflossingsvrij` is hier de *child class*. In plaats van *parent class* en *child class* worden ook wel de begrippen *superklasse* en *subklasse* gebruikt. + +Pas de klasse-definitie `Lineair` aan zodat deze `Aflossingsvrij` overerft. verwijder alle code in de klasse uit klasse `Lineair`. + +Om het correct werkend te krijgen moeten twee aanpassingen worden gedaan: + +1. De klasse `Lineair` heeft constructors nodig +2. De methode `berekenMaandlastAflossing` moet geïmplementeerd worden, zodat er daadwerkelijk sprake is van lineaire aflossing. + +De constructors van `Lineair` zijn als volgt: + +```{code-block} java +public Lineair(double bedrag, double rentePercentage, int looptijd) { + super(bedrag, rentePercentage, looptijd); +} + +public Lineair(double bedrag, double rentePercentage) { + super(bedrag, rentePercentage); +} +``` + +Het enige wat deze constructors doen is de constructor van de parent class (of superklasse) aanroepen. Dit voorkomt dubbele code. + +Alle publieke reguliere methodes van de *parent class* zijn ook beschikbaar in de *child class*. + +De implementatie van `berekenMaandlastAflossing` is als volgt: + +```{code-block} java + + /** + * Af te lossen bedrag deze maand + * @return bedrag aan aflossing deze maand + */ +@Override +public double berekenMaandlastAflossing() { + return getResterendBedrag() / getResterendeLooptijd(); +} + +Mogelijk heb je in de vorige versie van `Lineair` de properties `resterendBedrag` en `resterendeLooptijd` rechtstreeks gebruikt. Dit is nu niet meer mogelijk, omdat deze properties `private` zijn. + +Er zijn twee mogelijke oplossingen voor dit probleem. De hierboven gebruikte oplossing is het gebruik van beschikbare *getters*. Een alternatief is gebruik van access-modifier *protected*. + +Test de nieuwe versie van `Lineair`. + +## Problemen van incorrecte overerving + +Ondanks dat het probleem van duplicate code is opgelost, is deze overerving niet geheel correct. Hoewel het technisch werkt, is het ontwerp slecht. + +Overervaring creëert een "is-a"-relatie. Als klasse `Lineair` de klasse `Aflossingsvrij` overerft, dan is `Lineair` impliciet `Aflossingsvrij`. + +Daardoor is de volgende code mogelijk: +```{code-block} java +Aflossingsvrij leningdeel = new Lineair(150000, 4.5); +``` + +Dit voorbeeld maakt zichtbaar dat het niet correct is. Immers, lineair aflossen is niet aflossingsvrij. + +De relatie ligt anders: lineair en aflossingsvrij zijn beide een soort leningdeel. Om dit te implementeren moeten beide klassen de klasse *Leningdeel* overervaren. + +Realiseer met door de volgende stappen: +1. Hernoem *Aflossingsvrij* naar *Leningdeel* +2. Maak een nieuwe klasse *Aflossingsvrij* die *Leningdeel* overerft. Voorzie deze klasse van de benodigde constructors. +3. Mogelijk overerft de klasse *Lineair* al *Leningdeel* doordat de editor dit automatisch voor je doet. Indien dit nog niet het geval is, voer deze wijziging dan zelf door. + +Test de nieuwe klassen in main, waarbij de variabele *leningdeel* gedeclareerd kan worden met *Leningdeel*: +Daardoor is de volgende code mogelijk: +```{code-block} java +Leningdeel leningdeel = new Lineair(150000, 4.5); +``` + +## Ongewenste instantiëring + +Soms is het niet wenselijk dat van een bepaalde klasse objecten worden gemaakt (ook instantiëring genoemd). Dit is vaak het geval bij een overkoepelende superklasse en is ook hier het geval. + +Van *Leningdeel* kan een object worden gemaakt: +```{code-block} java +Leningdeel leningdeel = new Leningdeel(150000, 4.5); +``` + +Deze zal zich gedragen als aflossingsvrij, maar het schept verwarring. De klasse *Leningdeel* is bedoeld om gebruikt te worden als superklasse, niet als klasse om objecten van te maken. + +Dit kan voorkomen worden met het keyword *abstract*: +```{code-block} java +public abstract class Leningdeel +``` + +In dat geval zal het instantiëren van *Leningdeel* niet meer mogelijk zijn, waardoor expliciet gekozen moet worden voor *Aflossingsvrij* of *Lineair*. + +Een abstract klasse is een klasse die wel overerft kan worden, maar niet kan worden geïnstantiëerd. + +## Abstracte methodes + +Binnen een abstracte klasse, kunnen methoden *abstract* worden gemaakt met het keyword `abstract`. Daarmee wordt een methode gedefiniëerd maar niet geïmplementeerd. + +Een methode waarbij dit wenselijk is, is de methode *berekenMaandlastAflossing*. Het meest onderscheidende kenmerk tussen verschillende soorten leningdelen is het bedrag wat maandelijks wordt afgelost en hoe dit bedrag tot stand komt. Daarom is het vreemd dat *Leningdeel* al een standaard implementatie bevat. + +Het ligt meer voor de hand om implementaties uitsluitend in de subklassen te doen. + +Controleer of de variabele *leningdeel* is gedeclareerd als type *Leningdeel*. Verwijder de methode *berekenMaandlastAflossing* uit de klasse *Leningdeel*. Wat gebeurt er? + +De klasse *Leningdeel* moet een methode *berekenMaandlastAflossing* bevatten. Daarom geeft het verwijderen van de methode *berekenMaandlastAflossing* problemen. Maar implementatie van deze methode is niet wenselijk. Oplossing is het abstract maken van deze methode met keyword *abstract*: +```{code-block} java +abstract public double berekenMaandlastAflossing(); +``` + +Voer deze wijziging door. Het is noodzakelijk om ook in de klasse *Aflossingsvrij* een implementatie te maken van *berekenMaandlastAflossing*. + +## Annuïteiten + +Annuïtair aflossen wil zeggen dat elke maand hetzelfde bedrag wordt betaald, zodanig aan het einde van de looptijd het leningdeel volledig is afgelost. Kenmerkt van linair aflossen is dat de (bruto) lasten maandelijks gelijk blijven. Elke maand wordt minder rente betaald en meer aflossing, maar het totaalbedrag is steeds hetzelfde. + +Deze klasse is aanzienlijk lastiger dan de andere twee soorten leningdelen, omdat er een ingewikkelde formule is voor het berekenen van het te betalen bedrag. + +Bij aflossingsvrij en lineair is het gemakkelijk om de maandelijkse aflossing te berekenen in de methode `berekenMaandlastAflossing`. Bij annuïtair is dit het vaste maandbedrag met aftrek van de die maand te betalen rente. + +Dit wordt als volgt geïmplementeerd: +```{code-block} java +@Override +public double berekenMaandlastAflossing() { + return berekenMaandlast() - berekenMaandlastRente(); +} +``` + +Vervolgens dient in de methode *berekenMaandlast* het vaste maandelijkse bedrag worden berekend, door deze methode te `overriden` in *Annuitair*. + +De formule voor een vast maandbedrag bij een annuïtaire lening is als volgt: + +vast bedrag = ( r / ( 1 - ( (1 + r) ^ -aantaltermijnen ) ) ) x bedrag + +r is fractie van het rentepercentage, percentage / 100. Om een vast maandbedrag te berekenen dient de rente gedeeld te worden door 12. Kortom, *r = (getRentePercentage() / 100) / 12* + +Let op het negatieve exponent in de formule! Hint: Math.pow + +Maak de klasse `Annuitair`. + +Test klasse met behulp van de main-methode. + +Verwachte uitvoer (obv. EUR 150.000 en 4,5%): +360 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 197,53 = € 760,03] +348 maanden € 147580,16 [maandbedrag rente + aflossing : € 553,43 + € 206,60 = € 760,03] +... +24 maanden € 17412,74 [maandbedrag rente + aflossing : € 65,30 + € 694,73 = € 760,03] +12 maanden € 8901,86 [maandbedrag rente + aflossing : € 33,38 + € 726,65 = € 760,03] +0 maanden € 0,00 + +## Volledige hypotheek + +Doordat er verschillende soorten leningdelen beschikbaar zijn, kunnen hypotheken samengesteld worden. Een hypotheek bestaat uit 1 of meer leningdelen + +Dit zou kunnen met een array of ArrayList, maar het is wenselijk om methoden beschikbaar te hebben om bijvoorbeeld het (totaal) resterende bedrag op te vragen of de totale maandlast. Dat kan eenvoudig gerealiseerd worden met een klasse *Hypotheek* + +Voor een klasse Hypotheek zijn twee opties: + + +Optie 1: +```{code-block} java +public class Hypotheek1 extends ArrayList { + + // de rest + +} +``` + +Optie 2: +```{code-block} java +public class Hypotheek { + + private ArrayList leningdelen; + + // de rest +} +``` +Welke van de twee heeft de voorkeur? Probeer een onderbouwing te vinden waarom... + +Optie 1 heeft betrekking op een *is-a*-relatie. Dat is problematisch, want een hypotheek is geen arraylist. Daarnaast is een ongewenst neveneffect dat *alle* publieke methodes die via ArrayList beschikbaar zijn ook beschikbaar worden via Hypotheek. + +In optie 2 vindt geen overerving plaats (behalve van `Object`) maar is de lijst leningdelen een property van hypotheek. Dit wordt *compositie* genoemd en definieert een *has-a*-relatie. Dat is in dit geval passend. + +Per situatie moet overwogen worden of er gebruik wordt gemaakt van *overerving* of *compositie*. + +Dit is een eerste opzet van klasse `Hypotheek`: + +```{code-block} java +public class Hypotheek { + + private ArrayList leningdelen; + + /** + * Voegt leningdeel toe aan hypotheek + * @param leningdeel Toe te voegen leningdeel + */ + public void voegLeningdeelToe(Leningdeel leningdeel) { + // Nog maken... + } + + /** + * Berekent het totaalbedrag van alle leningdelen + * @return totaalbedrag van alle leningdelen + */ + public double getBedrag() { + double bedrag = 0; + for(Leningdeel leningdeel : leningdelen) { + bedrag = bedrag + leningdeel.getBedrag(); + } + return bedrag; + } + + /** + * Berekent het totaal resterende bedrag van alle leningdelen + * @return totaal resterende bedrag van alle leningdelen + */ + public double getResterendBedrag() { + return -1; // Nog maken... + } + + /** + * Berekent het totaal af te lossen bedrag deze maand van alle leningdelen + * @return totaal af te lossen bedrag deze maand van alle leningdelen + */ + public double berekenMaandlastAflossing() { + return -1; // Nog maken... + } + + /** + * Berekent de totaal te betalen rente deze maand van alle leningdelen + * @return totaal te betalen rente deze maand van alle leningdelen + */ + public double berekenMaandlastRente() { + return -1; // Nog maken... + } + + /** + * De totale maandlast bestaat uit maandelijkse rente en vaste maandelijkse aflossing + * @return totale maandlast + */ + public double berekenMaandlast() { + return berekenMaandlastRente() + berekenMaandlastAflossing(); + } + + /** + * Naar volgende maand gaan (dit doen voor alle leningdelen) + */ + public void volgendeMaand() { + // Nog maken + } + + /** + * Naar volgend jaar gaan + * door middel van 12 keer naar volgende maand gaan + */ + public void volgendJaar() { + for(int t=0; t < 12; t++) { + volgendeMaand(); + } + } + + /** + * Retourneert true als tenminste één leningdeel nog een resterende looptijd heeft (actief is). + * @return true als hypotheek nog actief is + */ + public boolean isActief() { + // Let op! Hypotheken met leningdelen met verschillende looptijden zijn mogelijk. + // Daaruit volgt dat er lopende hypotheken bestaan met leningdelen die niet meer actief zijn. + // Retourneer true als tenminste één leningdeel actief is + return false; // Nog maken + } + +} +``` + +Maak de klasse `Hypotheek` af. + +Test deze met de onderstaande code in main, waar op de plaats van ... nog wat ingevuld moet worden.. + +```{code-block} java +/* +Hypotheek van EUR 291.000, looptijd 30 jaar, bestaande uit twee leningdelen +- Lineair EUR 224.000 5,2% rente +- Aflossingsvrij EUR 67.000 5.5% rente +*/ +Leningdeel leningdeel1 = ... +Leningdeel leningdeel2 = ... +System.out.println(leningdeel1.getResterendBedrag()); +System.out.println(leningdeel2.getResterendBedrag()); + +Hypotheek hypotheek = new Hypotheek(); +System.out.println(hypotheek.getResterendBedrag()); + +hypotheek.voegLeningdeelToe(leningdeel1); +hypotheek.voegLeningdeelToe(leningdeel2); + +int jaar=1; +while(hypotheek.isActief()) { + System.out.printf("%de jaar: € %.2f [maandbedrag rente + aflossing : € %.2f + € %.2f = € %.2f]\n", + jaar, hypotheek.getResterendBedrag(), + hypotheek.berekenMaandlastRente(), hypotheek.berekenMaandlastAflossing(), + hypotheek.berekenMaandlast() + ); + hypotheek.volgendJaar(); + jaar++; +} +System.out.printf("Einde looptijd: %.2f\n", hypotheek.getResterendBedrag()); + +``` + +Het verwachte resultaat is: + +```{code-block}shell +1e jaar: € 291000,00 [maandbedrag rente + aflossing : € 1277,75 + € 622,22 = € 1899,97] +2e jaar: € 283533,33 [maandbedrag rente + aflossing : € 1245,39 + € 622,22 = € 1867,62] +... +29e jaar: € 81933,33 [maandbedrag rente + aflossing : € 371,79 + € 622,22 = € 994,02] +30e jaar: € 74466,67 [maandbedrag rente + aflossing : € 339,44 + € 622,22 = € 961,66] +Einde looptijd: € 67000,00 +``` + + + diff --git a/_sources/problems/recursive_graphics/index.md b/_sources/problems/recursive_graphics/index.md index e20408bf..930f469c 100644 --- a/_sources/problems/recursive_graphics/index.md +++ b/_sources/problems/recursive_graphics/index.md @@ -7,7 +7,6 @@ * Een programma ontwerpen en ontwikkelen dat een recursief patroon van eigen ontwerp in beeld brengt (optioneel). \ No newline at end of file diff --git a/_sources/topics/6a_collections.ipynb b/_sources/topics/6a_collections.ipynb new file mode 100644 index 00000000..b0f3b199 --- /dev/null +++ b/_sources/topics/6a_collections.ipynb @@ -0,0 +1,397 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8f6163fb-f9a9-4b02-94f6-e1c5e8ac89d7", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Arrays\n", + "\n", + "Net als constanten zijn arrays ook \"final\". Als de grootte eenmaal is bepaald, dan kan deze niet meer worden gewijzigd: de array kan niet meer worden uitgebreid. De elementen in de array kunnen nog wel worden gewijzigd." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ee4035d9-0c6f-4ad4-86c2-073dbf80de25", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "class Lingo {\n", + " private char[] letters;\n", + " \n", + " public Lingo(String word) {\n", + " letters = new char[word.length()];\n", + " \n", + " for (int i = 0; i < letters.length; i++) {\n", + " letters[i] = word.charAt(i);\n", + " }\n", + " }\n", + " \n", + " public boolean guessLetter(int position, char letter) {\n", + " if (letters[position] == letter) {\n", + " return true;\n", + " }\n", + " return false;\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "99031470-12ac-4c47-859d-e08d8157a561", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "Lingo game = new Lingo(\"opzet\")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "b1d47bff-c6a7-4948-878b-267d2cedac25", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "false" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "game.guessLetter(0, 'z')" + ] + }, + { + "cell_type": "markdown", + "id": "15aa11a6-a57d-4c80-94f5-9994bbf9e356", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "source": [ + "## Collecties\n", + "\n", + "Arrays zijn eenvoudige types voor het beheren van een collectie elementen. Collecties zijn typen die veel flexibeler zijn, bijvoorbeeld ze groeien en weer krimpen (in tegenstelling tot arrays waar de lengte vast is)." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "d88cb315-adc3-4b86-9059-b7a717c43bbd", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "import java.util.ArrayList;" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "4b4d0d97-a35d-4ecf-b444-5ffc3819effe", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "ArrayList gameWords = new ArrayList();" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "cdfda69b-68b9-4c35-964a-add57c9fdc45", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "true" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gameWords.add(\"opzet\");" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "41e4c85e-d3d7-4ca3-8605-cfe017ad37e3", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "true" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gameWords.add(\"pannekoek\")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "31ef308a-1632-48a6-86db-205ac27725a3", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gameWords.size()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "fdc79fb3-de1e-4e7d-b89f-140cd02b69a6", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "pannekoek" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gameWords.remove(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "477f3fdf-efe0-4b0b-a22e-666f02fbb7b3", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "true" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gameWords.add(\"pannenkoek\")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "da40534a-86d7-4d0f-9be2-a93ff6ac3bab", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[opzet, pannenkoek]" + ] + } + ], + "source": [ + "System.out.print(gameWords)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "8ef47095-15bb-48e1-99a7-fffcd2403e71", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "opzet\n", + "pannenkoek\n" + ] + } + ], + "source": [ + "for (String woord: gameWords) {\n", + " System.out.println(woord);\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "349bb7d9-05cb-481f-8562-c3c8a2220465", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "source": [ + "![Word cloud](images/6/word_cloud.png)" + ] + }, + { + "cell_type": "markdown", + "id": "b3542829-4801-42f8-bb47-736245af1b8d", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "In hoofdstuk [12](https://books.trinket.io/thinkjava2/chapter12.html) tot en met [13](https://books.trinket.io/thinkjava2/chapter13.html) worden kaartspellen uitgewerkt, in opgave [simulatie](/problems/simulation/index) ga je dit voor het spel oorlogje (\"War\") uitwerken en het spel simuleren." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Java", + "language": "java", + "name": "java" + }, + "language_info": { + "codemirror_mode": "java", + "file_extension": ".jshell", + "mimetype": "text/x-java-source", + "name": "Java", + "pygments_lexer": "java", + "version": "11.0.11+9-Ubuntu-0ubuntu2" + }, + "toc-autonumbering": true, + "toc-showcode": true + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/topics/6a_static_klassen.ipynb b/_sources/topics/6a_static_klassen.ipynb new file mode 100644 index 00000000..1aa04631 --- /dev/null +++ b/_sources/topics/6a_static_klassen.ipynb @@ -0,0 +1,821 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e320476a-5748-4521-bca4-50fbccef7052", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "# Context\n", + "\n", + "Deze les gaat over klassen en over objecten: *instanties* van klassen" + ] + }, + { + "cell_type": "markdown", + "id": "b8f7eb70-85ab-4d93-8d7c-806078583b12", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "source": [ + "![Blueprint](images/6/blueprint.png)" + ] + }, + { + "cell_type": "markdown", + "id": "2778f400-c98a-4e83-a1b7-51f65f49039d", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "Eerder is een klasse beschreven als een *blauwdruk*, het is de bouwtekening die vertelt wat nieuwe objecten moeten zijn. Denk aan de bouwtekening van een huis: op basis van die tekening kan één huis worden gebouwd, maar ook 100 of meer." + ] + }, + { + "cell_type": "markdown", + "id": "c44577b1-1eb8-4b1d-ac33-5165613e0006", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## De *object* context" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d7a721a7-0bfa-44f1-8eb1-8588ab1ee38d", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "public class House {\n", + " private int number;\n", + " private String colour;\n", + " \n", + " public House(int number) {\n", + " this.number = number;\n", + " colour = \"red\";\n", + " }\n", + " \n", + " public House(int number, String colour) {\n", + " this.number = number;\n", + " this.colour = colour;\n", + " }\n", + " \n", + " public String toString() {\n", + " return String.format(\"House number %d with colour %s\", number, colour);\n", + " }\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "6988c2f1-4124-481b-bedd-d89823e717eb", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "De klasse `House` heeft twee constructors: één met alleen het huisnummer en een andere met zowel een huisnummer als een kleur. Dit geeft aan dat bij het maken van een huis in ieder geval een huisnummer meegegeven moet worden (maar niet welke), maar dat een kleur optioneel is. Pas bij een aanmaken van een huis (object) worden deze waarden concreet." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "65f782a5-d432-4cd0-868a-5e7559fffe15", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "House myHouse = new House(149);\n", + "House yourHouse = new House(150, \"blue\");" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6d1459ba-46f6-4335-a4a0-81ab808b1b4b", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "House number 149 with colour red" + ] + } + ], + "source": [ + "System.out.print(myHouse)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d13b08f0-83ef-40f9-9411-b8b0841c7fab", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "House number 150 with colour blue" + ] + } + ], + "source": [ + "System.out.print(yourHouse)" + ] + }, + { + "cell_type": "markdown", + "id": "b2699618-57da-4571-b323-54f627fcfd69", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## De *statische* context" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "22616cc2-49d5-4ffe-89f6-ca9c54105269", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "public class Account {\n", + " private String name;\n", + " private static double balance;\n", + "\n", + " public Account(String name) {\n", + " this.name = name;\n", + " balance = 0.0;\n", + " }\n", + "\n", + " public void deposit(int amount) {\n", + " balance += amount;\n", + " }\n", + "\n", + " public double getBalance() {\n", + " return balance;\n", + " }\n", + " \n", + " public String toString() {\n", + " return String.format(\"%s's balance: %.02f\", name, balance);\n", + " }\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "51506683-2aeb-4dde-9e09-2da5c6143209", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "Hierboven zie je een andere klasse, een spaarrekening waar geld op kan worden gestort. Let op, tot nu toe heb je methoden gezien die *statisch* gedefinieerd waren met het *keyword* `static` (denk aan `main`), maar *velden* kunnen ook statisch zijn. Hier is het veld `balance` statisch gedefinieerd. Let nu op wat er in de onderstaande code-voorbeelden gebeurt:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "32dc06a5-4d22-4b0a-8af9-819069e1f09b", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "Account misja = new Account(\"Misja\");\n", + "Account simon = new Account(\"Simon\");" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f6a09c03-fc1f-4cee-ac5f-29e5c8db9ca9", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "misja.deposit(1500);" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ab34ef49-105c-47f7-afd4-96717078ba85", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Misja's balance: 1500,00" + ] + } + ], + "source": [ + "System.out.print(misja);" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "53420e61-1d16-40c9-a011-c08183caa3cf", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "simon.deposit(2500);" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "35d47633-a21d-414f-b099-e473f4e2be60", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simon's balance: 4000,00\n" + ] + } + ], + "source": [ + "System.out.println(simon);" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "79c48277-99bf-4ce3-8445-6b0ed854c3fa", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Misja's balance: 4000,00\n" + ] + } + ], + "source": [ + "System.out.println(misja);" + ] + }, + { + "cell_type": "markdown", + "id": "aaa536f5-9ae4-4d31-a5dc-c5d9bed37ce1", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "Dat is makkelijk rijk worden 😎. Maar wat gebeurt hier 🤔?" + ] + }, + { + "cell_type": "markdown", + "id": "4bfcf71d-82b7-4a10-aeae-aea4ea2b3f2e", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "### `static`\n", + "\n", + "Een klasse is niet alleen maar een definitie, hij *kan* ook waarden hebben. Dit zijn zogenaamde *statische waarden*, die gedefinieerd zijn voor de klasse en daardoor hetzelfde zijn voor *alle* objecten die van die klasse gemaakt worden." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "468d0d6b-a1c3-48ac-96e7-f82664b48750", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "public class Hello {\n", + " public static void main(String[] args) {\n", + " System.out.println(\"Hello, \" + args[0] + \"!\");\n", + " }\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "cb97529f-c7df-4a41-80aa-372620f1359f", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "Met waarden bedoelen we hier niet alleen variabelen (data) maar ook methoden, bijvoorbeeld de welbekende methode `main`. Als een waarde eigen is aan de klasse dan betekent dit dat *geen* instantie van deze klasse nodig is om de methode aan te roepen." + ] + }, + { + "cell_type": "markdown", + "id": "c861e75d-db31-4734-b15d-5941321999ef", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "source": [ + "```console\n", + "> java HelloWorld.java Misja\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "9df96b64-5883-4217-a2ff-c3d61698341b", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "De argumenten die via de commandline zouden worden gegeven en verzameld worden in een array van `String`'s." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "e59cae47-3879-42fb-9bdc-fdc8de517030", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello, Misja!\n" + ] + } + ], + "source": [ + "String[] args = {\"Misja\"};\n", + "Hello.main(args);" + ] + }, + { + "cell_type": "markdown", + "id": "86d8f655-4b9c-4064-a7d2-089c565ccd29", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "De aanroep van de methode `main` via de klasse, en niet een via een *instantie* van de klasse." + ] + }, + { + "cell_type": "markdown", + "id": "0adb0ed5-ef08-4ef3-84b7-e2cff2442c75", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Combineren\n", + "\n", + "Context mixen." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "3d0ac723-d109-41c7-8d61-4dcca04847a3", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "public class Person {\n", + " private String name;\n", + " \n", + " public Person(String name) {\n", + " this.name = name;\n", + " }\n", + " \n", + " public String toString() {\n", + " return name;\n", + " }\n", + " \n", + " public static void main(String[] args) {\n", + " Person a = new Person(\"Ariel\");\n", + " Person b = new Person(\"Bo\");\n", + " \n", + " System.out.println(\"Hi \" + a + \" and \" + b + \"!\");\n", + " }\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "eb9c8482-c23e-4567-9e3c-6f82f6c33cf4", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "De klasse als \"client\" van zichzelf." + ] + }, + { + "cell_type": "markdown", + "id": "499c09ed-042c-46f5-bd70-8a1c1bbba574", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [] + }, + "source": [ + "```console\n", + "> java Person.java\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "e1d7f8fe-1a13-4185-84cd-7bc471ade97c", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hi Ariel and Bo!\n" + ] + } + ], + "source": [ + "Person.main(args)" + ] + }, + { + "cell_type": "markdown", + "id": "bced0a2a-bcda-4255-896d-9c1ece145700", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [] + }, + "source": [ + "| | `static`
(voor de hele klasse) | *niet* `static`
(per instantie) |\n", + "|----------------|---------------------------------------|---------------------------------------|\n", + "| methode | `Math.sqrt()`
`Integer.parseInt()` | `name.length()`
`text.charAt()` |\n", + "| veld/variabele | `Math.PI` | `args.length`
`name.toUpperCase()` |" + ] + }, + { + "cell_type": "markdown", + "id": "d38b9a23-ec99-425b-b331-5451aa1ea54f", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "Je hebt inmiddels zowel methoden als klassen in een objectcontext én in een statische context gebruikt; je zal hier een aantal aanroepen wellicht herkennen. " + ] + }, + { + "cell_type": "markdown", + "id": "712192f6-27a0-4aa0-b47e-5cc8d0bba33d", + "metadata": { + "slideshow": { + "slide_type": "slide" + }, + "tags": [] + }, + "source": [ + "## Onverandelijkheid\n", + "\n", + "Door gebruik te maken van `final` zorg je ervoor dat een eenmaal aangemaakte variabele niet meer van waarde kan veranderen. Deze is nu `final`." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "354ef4ef-a15c-4545-b6e5-73563c0e241f", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [], + "source": [ + "public class Square {\n", + " public static final int MAX_WIDTH = 100;\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "25a1621a-9eb8-42b7-a39f-4cb157fe214e", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "100" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Square.MAX_WIDTH;" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "675d29d4-2e2f-40f7-a779-0b4821734da4", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "ename": "CompilationException", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1m\u001b[30m| \u001b[1m\u001b[30m\u001b[0m\u001b[1m\u001b[30m\u001b[41mSquare.MAX_WIDTH\u001b[0m\u001b[1m\u001b[30m = 101;\u001b[0m", + "\u001b[1m\u001b[31mcannot assign a value to final variable MAX_WIDTH\u001b[0m", + "" + ] + } + ], + "source": [ + "Square.MAX_WIDTH = 101;" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "31a8e335-cc09-4b7d-8bbe-b896d66613d5", + "metadata": { + "slideshow": { + "slide_type": "subslide" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3.141592653589793" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Math.PI" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "9f6b835e-cce4-4e65-8b02-a7569ad9df82", + "metadata": { + "slideshow": { + "slide_type": "fragment" + }, + "tags": [], + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "ename": "CompilationException", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1m\u001b[30m| \u001b[1m\u001b[30m\u001b[0m\u001b[1m\u001b[30m\u001b[41mMath.PI\u001b[0m\u001b[1m\u001b[30m = 2 * Math.PI\u001b[0m", + "\u001b[1m\u001b[31mcannot assign a value to final variable PI\u001b[0m", + "" + ] + } + ], + "source": [ + "Math.PI = 2 * Math.PI" + ] + }, + { + "cell_type": "markdown", + "id": "c28b3a6f-50e4-4ab3-a838-283014b927a6", + "metadata": { + "slideshow": { + "slide_type": "notes" + }, + "tags": [] + }, + "source": [ + "De conventie is dat `final` velden met hoofdletters worden geschreven. Het geeft aan dat het *constanten* zijn, onveranderlijke waarden." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Java", + "language": "java", + "name": "java" + }, + "language_info": { + "codemirror_mode": "java", + "file_extension": ".jshell", + "mimetype": "text/x-java-source", + "name": "Java", + "pygments_lexer": "java", + "version": "11.0.11+9-Ubuntu-0ubuntu2" + }, + "toc-autonumbering": true, + "toc-showcode": true + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/about/literatuur.html b/about/literatuur.html index 4e0c9441..81046fcc 100644 --- a/about/literatuur.html +++ b/about/literatuur.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/about/syllabus.html b/about/syllabus.html index 4e293d46..7cea503a 100644 --- a/about/syllabus.html +++ b/about/syllabus.html @@ -410,6 +410,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ @@ -566,6 +622,8 @@

Welkom
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + + + + + + + + + +
+ +
+ +
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+
+
+
+ +
+

Opgaven week 5

+ +
+
+ +
+
+
+
+ +
+ +
+

Opgaven week 5#

+ +
+
+
+ + + + +
+ +
+ +
+
+ + +
+ + +
+
+ + + + + + + \ No newline at end of file diff --git a/course/week_1.html b/course/week_1.html index 1f180529..f91c901a 100644 --- a/course/week_1.html +++ b/course/week_1.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/course/week_2.html b/course/week_2.html index 995b856f..850ff429 100644 --- a/course/week_2.html +++ b/course/week_2.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/course/week_3.html b/course/week_3.html index 1c0bad99..3cdd6355 100644 --- a/course/week_3.html +++ b/course/week_3.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/course/week_4.html b/course/week_4.html index 349d99d8..d7f010d7 100644 --- a/course/week_4.html +++ b/course/week_4.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/course/week_5.html b/course/week_5.html new file mode 100644 index 00000000..137a6eda --- /dev/null +++ b/course/week_5.html @@ -0,0 +1,736 @@ + + + + + + + + + Week 5 — Objectgeoriënteerd Programmeren + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + + + + + + + + + +
+ +
+ +
+ + + + +
+
+ + + + +
+
+ + + + + +
+
+ + +
+
+ Contents +
+ +
+
+
+
+ +
+

Week 5

+ +
+
+ +
+

Contents

+
+ +
+
+
+
+ +
+ +
+

Week 5#

+
+

Boek#

+ +
+
+

Optioneel#

+

Java for Python Programmers:

+ +
+
+
+
+ + + + +
+ +
+ +
+
+ + +
+ + +
+
+ + + + + + + \ No newline at end of file diff --git a/exercises/12_12_if_statements.html b/exercises/12_12_if_statements.html index 76b58ab1..5653ed68 100644 --- a/exercises/12_12_if_statements.html +++ b/exercises/12_12_if_statements.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/exercises/8-9_primitive_data.html b/exercises/8-9_primitive_data.html index beb9e1e6..cf5c0547 100644 --- a/exercises/8-9_primitive_data.html +++ b/exercises/8-9_primitive_data.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/exercises/9a-9_variables_assignment.html b/exercises/9a-9_variables_assignment.html index 2020240d..350de4f4 100644 --- a/exercises/9a-9_variables_assignment.html +++ b/exercises/9a-9_variables_assignment.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/exercises/codingbat_arrays.html b/exercises/codingbat_arrays.html new file mode 100644 index 00000000..a060025a --- /dev/null +++ b/exercises/codingbat_arrays.html @@ -0,0 +1,716 @@ + + + + + + + + + CodingBat — Objectgeoriënteerd Programmeren + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + + + + + + + + + +
+ +
+ +
+ + + + +
+
+ + + + +
+
+ + + + + +
+
+ + +
+
+ Contents +
+ +
+
+
+
+ +
+

CodingBat

+ +
+
+ +
+

Contents

+
+ +
+
+
+
+ +
+ +
+

CodingBat#

+

CodingBat is een handige site waar je kan oefenen met onder andere arrays en strings. Het is aan te raden om een account aan te maken zodat jouw opgaven bewaard blijven voor een volgende keer dat je de site bezoekt.

+
+

Arrays#

+
    +
  • Arrays 1

    +

    Basic array problems

    +
  • +
  • Arrays 2

    +

    Medium array problems (1 loop)

    +
  • +
  • Arrays 3

    +

    Harder array problems (2 loops, more complex logic)

    +
  • +
+
+
+ + + + +
+ +
+ +
+
+ + +
+ + +
+
+ + + + + + + \ No newline at end of file diff --git a/exercises/codingbat_recursie.html b/exercises/codingbat_recursie.html index eb782446..49021475 100644 --- a/exercises/codingbat_recursie.html +++ b/exercises/codingbat_recursie.html @@ -54,6 +54,7 @@ + @@ -410,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ @@ -638,6 +695,13 @@

RecursieRecursieve graphics

+ +
+

volgende

+

Week 5

+
+ +
diff --git a/exercises/codingbat_strings.html b/exercises/codingbat_strings.html index 3c8ecc82..1723ba97 100644 --- a/exercises/codingbat_strings.html +++ b/exercises/codingbat_strings.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/exercises/cone/index.html b/exercises/cone/index.html index 60468aab..3088e84e 100644 --- a/exercises/cone/index.html +++ b/exercises/cone/index.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/exercises/debuggen_en_methoden.html b/exercises/debuggen_en_methoden.html index bee079ba..310d76cb 100644 --- a/exercises/debuggen_en_methoden.html +++ b/exercises/debuggen_en_methoden.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/exercises/grote_getallen.html b/exercises/grote_getallen.html index 4eaf5ae5..17998386 100644 --- a/exercises/grote_getallen.html +++ b/exercises/grote_getallen.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/exercises/hypotheek.html b/exercises/hypotheek.html new file mode 100644 index 00000000..c6f33c80 --- /dev/null +++ b/exercises/hypotheek.html @@ -0,0 +1,1265 @@ + + + + + + + + + Overervering — Objectgeoriënteerd Programmeren + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + + + + + + + + + +
+ +
+ +
+ + + + +
+
+ + + + +
+
+ + + + + +
+
+ + + +
+
+
+ + +
+ +
+ +
+

Overervering#

+
+

Inleiding#

+

Dit practicum is een inleiding in overerving. Overerving wil zeggen dat een klasse eigenschappen overneem van zijn ouder-klasse (parent class).

+
+
+

Hypotheek#

+

Een lening voor de financiering van een huis wordt in de volksmond ook wel een hypotheek genoemd.

+

Een hypotheek bestaat uit één of meerdere leningdelen.

+

Elk leningdeel heeft een bedrag, een rentepercentage en looptijd.

+

De looptijd wordt uitgedrukt in maanden en is standaard 360 maanden (30 jaar).

+

Het rentepercentage kan in werkelijkheid veranderen. Om het eenvoudig te houden, is het in deze opgave gedurende de looptijd een vast percentage.

+

Het bedrag kan gedurende de looptijd lager worden doordat er wordt afgelost. De verplichte maandelijkse aflossing is afhankelijk van het soort leningdeel. Daarnaast is het altijd mogelijk om extra af te lossen.

+

Hoewel er verschillende soorten leningdelen zijn, hebben ze altijd bovenstaande eigenschappen. De verschillen tussen soorten leningdelen heeft vooral te maken met hoe wordt bepaald welk bedrag maandelijks wordt afgelost. De meest eenvoudige soort is aflossingsvrij, waarbij er geen verplichte maandelijkse aflossing is.

+

Financieel adviseurs gebruiken software om inzichtelijk te maken wat de maandlasten van een hypotheek zijn. Met klassen voor een hypotheek en voor verschillende leningdelen kunnen veel verschillende hypotheken worden ondersteund.

+
+
+

De klasse Aflossingsvrij#

+

Onderstaande code bevat een klasse voor een aflossingsvrij leningdeel. Bestudeer de code om een goed beeld te krijgen van hoe deze werkt. De klasse is lang, maar de methodes zijn kort en eenvoudig.

+
public class Aflossingsvrij {
+
+    private double bedrag; // oorspronkelijke bedrag
+    private double resterendBedrag; // resterend bedrag
+    private double rentePercentage; // Jaarlijks rentepercentage
+    private int looptijd; // oorspronkelijke looptijd
+    private int resterendeLooptijd; // resterende looptijd
+
+    /**
+     * Constructor
+     * @param bedrag Bedrag van het leningdeel
+     * @param rentePercentage Rentepercentage
+     * @param looptijd Looptijd uitgedrukt in maanden
+     */
+    public Aflossingsvrij(double bedrag, double rentePercentage, int looptijd) {
+        this.rentePercentage = rentePercentage;
+        this.bedrag = bedrag;
+        this.resterendBedrag = bedrag;
+        this.looptijd = looptijd;
+        this.resterendeLooptijd = looptijd;
+    }
+
+    /**
+     * Constructor met standaard looptijd van 30 jaar
+     * @param bedrag Bedrag van het leningdeel
+     * @param rentePercentage Rentepercentage
+     */
+    public Aflossingsvrij(double bedrag, double rentePercentage) {
+        this(bedrag, rentePercentage, 360); // standaard looptijd is 30 jaar
+    }
+
+    public double getRentePercentage() {
+        return rentePercentage;
+    }
+
+    public double getBedrag() {
+        return bedrag;
+    }
+
+    public double getResterendBedrag() {
+        return resterendBedrag;
+    }
+
+    public int getLooptijd() {
+        return looptijd;
+    }
+
+    public int getResterendeLooptijd() {
+        return resterendeLooptijd;
+    }
+
+    /**
+     * Af te lossen bedrag deze maand
+     * @return bedrag aan aflossing deze maand
+     */
+    public double berekenMaandlastAflossing() {
+        return 0; // geen standaard aflossing
+    }
+
+    /**
+     * De te betalen rente deze maand
+     * @return bedrag aan rente in de huidige termijn
+     */
+    public double berekenMaandlastRente() {
+        return ( resterendBedrag / 100 * rentePercentage ) / 12;
+    }
+
+    /**
+     * De totale maandlast bestaat uit maandelijkse rente en vaste maandelijkse aflossing
+     * @return totale maandlast
+     */
+    public double berekenMaandlast() {
+        return berekenMaandlastRente() + berekenMaandlastAflossing();
+    }
+
+    /**
+     * Bedrag aflossen
+     * Deze methode wordt gebruikt voor de verplichte maandelijkse aflossing
+     * maar kan ook worden gebruikt voor extra aflossingen.
+     * @param aflossing bedrag aan aflossing
+     */
+    public void aflossen(double aflossing) {
+        resterendBedrag = resterendBedrag - aflossing;
+        if (resterendBedrag < 0) {
+            resterendBedrag = 0;
+        }
+    }
+
+    /**
+     * Naar volgende maand gaan
+     */
+    public void volgendeMaand() {
+        if (resterendeLooptijd > 0) {
+            // Aflossing verwerken
+            aflossen( berekenMaandlastAflossing() );
+            // Resterende looptijd verlagen
+            resterendeLooptijd--;
+        }
+    }
+
+    /**
+     * Naar volgend jaar gaan
+     * door middel van 12 keer naar volgende maand gaan
+     */
+    public void volgendJaar() {
+        for(int t = 0; t < 12; t++) {
+            volgendeMaand();
+        }
+    }
+
+    /**
+     * Retourneert true als hypotheek nog een resterende looptijd heeft (actief is).
+     * @return true als hypotheek nog actief is
+     */
+    public boolean isActief() {
+        return resterendeLooptijd > 0;
+    }
+
+}
+
+
+

Neem de klasse Aflossingsvrij over in je IntelliJ.

+

Maak een klasse Main met een main-methode met de volgende code om het leningdeel te testen:

+
Aflossingsvrij leningdeel = new Aflossingsvrij(150000, 4.5); // Leningdeel 150.000 euro 4,5%
+while( leningdeel.isActief() ) {
+    System.out.printf("%d maanden € %.2f [maandbedrag rente + aflossing : € %.2f + € %.2f = € %.2f]\n",
+            leningdeel.getResterendeLooptijd(), leningdeel.getResterendBedrag(),
+            leningdeel.berekenMaandlastRente(), leningdeel.berekenMaandlastAflossing(),
+            leningdeel.berekenMaandlast()
+    );
+    leningdeel.volgendJaar();
+}
+System.out.printf("Einde looptijd: € %.2f\n", leningdeel.getResterendBedrag());
+
+
+

Verwachte uitvoer:

+
360 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 0,00 = € 562,50]
+348 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 0,00 = € 562,50]
+...
+24 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 0,00 = € 562,50]
+12 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 0,00 = € 562,50]
+Einde looptijd: € 150000,00
+
+
+
+
+

De klasse Lineair#

+

Lineair aflossen wil zeggen dat elke maand hetzelfde bedrag wordt afgelost, zodat aan het einde van de looptijd het leningdeel volledig is afgellost. Kenmerkt van linair aflossen is dat de maandelijkse lasten steeds iets lager worden, omdat de te betalen rente afneemt. Het af te lossen bedrag wordt berekend door het resterende bedrag te delen door de resterende looptijd.

+

Maak de klasse Lineair door een kopie te maken van klasse Aflossingsvrij. Alleen de methode berekenMaandlastAflossing moet aangepast worden, op basis van de bovenstaande beschrijving.Test de klasse met behulp van de main-methode.

+

Verwachte uitvoer:

+
360 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 416,67 = € 979,17]
+348 maanden € 145000,00 [maandbedrag rente + aflossing : € 543,75 + € 416,67 = € 960,42]
+...
+24 maanden € 10000,00 [maandbedrag rente + aflossing : € 37,50 + € 416,67 = € 454,17]
+12 maanden € 5000,00 [maandbedrag rente + aflossing : € 18,75 + € 416,67 = € 435,42]
+Einde looptijd: € 0,00
+
+
+
+
+

Problemen van twee soortgelijke klassen#

+

De klassen Aflossingsvrij en Lineair zijn soortgelijke klassen. Beide representeren een leningdeel. De code komt grotendeels overeen, wat resulteert in duplicate code. Als de opzet van de ene klasse verandert, dient dit waarschijnlijk ook in de andere klasse te gebeuren. Dit probleem wordt groter naarmate er meerdere soorten leningdelen bijkomen.

+

Een ander probleem is gebruik van het datatype: Bij het wijzigen van Aflossingsvrij naar Lineair in main moesten zowel het datatype van de declaratie als het object bij keyword new aangepast worden. Dit maakt het gebruik van arrays of collecties voor het opslaan van een lijst verschillende leningdelen moeilijk. Het is wenselijk om een datatype te kunnen gebruiken voor een leningdeel, ongeacht het specifieke soort leningdeel (aflossingsvrij of lineair).

+

De oplossing voor dit probleem is overerving. Overervaring wordt gerealiseerd met het keyword extends:

+
public class Lineair extends Aflossingsvrij { 
+     ...
+}
+
+
+

In dit geval overerft de klasse Lineair de klasse Aflossingsvrij. De klasse Lineair is de parent class. De klasse Aflossingsvrij is hier de child class. In plaats van parent class en child class worden ook wel de begrippen superklasse en subklasse gebruikt.

+

Pas de klasse-definitie Lineair aan zodat deze Aflossingsvrij overerft. verwijder alle code in de klasse uit klasse Lineair.

+

Om het correct werkend te krijgen moeten twee aanpassingen worden gedaan:

+
    +
  1. De klasse Lineair heeft constructors nodig

  2. +
  3. De methode berekenMaandlastAflossing moet geïmplementeerd worden, zodat er daadwerkelijk sprake is van lineaire aflossing.

  4. +
+

De constructors van Lineair zijn als volgt:

+
public Lineair(double bedrag, double rentePercentage, int looptijd) {
+    super(bedrag, rentePercentage, looptijd);
+}
+
+public Lineair(double bedrag, double rentePercentage) {
+    super(bedrag, rentePercentage);
+}
+
+
+

Het enige wat deze constructors doen is de constructor van de parent class (of superklasse) aanroepen. Dit voorkomt dubbele code.

+

Alle publieke reguliere methodes van de parent class zijn ook beschikbaar in de child class.

+

De implementatie van berekenMaandlastAflossing is als volgt:

+
 /**
+ * Af te lossen bedrag deze maand
+ * @return bedrag aan aflossing deze maand
+ */
+@Override
+public double berekenMaandlastAflossing() {
+    return getResterendBedrag() / getResterendeLooptijd();
+}
+
+Mogelijk heb je in de vorige versie van `Lineair` de properties `resterendBedrag` en `resterendeLooptijd` rechtstreeks gebruikt. Dit is nu niet meer mogelijk, omdat deze properties `private` zijn.
+
+Er zijn twee mogelijke oplossingen voor dit probleem. De hierboven gebruikte oplossing is het gebruik van beschikbare *getters*. Een alternatief is gebruik van access-modifier *protected*.
+
+Test de nieuwe versie van `Lineair`.
+
+## Problemen van incorrecte overerving
+
+Ondanks dat het probleem van duplicate code is opgelost, is deze overerving niet geheel correct. Hoewel het technisch werkt, is het ontwerp slecht.
+
+Overervaring creëert een "is-a"-relatie. Als klasse `Lineair` de klasse `Aflossingsvrij` overerft, dan is `Lineair` impliciet `Aflossingsvrij`.
+
+Daardoor is de volgende code mogelijk:
+```{code-block} java
+Aflossingsvrij leningdeel = new Lineair(150000, 4.5);
+
+
+

Dit voorbeeld maakt zichtbaar dat het niet correct is. Immers, lineair aflossen is niet aflossingsvrij.

+

De relatie ligt anders: lineair en aflossingsvrij zijn beide een soort leningdeel. Om dit te implementeren moeten beide klassen de klasse Leningdeel overervaren.

+

Realiseer met door de volgende stappen:

+
    +
  1. Hernoem Aflossingsvrij naar Leningdeel

  2. +
  3. Maak een nieuwe klasse Aflossingsvrij die Leningdeel overerft. Voorzie deze klasse van de benodigde constructors.

  4. +
  5. Mogelijk overerft de klasse Lineair al Leningdeel doordat de editor dit automatisch voor je doet. Indien dit nog niet het geval is, voer deze wijziging dan zelf door.

  6. +
+

Test de nieuwe klassen in main, waarbij de variabele leningdeel gedeclareerd kan worden met Leningdeel: +Daardoor is de volgende code mogelijk:

+
Leningdeel leningdeel = new Lineair(150000, 4.5);
+
+
+
+
+

Ongewenste instantiëring#

+

Soms is het niet wenselijk dat van een bepaalde klasse objecten worden gemaakt (ook instantiëring genoemd). Dit is vaak het geval bij een overkoepelende superklasse en is ook hier het geval.

+

Van Leningdeel kan een object worden gemaakt:

+
Leningdeel leningdeel = new Leningdeel(150000, 4.5);
+
+
+

Deze zal zich gedragen als aflossingsvrij, maar het schept verwarring. De klasse Leningdeel is bedoeld om gebruikt te worden als superklasse, niet als klasse om objecten van te maken.

+

Dit kan voorkomen worden met het keyword abstract:

+
public abstract class Leningdeel
+
+
+

In dat geval zal het instantiëren van Leningdeel niet meer mogelijk zijn, waardoor expliciet gekozen moet worden voor Aflossingsvrij of Lineair.

+

Een abstract klasse is een klasse die wel overerft kan worden, maar niet kan worden geïnstantiëerd.

+
+
+

Abstracte methodes#

+

Binnen een abstracte klasse, kunnen methoden abstract worden gemaakt met het keyword abstract. Daarmee wordt een methode gedefiniëerd maar niet geïmplementeerd.

+

Een methode waarbij dit wenselijk is, is de methode berekenMaandlastAflossing. Het meest onderscheidende kenmerk tussen verschillende soorten leningdelen is het bedrag wat maandelijks wordt afgelost en hoe dit bedrag tot stand komt. Daarom is het vreemd dat Leningdeel al een standaard implementatie bevat.

+

Het ligt meer voor de hand om implementaties uitsluitend in de subklassen te doen.

+

Controleer of de variabele leningdeel is gedeclareerd als type Leningdeel. Verwijder de methode berekenMaandlastAflossing uit de klasse Leningdeel. Wat gebeurt er?

+

De klasse Leningdeel moet een methode berekenMaandlastAflossing bevatten. Daarom geeft het verwijderen van de methode berekenMaandlastAflossing problemen. Maar implementatie van deze methode is niet wenselijk. Oplossing is het abstract maken van deze methode met keyword abstract:

+
abstract public double berekenMaandlastAflossing();
+
+
+

Voer deze wijziging door. Het is noodzakelijk om ook in de klasse Aflossingsvrij een implementatie te maken van berekenMaandlastAflossing.

+
+
+

Annuïteiten#

+

Annuïtair aflossen wil zeggen dat elke maand hetzelfde bedrag wordt betaald, zodanig aan het einde van de looptijd het leningdeel volledig is afgelost. Kenmerkt van linair aflossen is dat de (bruto) lasten maandelijks gelijk blijven. Elke maand wordt minder rente betaald en meer aflossing, maar het totaalbedrag is steeds hetzelfde.

+

Deze klasse is aanzienlijk lastiger dan de andere twee soorten leningdelen, omdat er een ingewikkelde formule is voor het berekenen van het te betalen bedrag.

+

Bij aflossingsvrij en lineair is het gemakkelijk om de maandelijkse aflossing te berekenen in de methode berekenMaandlastAflossing. Bij annuïtair is dit het vaste maandbedrag met aftrek van de die maand te betalen rente.

+

Dit wordt als volgt geïmplementeerd:

+
@Override
+public double berekenMaandlastAflossing() {
+    return berekenMaandlast() - berekenMaandlastRente();
+}
+
+
+

Vervolgens dient in de methode berekenMaandlast het vaste maandelijkse bedrag worden berekend, door deze methode te overriden in Annuitair.

+

De formule voor een vast maandbedrag bij een annuïtaire lening is als volgt:

+

vast bedrag = ( r / ( 1 - ( (1 + r) ^ -aantaltermijnen ) ) ) x bedrag

+

r is fractie van het rentepercentage, percentage / 100. Om een vast maandbedrag te berekenen dient de rente gedeeld te worden door 12. Kortom, r = (getRentePercentage() / 100) / 12

+

Let op het negatieve exponent in de formule! Hint: Math.pow

+

Maak de klasse Annuitair.

+

Test klasse met behulp van de main-methode.

+

Verwachte uitvoer (obv. EUR 150.000 en 4,5%): +360 maanden € 150000,00 [maandbedrag rente + aflossing : € 562,50 + € 197,53 = € 760,03] +348 maanden € 147580,16 [maandbedrag rente + aflossing : € 553,43 + € 206,60 = € 760,03] +… +24 maanden € 17412,74 [maandbedrag rente + aflossing : € 65,30 + € 694,73 = € 760,03] +12 maanden € 8901,86 [maandbedrag rente + aflossing : € 33,38 + € 726,65 = € 760,03] +0 maanden € 0,00

+
+
+

Volledige hypotheek#

+

Doordat er verschillende soorten leningdelen beschikbaar zijn, kunnen hypotheken samengesteld worden. Een hypotheek bestaat uit 1 of meer leningdelen

+

Dit zou kunnen met een array of ArrayList, maar het is wenselijk om methoden beschikbaar te hebben om bijvoorbeeld het (totaal) resterende bedrag op te vragen of de totale maandlast. Dat kan eenvoudig gerealiseerd worden met een klasse Hypotheek

+

Voor een klasse Hypotheek zijn twee opties:

+

Optie 1:

+
public class Hypotheek1 extends ArrayList<Leningdeel> {
+    
+    // de rest
+
+}
+
+
+

Optie 2:

+
public class Hypotheek {
+
+    private ArrayList<Leningdeel> leningdelen;
+
+    // de rest
+}
+
+
+

Welke van de twee heeft de voorkeur? Probeer een onderbouwing te vinden waarom…

+

Optie 1 heeft betrekking op een is-a-relatie. Dat is problematisch, want een hypotheek is geen arraylist. Daarnaast is een ongewenst neveneffect dat alle publieke methodes die via ArrayList beschikbaar zijn ook beschikbaar worden via Hypotheek.

+

In optie 2 vindt geen overerving plaats (behalve van Object) maar is de lijst leningdelen een property van hypotheek. Dit wordt compositie genoemd en definieert een has-a-relatie. Dat is in dit geval passend.

+

Per situatie moet overwogen worden of er gebruik wordt gemaakt van overerving of compositie.

+

Dit is een eerste opzet van klasse Hypotheek:

+
public class Hypotheek {
+
+    private ArrayList<Leningdeel> leningdelen;
+
+    /**
+     * Voegt leningdeel toe aan hypotheek
+     * @param leningdeel Toe te voegen leningdeel
+     */
+    public void voegLeningdeelToe(Leningdeel leningdeel) {
+        // Nog maken...
+    }
+
+    /**
+     * Berekent het totaalbedrag van alle leningdelen
+     * @return totaalbedrag van alle leningdelen
+     */
+    public double getBedrag() {
+        double bedrag = 0;
+        for(Leningdeel leningdeel : leningdelen) {
+            bedrag = bedrag + leningdeel.getBedrag();
+        }
+        return bedrag;
+    }
+
+    /**
+     * Berekent het totaal resterende bedrag van alle leningdelen
+     * @return totaal resterende bedrag van alle leningdelen
+     */
+    public double getResterendBedrag() {
+        return -1; // Nog maken...
+    }
+
+    /**
+     * Berekent het totaal af te lossen bedrag deze maand van alle leningdelen
+     * @return totaal af te lossen bedrag deze maand van alle leningdelen
+     */
+    public double berekenMaandlastAflossing() {
+        return -1; // Nog maken...
+    }
+
+    /**
+     * Berekent de totaal te betalen rente deze maand van alle leningdelen
+     * @return totaal te betalen rente deze maand van alle leningdelen
+     */
+    public double berekenMaandlastRente() {
+        return -1; // Nog maken...
+    }
+
+    /**
+     * De totale maandlast bestaat uit maandelijkse rente en vaste maandelijkse aflossing
+     * @return totale maandlast
+     */
+    public double berekenMaandlast() {
+        return berekenMaandlastRente() + berekenMaandlastAflossing();
+    }
+
+    /**
+     * Naar volgende maand gaan (dit doen voor alle leningdelen)
+     */
+    public void volgendeMaand() {
+        // Nog maken
+    }
+
+    /**
+     * Naar volgend jaar gaan
+     * door middel van 12 keer naar volgende maand gaan
+     */
+    public void volgendJaar() {
+        for(int t=0; t < 12; t++) {
+            volgendeMaand();
+        }
+    }
+
+    /**
+     * Retourneert true als tenminste één leningdeel nog een resterende looptijd heeft (actief is).
+     * @return true als hypotheek nog actief is
+     */
+    public boolean isActief() {
+        // Let op! Hypotheken met leningdelen met verschillende looptijden zijn mogelijk.
+        // Daaruit volgt dat er lopende hypotheken bestaan met leningdelen die niet meer actief zijn.
+        // Retourneer true als tenminste één leningdeel actief is
+        return false; // Nog maken
+    }
+
+}
+
+
+

Maak de klasse Hypotheek af.

+

Test deze met de onderstaande code in main, waar op de plaats van … nog wat ingevuld moet worden..

+
/*
+Hypotheek van EUR 291.000, looptijd 30 jaar, bestaande uit twee leningdelen
+- Lineair EUR 224.000 5,2% rente
+- Aflossingsvrij EUR 67.000 5.5% rente
+*/
+Leningdeel leningdeel1 = ...
+Leningdeel leningdeel2 = ...
+System.out.println(leningdeel1.getResterendBedrag());
+System.out.println(leningdeel2.getResterendBedrag());
+
+Hypotheek hypotheek = new Hypotheek();
+System.out.println(hypotheek.getResterendBedrag());
+
+hypotheek.voegLeningdeelToe(leningdeel1);
+hypotheek.voegLeningdeelToe(leningdeel2);
+
+int jaar=1;
+while(hypotheek.isActief()) {
+    System.out.printf("%de jaar: € %.2f [maandbedrag rente + aflossing : € %.2f + € %.2f = € %.2f]\n",
+            jaar, hypotheek.getResterendBedrag(),
+            hypotheek.berekenMaandlastRente(), hypotheek.berekenMaandlastAflossing(),
+            hypotheek.berekenMaandlast()
+    );
+    hypotheek.volgendJaar();
+    jaar++;
+}
+System.out.printf("Einde looptijd: %.2f\n", hypotheek.getResterendBedrag());
+
+
+

Het verwachte resultaat is:

+
1e jaar: € 291000,00 [maandbedrag rente + aflossing : € 1277,75 + € 622,22 = € 1899,97]
+2e jaar: € 283533,33 [maandbedrag rente + aflossing : € 1245,39 + € 622,22 = € 1867,62]
+...
+29e jaar: € 81933,33 [maandbedrag rente + aflossing : € 371,79 + € 622,22 = € 994,02]
+30e jaar: € 74466,67 [maandbedrag rente + aflossing : € 339,44 + € 622,22 = € 961,66]
+Einde looptijd: € 67000,00
+
+
+
+
+ + + + +
+ +
+ +
+
+ + +
+ + +
+
+ + + + + + + \ No newline at end of file diff --git a/exercises/nested_circles/index.html b/exercises/nested_circles/index.html index 42d23188..1fe5b830 100644 --- a/exercises/nested_circles/index.html +++ b/exercises/nested_circles/index.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/exercises/objecten_maken_met_point.html b/exercises/objecten_maken_met_point.html index c32b6ad9..134ac327 100644 --- a/exercises/objecten_maken_met_point.html +++ b/exercises/objecten_maken_met_point.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/exercises/string_loops.html b/exercises/string_loops.html index 4a922f61..13eec46c 100644 --- a/exercises/string_loops.html +++ b/exercises/string_loops.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/genindex.html b/genindex.html index 2cbb4999..185e622e 100644 --- a/genindex.html +++ b/genindex.html @@ -408,6 +408,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/objects.inv b/objects.inv index 45c6884e..a6e62569 100644 Binary files a/objects.inv and b/objects.inv differ diff --git a/problems/calculator/index.html b/problems/calculator/index.html index 03a6b341..9c0e45d1 100644 --- a/problems/calculator/index.html +++ b/problems/calculator/index.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/problems/class_design/index.html b/problems/class_design/index.html index 028395c1..8e6d8c26 100644 --- a/problems/class_design/index.html +++ b/problems/class_design/index.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/problems/hello_world/index.html b/problems/hello_world/index.html index d15f9156..7900b1b4 100644 --- a/problems/hello_world/index.html +++ b/problems/hello_world/index.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/problems/opgave-LocalDate.html b/problems/opgave-LocalDate.html index ed2b4f04..5234aa1e 100644 --- a/problems/opgave-LocalDate.html +++ b/problems/opgave-LocalDate.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/problems/opgave-OptionalInt.html b/problems/opgave-OptionalInt.html index d0c798e4..4eacc7e2 100644 --- a/problems/opgave-OptionalInt.html +++ b/problems/opgave-OptionalInt.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/problems/recursive_graphics/index.html b/problems/recursive_graphics/index.html index 52fe8f37..10d344a5 100644 --- a/problems/recursive_graphics/index.html +++ b/problems/recursive_graphics/index.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ @@ -843,7 +899,6 @@

Doel#

Een programma ontwerpen en ontwikkelen dat een recursief patroon van eigen ontwerp in beeld brengt (optioneel).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + + + + + + + + + +
+ +
+ +
+ + + + +
+
+ + + + +
+
+ + + + + +
+
+ + +
+
+ Contents +
+ +
+
+
+
+ +
+

Verhuur

+ +
+
+ +
+

Contents

+
+ +
+
+
+
+ +
+ +
+

Verhuur#

+

Dutch bike symbol

+

In opdracht van een verhuurder van auto’s en fietsen wordt een systeem ontwikkeld om bij te houden welke auto’s en fietsen de verhuurder in zijn bezit heeft.

+
+

Deel 1#

+

Gegevens van fietsen en auto’s worden opgeslagen in de klassen Fiets en Auto. Deze klassen zijn gegeven in project rentals_1.zip.

+

a. Zowel auto als fiets hebben velden merk en type. +Deze velden vormen samen, met een spatie er tussen, de beschrijving. Bijvoorbeeld een auto van het merk Toyota en type Yaris heeft als omschrijving “Toyota Yaris”.

+

Schrijf een public methode getBeschrijving(), die een string teruggeeft met merk en type, gescheiden door een spatie.

+

b. Zowel auto als fiets hebben de public methode printInfo(). Deze methode print één regel met informatie over de auto of fiets. Er wordt niets teruggegeven. +Voor fietsen:

+
<merk> <type>, <frame>, <aantal versnellingen> versnellingen
+
+
+

frame: damesfiets of herenfiets.

+

Voorbeeld: De Batavus Winner N3 herenfiets met 3 versnellingen geeft als info-regel

+
Batavus Winner N3, herenfiets, 3 versnellingen.
+
+
+

Voor auto’s:

+
<merk> <type> <kenteken>, <brandstoftype>, <aantal inzittenden> personen
+
+
+

brandstoftype: benzine, diesel, elektrisch

+

Voorbeeld: De Toyota Aygo benzineauto met kenteken 37LHG3, met 4 zitplaatsen, geeft als info-regel:

+
Toyota Aygo 37LHG3, benzine, 4 personen
+
+
+

Schrijf de methode printInfo().

+

c. Auto’s en fietsen moeten in één lijst (bijvoorbeeld ArrayList) gezet kunnen worden. Dit kan gerealiseerd worden door een klasse HuurVoertuig te maken, die parentclass wordt van de klassen Fiets en Auto.

+

Maak de klasse HuurVoertuig. Maak deze parentclass van Fiets en Auto.

+

Zet in klasse HuurVoertuig de voor fietsen en auto’s gemeenschappelijke velden merk, type en huurprijs. Verplaats de bijbehorende getters ook naar klasse HuurVoertuig.

+

Zorg ervoor dat vanuit de constructor van Fiets en Auto de velden merk, type en huurprijs een waarde krijgen. Ook in klasse HuurVoertuig zijn deze velden private. Setters gebruiken is niet wenselijk. Maak daarom gebruik van een constructor in klasse HuurVoertuig.

+
+
+

Deel 2#

+

Het project rentals_2.zip bevat de klasse Verhuur. Verder zijn de klassen Auto, Fiets en HuurVoertuig nodig. Deze moet je zelf toevoegen van jouw uitwerking van deel 1.

+

De klasse Verhuur is het begin van administratie van verhuurvoertuigen. Deze klasse is deels gerealiseerd.

+

a. In week 1 is de public methode printInfo() gerealiseerd. Deze methode print één regel met informatie over de auto of fiets. Er wordt niets teruggegeven. +Het is echter niet praktisch om System.out.println() te gebruiken in klassen die niet bedoeld zijn voor gebruikersinteractie. +Zorg ervoor dat het printen van objecten van Auto of Fiets exact hetzelfde resultaat oplevert als de aanroep van printInfo(). Dit doe je door de methode toString() te overriden. De methode printInfo() kan vervolgens verwijderd worden.

+

Gewenste resultaat: +Voor fietsen:

+
<merk> <type>, <frame>, <aantal versnellingen> versnellingen
+
+
+

frame: damesfiets of herenfiets.

+

De Batavus Winner N3 herenfiets met 3 versnellingen geeft als info-regel

+
Batavus Winner N3, herenfiets, 3 versnellingen
+
+
+

Voor auto’s:

+
<merk> <type> <kenteken>, <brandstoftype>, <aantal inzittenden> personen
+
+
+

brandstoftype: benzine, diesel, elektrisch

+

De Toyota Aygo benzineauto met kenteken 37LHG3, met 4 zitplaatsen, geeft als info-regel

+
Toyota Aygo 37LHG3, benzine, 4 personen
+
+
+

b. De methoden getAutos() van klasse Verhuur geeft van de voertuigen een lijst terug met alleen de auto’s. Schrijf de implementatie van deze methode.

+

Doe hetzelfde voor getFietsen(), die een lijst teruggeeft met alleen de fietsen.

+

c. De methode voegHuurvoertuigToe() in klasse Verhuur controleert of het toe te voegen voertuig al voorkomt in de administratie. Dit gebeurt met hashCode() en equals().

+

Deze controle functioneert niet als hashCode() en equals() niet in Auto en Fiets geïmplementeerd zijn. Override deze twee methodes in de klassen Auto en Fiets.

+

Voor de methode hashCode() kun je volstaan met het teruggeven van de waarde 1 (return 1). Dit zorgt ervoor dat equals elke keer wordt aangeroepen ter controle. Dit is niet optimaal maar voor deze opgave voldoende. Eventueel kun je met opgave e) als extra uitdaging de methode hashCode() optimaliseren.

+

De methode equals() moet alle velden controleren. Hoewel in werkelijkheid verschillende auto’s niet hetzelfde kenteken kunnen hebben, moet dit in deze opgave genegeerd worden. Controleer simpelweg of alle velden overeenkomen. Vergeet de algemene velden in klasse HuurVoertuig niet. Probeer op slimme manier gebruik te maken van overerving.

+

Algemene stappen in implementatie van equals:

+
    +
  1. Check of argument gelijk is aan this (met ==). Zo ja, return true (er is dan sprake van hetzelfde object)

  2. +
  3. Check of argument instantie is van klasse. Zo nee, return false.

  4. +
  5. Cast argument naar klasse

  6. +
  7. Vergelijk alle relevante velden. Return true als ze allemaal gelijk zijn.

  8. +
+

Je hoeft geen rekening te houden met null waarden.

+

d. [extra uitdaging]

+

De methode meestVoorkomendeAutomerk() in klasse Verhuur geeft het automerk terug die het meest voorkomt in de administratie. Alleen het merk, niet het type. Implementeer deze methode.

+

e. [extra uitdaging]

+

De methode hashCode() voor alle objecten dezelfde waarde terug laten geven, is niet optimaal. Dit is met kleine aantallen objecten niet merkbaar, maar bij grote aantallen wel. Daarom bevat Main een test die 20 miljoen auto’s en 20 miljoen fietsen genereert en toevoegt aan een HashSet. HashSet voegt klassen die identiek zijn niet toe, en maakt daarbij gebruik van hashCode() en equals().

+

Met een niet-optimale methode hashCode() zal deze test ongeveer 10 seconden duren. Als een erg snelle computer wordt gebruikt, kan het zijn dat de test veel korter duurt. Verhoog in dat geval het aantal gegenereerde objecten in de loop naar bijvoorbeeld 40 miljoen.

+

Bestudeer onderstaand artikel en optimaliseer de methode hashCode(). +Als hashCode() geoptimaliseerd is, zal de tijdsduur van de test aanzienlijk afnemen. Baseer de hashcode op de integer-velden van Fiets en Auto. Probeer een zo groot mogelijke verbetering in prestatie te realiseren.

+

Artikel Guide to hashCode() in Java.

+
+
+ + + + +
+ +
+ +
+
+ + +
+ + +
+
+ + + + + + + \ No newline at end of file diff --git a/projects/bouncing_balls.zip b/projects/bouncing_balls.zip index 28ea9fdb..69ee36c1 100644 Binary files a/projects/bouncing_balls.zip and b/projects/bouncing_balls.zip differ diff --git a/projects/cats.zip b/projects/cats.zip index 37466934..e6e232f2 100644 Binary files a/projects/cats.zip and b/projects/cats.zip differ diff --git a/projects/clock.zip b/projects/clock.zip index 61e4f09d..d57be427 100644 Binary files a/projects/clock.zip and b/projects/clock.zip differ diff --git a/projects/cone.zip b/projects/cone.zip index a25076fb..23ab92e1 100644 Binary files a/projects/cone.zip and b/projects/cone.zip differ diff --git a/projects/gameoflife.zip b/projects/gameoflife.zip index ec02f702..9d2dbb0e 100644 Binary files a/projects/gameoflife.zip and b/projects/gameoflife.zip differ diff --git a/projects/hello.zip b/projects/hello.zip index ec172ec2..655b868f 100644 Binary files a/projects/hello.zip and b/projects/hello.zip differ diff --git a/projects/library.zip b/projects/library.zip index 74273623..d519b62b 100644 Binary files a/projects/library.zip and b/projects/library.zip differ diff --git a/projects/loops.zip b/projects/loops.zip index bbd58145..609bdc32 100644 Binary files a/projects/loops.zip and b/projects/loops.zip differ diff --git a/projects/nbody.zip b/projects/nbody.zip index 4acdd29b..4d73a143 100644 Binary files a/projects/nbody.zip and b/projects/nbody.zip differ diff --git a/projects/nested_circles.zip b/projects/nested_circles.zip index 6f85f15a..8b69ba50 100644 Binary files a/projects/nested_circles.zip and b/projects/nested_circles.zip differ diff --git a/projects/oop-projects.zip b/projects/oop-projects.zip index 6a62f151..3cea7d53 100644 Binary files a/projects/oop-projects.zip and b/projects/oop-projects.zip differ diff --git a/projects/oop2proeftoetsbasis.zip b/projects/oop2proeftoetsbasis.zip index 7f716298..68988e62 100644 Binary files a/projects/oop2proeftoetsbasis.zip and b/projects/oop2proeftoetsbasis.zip differ diff --git a/projects/profiler.zip b/projects/profiler.zip index 00bf1ee5..8c1e7368 100644 Binary files a/projects/profiler.zip and b/projects/profiler.zip differ diff --git a/projects/rentals_1.zip b/projects/rentals_1.zip index 336ffac2..96661833 100644 Binary files a/projects/rentals_1.zip and b/projects/rentals_1.zip differ diff --git a/projects/rentals_2.zip b/projects/rentals_2.zip index f112bfd2..6532e760 100644 Binary files a/projects/rentals_2.zip and b/projects/rentals_2.zip differ diff --git a/projects/sierpinsky.zip b/projects/sierpinsky.zip index c7199b8a..a3cbc27d 100644 Binary files a/projects/sierpinsky.zip and b/projects/sierpinsky.zip differ diff --git a/projects/simulation.zip b/projects/simulation.zip index 82a2a7a4..8447cdbb 100644 Binary files a/projects/simulation.zip and b/projects/simulation.zip differ diff --git a/reports/6a_static_klassen.log b/reports/6a_static_klassen.log new file mode 100644 index 00000000..7c81330d --- /dev/null +++ b/reports/6a_static_klassen.log @@ -0,0 +1,32 @@ +Traceback (most recent call last): + File "/usr/local/lib/python3.10/dist-packages/jupyter_cache/executors/utils.py", line 51, in single_nb_execution + executenb( + File "/usr/local/lib/python3.10/dist-packages/nbclient/client.py", line 1204, in execute + return NotebookClient(nb=nb, resources=resources, km=km, **kwargs).execute() + File "/usr/local/lib/python3.10/dist-packages/nbclient/util.py", line 84, in wrapped + return just_run(coro(*args, **kwargs)) + File "/usr/local/lib/python3.10/dist-packages/nbclient/util.py", line 62, in just_run + return loop.run_until_complete(coro) + File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete + return future.result() + File "/usr/local/lib/python3.10/dist-packages/nbclient/client.py", line 663, in async_execute + await self.async_execute_cell( + File "/usr/local/lib/python3.10/dist-packages/nbclient/client.py", line 965, in async_execute_cell + await self._check_raise_for_error(cell, cell_index, exec_reply) + File "/usr/local/lib/python3.10/dist-packages/nbclient/client.py", line 862, in _check_raise_for_error + raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content) +nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell: +------------------ +Square.MAX_WIDTH = 101; +------------------ + +io.github.spencerpark.ijava.execution.CodeEvaluator.evalSingle(CodeEvaluator.java:127) +io.github.spencerpark.ijava.execution.CodeEvaluator.eval(CodeEvaluator.java:147) +io.github.spencerpark.ijava.JavaKernel.evalRaw(JavaKernel.java:276) +io.github.spencerpark.ijava.JavaKernel.eval(JavaKernel.java:281) +io.github.spencerpark.jupyter.kernel.BaseKernel.handleExecuteRequest(BaseKernel.java:334) +io.github.spencerpark.jupyter.channels.ShellChannel.lambda$bind$0(ShellChannel.java:64) +io.github.spencerpark.jupyter.channels.Loop.lambda$new$0(Loop.java:21) +io.github.spencerpark.jupyter.channels.Loop.run(Loop.java:78) +CompilationException: + diff --git a/search.html b/search.html index 5b6d87b9..3221af1b 100644 --- a/search.html +++ b/search.html @@ -414,6 +414,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/searchindex.js b/searchindex.js index 23bf2e2a..1ea6004e 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["about/literatuur","about/syllabus","course/ex_1","course/ex_2","course/ex_3","course/ex_4","course/week_1","course/week_2","course/week_3","course/week_4","exercises/12_12_if_statements","exercises/8-9_primitive_data","exercises/9a-9_variables_assignment","exercises/codingbat_recursie","exercises/codingbat_strings","exercises/cone/index","exercises/debuggen_en_methoden","exercises/grote_getallen","exercises/nested_circles/index","exercises/objecten_maken_met_point","exercises/string_loops","problems/calculator/index","problems/class_design/index","problems/hello_world/index","problems/opgave-LocalDate","problems/opgave-OptionalInt","problems/recursive_graphics/index","support/install","topics/1a_inleiding","topics/1b_variabelen_en_operatoren","topics/1c_invoer_en_uitvoer","topics/2a1_methoden","topics/2a2_methoden_en_testen","topics/2b_condities_en_logica","topics/3a_lussen_en_strings","topics/3c_string_mystery","topics/4a_recursie","topics/4b_immutable_objecten","topics/5a_mutable_klassen_en_objecten","topics/5b_klassen_ontwerpen","topics/9b_threads","topics/jars-importeren"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinxcontrib.bibtex":9,sphinx:56},filenames:["about/literatuur.md","about/syllabus.md","course/ex_1.md","course/ex_2.md","course/ex_3.md","course/ex_4.md","course/week_1.md","course/week_2.md","course/week_3.md","course/week_4.md","exercises/12_12_if_statements.md","exercises/8-9_primitive_data.md","exercises/9a-9_variables_assignment.md","exercises/codingbat_recursie.md","exercises/codingbat_strings.md","exercises/cone/index.md","exercises/debuggen_en_methoden.md","exercises/grote_getallen.md","exercises/nested_circles/index.md","exercises/objecten_maken_met_point.md","exercises/string_loops.md","problems/calculator/index.md","problems/class_design/index.md","problems/hello_world/index.md","problems/opgave-LocalDate.md","problems/opgave-OptionalInt.md","problems/recursive_graphics/index.md","support/install.md","topics/1a_inleiding.ipynb","topics/1b_variabelen_en_operatoren.ipynb","topics/1c_invoer_en_uitvoer.ipynb","topics/2a1_methoden.ipynb","topics/2a2_methoden_en_testen.ipynb","topics/2b_condities_en_logica.ipynb","topics/3a_lussen_en_strings.ipynb","topics/3c_string_mystery.ipynb","topics/4a_recursie.ipynb","topics/4b_immutable_objecten.ipynb","topics/5a_mutable_klassen_en_objecten.ipynb","topics/5b_klassen_ontwerpen.ipynb","topics/9b_threads.ipynb","topics/jars-importeren.md"],objects:{},objnames:{},objtypes:{},terms:{"0":[11,12,15,16,17,18,19,21,22,23,25,26,29,31,32,33,34,36,37,38,39,41],"00":[10,34,39],"001":39,"01":[10,34],"02d":[34,39],"036":39,"04":39,"05":41,"0625":26,"07":10,"1":[3,4,5,10,11,12,13,14,15,16,17,18,19,21,22,24,25,26,29,31,33,34,36,37,39,40],"10":[8,10,11,12,15,16,18,19,22,23,24,25,29,31,32,33,34,37,38,39,40],"100":[10,25,38],"1000":[25,36],"1000000000000000000000000000000000000002980":37,"1000000000000000000000000000000000000059600000000000000000000000000000000001687276000000000000000000000000000000030168494880000000000000000000000000000382083987655200000000000000000000000003643552906279987200000000000000000000027144469151785904640000000000000000000161781036144643991654400000000000000000783424667530438529586432000000000000003112807345654275757556756480000000000010203782479054715933271047741440000000027642974352348230437407020244992000000061782047677498295027604690247557120000113298770510119950266007370423212441600168815168060078725896350981930586537984201227680327613841268450370461259153277115393277305090389681244407492047586489270595756792745732058849019841482778291273451892540397046922561679854603113217987206357870566652613603558522812344988375773481082714431239426930219899039403267535772057600000000000000000000":37,"106":10,"108":10,"11":[9,27,29,31,32,33,37,38],"12":[10,18,22,25,29,39],"120":36,"12000":25,"123":37,"124":37,"125":[26,32],"1253762":39,"127":[18,29,39],"128":[29,39],"13":[18,26,37],"130":23,"13e":26,"14":[11,31],"143":23,"147":39,"149":37,"1492072508":0,"1492078005":0,"14e23":11,"15":[10,17,19,33],"151":23,"1594":33,"16":[11,29,31,33,34],"17":23,"1779271158425":23,"18":24,"180":[29,30],"1800":10,"190":10,"1915":26,"1962":10,"1965":24,"1988":24,"1999":[18,23,26],"1f":39,"2":[2,4,5,6,11,12,13,14,15,16,17,18,19,21,22,23,26,27,29,31,33,34,36,37,38,39,40,41],"20":[12,16,25,29,37,40],"200":[23,38,40],"2000":10,"2013":0,"2014":22,"2018":0,"2019":0,"2020":0,"2021":[18,23,26],"2023":24,"20e":10,"21":[21,32],"21819":25,"21e":10,"22":39,"2212":33,"223":39,"2258":33,"23":[11,24,34,39],"238":18,"24":[10,24,34,39],"25":[19,24,26,38],"2500":25,"255":23,"26":24,"27":10,"288":22,"2_147_483_647":29,"2_147_483_648":29,"2e":0,"2nd":0,"3":[2,3,5,6,10,11,12,14,15,16,18,19,21,22,23,26,29,31,33,34,36,38,39,40],"30":[10,17,25,38,39],"300":38,"3185":23,"32":[11,22,29,31,39],"320":10,"324555320336759":31,"32_767":29,"32_768":29,"33":[23,34],"340":40,"34560":22,"35":[23,30],"35000":11,"356":11,"37":[10,31],"372":39,"38":[10,33],"3n":34,"3x":12,"4":[3,7,11,12,15,16,18,21,22,26,29,31,32,33,34,36,38,39],"40":[12,23,29,31],"42":[21,32,35],"423076923076923":23,"43":35,"4392156862745098":23,"45":[26,33],"47":33,"48":[10,23],"483":39,"49":23,"4901960784313726":23,"5":[5,7,10,11,15,16,18,19,21,22,24,25,26,29,31,32,33,34,36,37,38,41],"50":[25,38],"50000000000000000000000000000000000000000":37,"50000000000000000000000000000000000000149":37,"535":39,"53981633974483":32,"54":[16,29],"56":33,"58":34,"59":[32,34,39],"59830":31,"6":[7,10,20,21,22,26,29,31,34,38],"60":[23,31,34,38,39],"62":10,"63":[11,29],"64":[11,29],"647":39,"648":39,"65":[23,39],"65000":37,"655aa972":36,"66":34,"7":[12,15,18,19,21,22,33,36],"700":40,"74":23,"75":[10,23,25],"767":39,"768":39,"775":39,"78":[16,31,32],"780":22,"79":31,"8":[7,10,13,17,22,29,31,34,37,38,39,41],"80":[10,25],"807":39,"808":39,"854":39,"87":23,"8x":12,"9":[8,17,21,22,24,36,37,38,39],"90":26,"937":33,"93888":22,"95":29,"9747":31,"978":0,"9812":20,"9823":20,"99":10,"9999999999999999":29,"E\u00e9n":[16,21,30,31],"\u00e9\u00e9n":[11,12,15,18,19,21,26,27,29,31,33,35,38,40],"\u00e9n":12,"\u00f3\u00f3k":38,"\u03c0":15,"boolean":[19,20,22,23,29,37,39],"break":33,"catch":40,"char":[11,20,29,36,37,39],"continue":27,"debugger":32,"default":33,"do":40,"final":[18,39],"float":[22,29,37],"for":[0,6,7,8,9,15,17,34,36,37,38],"if":[15,17,18,21,22,23,24,34,36,37,39],"import":[15,18,19,27,30,36,38,40],"int":[11,17,18,19,21,22,23,25,26,29,30,31,33,34,35,36,37,38,39,40],"long":[12,22,24,29,37,39,40],"n\u00e1":34,"new":[15,18,19,22,23,24,26,27,30,33,35,37,38,39,40],"null":[25,26,33,38],"public":[1,11,12,15,16,17,18,19,21,22,23,24,25,26,27,28,31,32,33,34,36,37,38,39,40,41],"return":[15,16,17,18,19,21,22,25,26,30,32,33,36,37,39],"short":[11,29,37,39],"sierpi\u0144ski":26,"static":[1,11,12,15,16,17,18,19,21,22,23,24,25,26,27,28,31,32,33,34,36,37,38,41],"switch":21,"this":[32,40],"true":[19,22,23,29,33,34,35,37],"try":40,"void":[1,11,12,15,16,18,21,23,25,26,27,28,31,32,34,36,37,38,39,40,41],"wac\u0142aw":26,"with":[15,18,26,27],Aan:[34,37],Al:10,Alles:27,Als:[0,10,11,12,15,16,19,21,22,23,24,25,27,29,31,33,34,36,37,38,39,41],Ben:23,Bij:[0,10,19,26,28,29,33,35],Dan:32,Dat:[22,28,33,37],De:[4,10,11,12,16,17,18,19,20,23,24,26,27,28,29,30,31,35,38,39],Die:30,Dit:[0,1,11,12,15,18,19,22,23,26,27,29,31,32,33,34,35,36,37,38,40],Een:[0,10,11,15,17,18,19,20,21,22,23,24,25,27,29,30,31,32,33,36,37,38,39],En:[30,32,35,36,39],Er:[10,19,22,23,25,28,29,30,31,34,37,38],Heb:23,Het:[10,11,13,14,15,18,19,20,21,23,24,25,26,27,28,29,30,31,32,34,35,36,38,40],Hier:[10,15,18,20,23,26,30,34],Hoe:[16,17,21,23,29,30,34,39],Ik:[23,32],In:[0,10,11,15,16,18,19,20,21,22,26,27,28,29,30,31,32,33,35,36,37,38,39,40],Is:[17,22,23,25,32,34,39],Je:[0,1,11,12,15,16,17,18,19,21,22,23,26,27,29,31,32,34,35,36,39],Kan:11,Men:20,Met:[11,15,19,25,26,30,32,33,36,37,38],Mijn:23,Moet:33,NIET:33,Niet:[19,40],Nog:10,Nu:[27,34],Of:[28,31,33,34,37],Om:[0,20,23,24,25,26,27,28,30,31,35,38],Omdat:[33,37,40],Onder:[19,24,25],Ons:29,Ook:[15,16,20,21,28,29,33,37,38],Op:[0,11,17,18,24,28,29,37,39,40],Over:[24,34,35],Tot:[34,35,36],Uit:[15,21],Uw:[10,29],Van:[29,31],Wat:[11,15,19,21,23,24,25,29,30,32,33,38,39,40],Ze:[19,21,35],Zijn:12,Zo:[16,19,22,24,28,31,33],Zonder:33,Zou:[34,35],a:[0,6,11,15,16,18,21,22,26,29,31,32,33,34,36],aa:11,aanbied:18,aanbreng:22,aanbrengt:27,aanduid:[10,29],aangeeft:[20,24,29],aangegev:[15,24,27,32,33],aangemaakt:[15,34,35],aangepast:[17,22,38],aangeroep:[15,19,26,29,32,36,38,39,40],aangev:15,aangezien:[27,34],aanhalingsteken:[11,34],aankoopbedrag:10,aankop:10,aanlop:[17,18],aanmaakt:23,aanmak:[29,32,35,39],aannam:10,aannem:[23,26],aanpak:[21,26,33],aanpass:[26,28,40],aanroep:[16,18,19,21,25,26,30,31,32,36,37,38],aanroept:[16,18,26,34],aantal:[10,18,21,22,25,26,29,30,31,32,33,39,40],aantal_minut:31,aantaljar:33,aantall:33,aanvull:[15,21,29,32],aanwez:[19,25,28,39,40],aard:23,aardglob:23,aardoppervlak:23,abecedarisch:20,abelmos:20,abl:15,about:[15,26],abs:39,absolut:15,absorbeert:23,accent:20,accept:20,accepteert:[16,17,18,20,23,26,32,39],accepter:[23,26,27,32],acces:[18,39],accessor:[15,39],accijn:20,accolad:29,accolades:[28,33],account:[13,14],acherligg:39,achter:[19,31,40],achteraf:15,achtergrond:[18,34],achterhal:37,actually:15,add:[21,22,34,37,39],adres:34,adresser:28,adviser:32,af:[19,22,23,24,32,33],afdruk:23,afdrukt:[10,23,26],afgedrukt:[19,25,26],afgeleid:23,afgeprijsd:10,afgerond:[16,31],afgeschermd:39,afgeteld:36,afgetrok:23,afhandel:[21,25],afhang:26,afhank:[10,18,23,33,36],afkop:20,aflegt:23,afleid:15,aflop:[20,22,23],afmet:15,afneemt:34,afrad:32,afrond:12,afsluit:[27,40],afstand:[19,21,23,31,38],aftell:36,aftrek:[21,22,29,39],afvrag:29,afzonder:[15,30,33],again:35,age:30,agnost:20,aha:34,aim:15,alan:37,alejandro:23,alen:22,alfabetisch:20,algebraisch:23,algemen:[0,16,27,29,32,34,36,39],alias:38,alic:23,aliiien:36,all:[0,10,15,18,19,20,21,23,26,28,29,30,33,34,38,39,40],allclasses:38,allebei:33,allemal:[20,23,33,34],allen:[10,15,18,19,21,22,25,26,28,29,30,31,32,33,35,36,37,39,40],allereerst:[19,36],allerlaatst:23,alpha:26,already:32,alsmed:1,alsof:[29,40],alt:27,alternatief:30,alternatiev:[0,18],althan:21,alvoren:27,amount:12,an:[18,26,33],ananab:34,and:[0,6,7,15,18,21,22,23,26],ander:[10,11,12,13,14,15,16,18,19,21,22,23,26,28,30,32,33,34,37,38,39,41],andersom:37,annotatie:15,annotaties:15,anoniem:27,antwoord:[17,21,23,24,29,34],any:26,anzehogeschol:36,apart:[15,23,35],api:[15,37,38],apparat:28,append:38,applicatie:[37,41],application:[16,32],approx:22,arccos:23,architectur:28,archiv:[18,41],are:15,area:[15,16,32],arg:[1,11,12,16,18,21,23,26,27,28,32,34,37,41],argument:[18,19,21,23,25,26,27,38],arithmeticexception:[22,29],arora:22,around:18,array11:13,array:[13,14,21,26,32,34,37,39],arrayindexoutofboundsexception:23,artistiek:26,as:[15,26,31],ascii:34,ascii_:34,ass:26,assert:15,assertequal:15,assertion:15,assign:12,at:[6,18,26,29,33,37],auto:[10,27],autobox:37,automatisch:[15,19,27,39,40,41],averagefinder:16,awaittermination:40,awt:[18,19,38],b1:37,b2:37,b3:37,b4:37,b:[0,16,22,23,27,29,33,34],backslash:30,baeldung:29,balkj:41,ban:34,banana:34,bas:[15,18,23,33,36,37],basic:[13,14],basis:[15,18,21,22,28,29,31,36,40],basisoperaties:30,be:[11,15,29],beantwoord:21,bedenk:[18,21,22,24,32,34,36],bedoel:[19,33,39],bedoeld:[26,27,30],bedrag:[10,25],bedrijv:41,beeindigd:34,beeld:[26,27],beetj:32,begeleid:0,begijn:20,begin:[19,26,33],beginn:[15,23,24,28,29],beginnersfout:[31,40],beginpunt:28,begint:[15,18,19,20,21,24,27,29],beginwaard:[21,34,36],begonn:34,begrijp:[0,12,23,35],begrijpt:26,behalv:[16,23,25],behandel:[15,29],behandeld:[0,16,28],beher:[15,39],behor:28,behulp:[17,22,23,33],beid:[10,18,19,29,33,34,38],beinvloed:38,bekek:21,bekend:[10,15,16,23,29],bekijk:[28,32,36],beknopt:20,beknopter:16,bekort:20,belang:[12,22,31],belangrijk:[12,22,23,28,29,30,37,39],belangrijkst:[19,24,30],belop:20,bemost:20,benader:[19,22,29,31,37],benadert:22,bened:[26,27],bennot:20,bent:[0,15,23,26,27,36],benzin:10,benzinemeter:10,benzinestation:10,benzinetank:10,bepaald:[0,11,15,17,18,19,21,25,29,31,32,33,36,37,39,40],bepaalt:26,bepal:[10,15,18,34,38],beperk:[22,39],beperkt:[23,33,39],bereik:[22,29,32,33,34,36,38,39],bereikt:39,berek:[12,18,19,21,22,25,31],bereken:[12,16,17,21,22,26,31,38],berekenbreakev:25,berekent:[10,11,12,16,21,26,31],beriberi:20,bericht:15,berust:22,beschik:[19,27,28,31,37,38],beschref:26,beschrev:[15,23,36],beschrijft:15,beschrijv:[11,22,27,28,29],besliss:[10,28,33],bespar:10,bespreekt:13,besprok:[15,40],best:[26,30],bestaand:[33,37,38],bestan:[16,28,33,35],bestand:[15,18,22,23,26,27,28],bestandssystem:18,bestat:[29,31,38,40],bestell:10,bestookt:21,bestuder:[18,32],bestur:27,besturingssystem:[18,27,40],bestuurder:10,beteken:11,betekenis:[11,23,25,27,31,32,33],betekent:[12,18,23,26,28,32,33,34,37],beter:[12,16,27,29,30,31,33,38,39],betreff:40,betreft:[0,34,39],betrouw:38,betweenx:19,betweeny:19,betwen:[19,24],bevat:[1,10,11,15,16,18,19,22,25,26,27,29,30,31,32,33,37,40],bevest:[26,27],bevind:[18,26],bevindt:[19,22,28],bewaard:[13,14,29,35],bewerk:[11,12,16,17,21,37,38],bewijs:34,bewijz:34,bewust:37,bezoekt:[13,14],bibliothek:[5,15,18,23,27],bied:[16,22,31,37,38,40],biedt:[25,27,32,37,39],big:17,biggest:18,biginteger:[17,22,38,39],bijbehor:[21,27,36,37],bijft:32,bijgeleverd:26,bijknop:20,bijlop:20,bijnot:20,bijv:[27,35],bijvoorbeeld:[0,10,11,12,15,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,39,40],bijzonder:36,binn:[19,26,33,39,40],binnenkomt:30,binnenst:34,bit:[11,29],black:[18,23],blader:32,blastoff:[34,36],blauw:23,blauwdruk:39,blibliothek:15,blijft:[22,39],blijkbar:[11,35],blijv:[13,14,26,38],block:[27,33,40],blog:29,blok:[19,28,33],blue:[23,26,41],bob:[10,23],body:[26,32,34],boek:[0,13,15,16,17,20,23,26,32,35,40],boel:41,boem:26,bog:23,boilerplat:[23,27],bol:[23,29],bonbon:20,boodschap:23,bottom:26,bout:10,bouwsten:39,bouwt:39,bov:19,bovenin:19,bovenst:[26,28],bovenstaand:[11,19,22,27,28,29,30,33,38,39],box1:38,box2:38,box:38,bracket:27,brad:0,bradley:[10,11,12],brandon:0,breakpoint:32,breedtegrad:23,breid:[15,18,21],brek:[11,12],brengt:26,breuk:[22,29],bron:35,bug:16,building:0,buit:[19,22,38],buitenst:34,bundel:27,bureaublad:27,by:[26,29],byt:[29,37,39],bytecod:28,bytes:39,c1:40,c2:40,c3:40,c:[15,16,22,23,28,29,30,34],cach:35,calculat:15,calculatearea:[16,32],calculatedistanc:38,calculator:21,calling:26,camera:23,cannot:[11,15,29],canvas:18,capra:22,carol:23,cas:[18,33,36],cast:[29,34,38],categorie:16,ccw:26,cdot:[17,22,32],ceil:25,cent:10,center:[18,38],centimeter:31,centred:18,centrum:18,ch:[11,37],chained:33,chanc:10,changes:15,chantal:23,charassassination:11,charat:[29,34,36,37,39],check:[29,33],checked:40,checkt:29,chintz:20,chlor:20,choic:37,chooserandomnam:37,chris:0,chrismayfield:0,chronounit:24,cijfer:[10,23,29,30,31,37],circl:[16,18],circles:18,circular:15,cirkel:[31,32,41],cirkelbog:23,clas:[1,11,12,15,16,18,23,26,27,28,32,34,37,39,40],classes:9,classpath:[18,26],clientcod:22,cmyk:23,cod:[0,11,15,16,19,20,21,23,26,27,29,30,31,33,34,35,38,40,41],codefragment:0,codingbat:[3,5],coer:27,collatz:34,collectie:[21,31,39],collection:29,colleg:21,color:18,com:[0,37,38],combinatie:[18,19,29],combinaties:29,combineert:[29,36,39],combiner:[29,30],combo:37,command:[18,21,23,26,27,30,32],commandlin:[27,32],commando:27,commandoregel:[18,23,27],commentaarregel:28,commentar:[27,28],common:22,community:27,compatibl:33,compilatie:27,compilation:[11,32],compileerfout:[27,29],compileert:[11,28,41],compiler:[11,12,15,22,23,27,30,31,32],compilereert:11,compileropties:27,complet:40,complex:[26,33,39],complexer:[29,30],complexiteit:[39,40],compositie:21,computer:[0,6,23,27,34],computergeheug:11,computerhardwar:28,computersystem:10,concatenatie:29,concatenation:19,concentrer:15,concept:[0,16],concern:21,concret:[32,36],concurrent:40,conditie:[33,34,36],condities:[3,28],conditional:7,conditionel:[21,32,33],conetest:15,configur:18,configuratie:[18,32],consol:[19,27,28,30,40],constant:[11,18,31,35],constructie:[26,33],constructor:[15,22,24,40],contant:31,contextuel:18,continu:23,contitional:7,contrasteert:26,control:[21,39],controleert:[10,20,34],controler:[10,11,12,19,21,27,33,35,36,37],conventie:[15,18,39],conventies:19,convert:11,converted:[11,29],converteert:23,converter:[17,23,26,30],coordinat:[18,19,21,26,31,38],coordinatenbepal:18,copyofrang:36,copyright:[10,11,12,18,22,23,26],correct:[10,11,12,15,16,17,18,19,21,26,29,31,38],corresponder:23,cos:[16,23,26],cosinuss:23,countdown:36,counterclockwis:26,cour:27,couscous:20,cp:[18,26],creat:26,createstartpoint:38,creativiteit:26,cryptisch:39,cs:0,ctrl:27,cub:32,cubemethod:32,cursus:[0,12,15,23,26,27],cursuss:32,cx:26,cy:26,cyaan:23,cyan:[18,23],d222:31,d:[22,24,30,31,35],d_x:26,d_y:26,daadwerk:[10,29,40],daarbij:40,daardor:[28,29],daarin:[19,25,41],daarmee:[12,18,29,37],daarna:[26,28],daarnaast:40,daarom:[28,33,37,38],daarop:[24,34],daarvan:[19,22,24,29,30,31],daarvor:21,dag:[24,34],dar:[0,12,15,17,19,29,32,34,36,39,41],data:[5,6,8,15,34,36],datatyp:[2,23,25,29,30,31,39],datatypes:[19,29,30],datum:[10,24],dav:23,day:24,dd:24,death:10,debug:16,debugg:32,december:24,decimal:12,declar:[12,21],declaratie:[12,32],declaraties:[12,29,32],declarer:[12,32,37],decrementatie:34,decrementer:34,deeghouw:20,deelbar:22,defin:9,defined:32,definieer:23,definier:[15,26,39],definitie:[17,19,28,31,32],degres:26,deinor:20,dekkop:20,dekmos:20,del:[11,16,21,22,28,29,34,40],deler:22,deling:[21,22],delta:39,deluxeordered:23,demonstreert:23,denk:[18,21,22,26,29,34,36,39],denkbar:25,denkfout:29,denkt:28,denominator:22,depaul:0,dependecy:41,derd:[23,24,29],derdeletter:29,dergelijk:41,deshi:23,design:9,desktop:38,detail:[18,22,39],development:[15,27],dez:[0,11,12,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],dezeld:34,dezelfd:[12,15,22,23,25,26,29,34,35,39],diagram:[37,38],dialoogvenster:27,diameter:[16,31,32],dient:[19,28,38,40],diept:[18,26],digital:23,dikkop:20,dikor:20,dikwijl:28,dimensie:[15,26],dimensional:19,ding:[12,35],dinsdag:24,direct:[28,31,33,36,38,39],direction:26,directly:26,directory:[15,18,27],directorystructur:15,discounter:10,discountprices:10,discrepantie:23,discussie:0,displaynam:15,distanc:[19,23,31,38],div:[22,23],divid:[21,22],divisor:22,dm19:[0,23],doc:[37,38],documentatie:[15,16,18,24,25,28,31,32,38,41],dodo:20,doe:29,doel:[15,16,18],doet:[11,16,33,35,39],don:[15,32],doordat:[10,31,33,37],doorenvest:31,doorgegev:[26,32,38],doorgev:[32,38],doorloopt:34,doorlop:[20,32],doornem:36,doorvoer:22,dor:[0,10,15,16,17,18,19,20,21,22,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],doubl:[11,12,15,16,17,18,19,21,22,23,25,26,29,31,32,33,37,38,39],doublejeopardy:11,downey:0,download:[15,18,26,27,41],downloadt:23,draai:[27,28],draw:[18,26],drie:[12,16,19,23,26,29,31,33,34],driekwart:10,driv:15,druk:[11,22,23,24,29,34,39],drukt:23,dsquar:31,dubbel:[12,18,21,23,30,33],duid:10,duidelijk:[33,39,40],duidelijker:27,dumdum:20,duplicat:[31,33],duplicatetext:38,duplicatetext_sb:38,dur:27,duurt:24,dwing:22,dx:[26,31,38],dy:[26,31,38],e:[11,16,22,27,40],each:[18,26],echt:35,echter:[18,19,22,26,28,29,31,33,37],edition:[0,27],editor:19,edu:0,eeen:15,eenheid:25,eenmal:[29,30,34],eenor:20,eenvoud:[15,16,18,22,24,26,27,28,33,37,38,40],eenvoudiger:[33,37,38],eenvoudigst:39,eerder:[19,21,22,27,29,32,34,35,39],eerst:[0,11,12,15,16,18,21,22,23,24,26,27,29,30,32,33,34,35,36,38,40],eerstvolg:24,eeuw:[10,26],effect:[30,37,38],efficient:[22,38],efficienter:[17,38],efficientie:[33,35],effort:20,eig:[21,23,38],eigen:[30,35,36],eigenschap:[22,37],eigenschapp:[37,38],eind:[33,34],eindelijk:[27,35],eindelos:34,eindig:[28,36,37],eindigt:[20,34],eindresultat:31,eindwaard:21,element:[27,32,37],elisabeth:0,elk:[11,12,18,19,20,21,22,23,24,26,27,28,30,32,34,36,38],elkar:[0,21,23,29,31,33,35,39,40],els:[18,21,23,24,34,36,37],embellishment:18,empty:25,ene:36,enen:20,eng:32,engel:[19,24],enig:[29,32,34],enigszin:25,enkel:[11,18,20,22,26,32,33,34,39],entry:[23,31,32],environment:27,enzovoort:[10,26],equal:[19,22,34,35,37],equally:18,equilateral:26,equivalent:23,erg:[26,36],ergen:[23,32,41],eric:0,ernstig:19,erop:22,error:[11,12,30,32],eruit:28,ervan:23,ervor:[26,29],essentie:32,etc:[34,38],euro:25,europ:39,europes:24,evaluer:35,even:[17,32,34,41],eventueel:[23,25,27],eventuel:0,evenvel:10,exact:[19,26,31],exception:[11,23,40],exclusief:34,executor:40,executorservic:40,exp:[11,16],expectation:15,experimenter:[12,26],expliciet:[32,35],exponentialexplosion:11,expressie:[32,33,34],expressies:32,expsum:16,extend:15,extensibl:0,extensies:27,extension:27,extern:[15,18],extra:[10,26,33,35],f:30,faalt:15,factor:26,factorial:[17,36],faculteit:[22,36],fail:15,failed:32,failing:15,failur:15,fal:[15,19,22,23,29,33,34,35,37,39],famous:26,fancycircl:18,fancysquar:18,feest:24,feit:35,feitelijk:29,fib:37,fibonacci:[15,37],figur:[18,26],fijn:[27,29],fil:[23,27,41],fill:18,filled:26,filledcircl:18,filledpolygon:26,filledtriangl:26,find:15,findcenter:38,first:[0,16,32,36],firstpart:29,fit:26,flexibiliteit:38,floating:[11,16,30],floatingpoint:29,floppy:20,format:[23,24,27,30,39],formatteert:27,formatter:[27,39],formul:[12,15,21,23,26,32,33],formuler:19,formules:23,four:[26,33],fout:[10,11,15,16,19,22,23,30,32],foutbericht:27,foutmeld:[10,27,37],foutsoort:29,fpl:0,fr20:0,fraai:0,frac:[15,16,22,23,26],fractal:26,fractie:21,fracties:39,frames:36,framework:15,freeman:0,from:11,fruit:34,frustratie:35,fuctionaliteit:0,fulfill:15,functie:[10,12,26,28,31,32,36,38],functies:[12,19,23,26,27,28],functionaliteit:[18,21,27],fysiek:[36,40],g0:37,g1:37,g2:37,g:23,ga:[15,16,18,21,22,26,27,36],gam:19,gan:[15,17,18,27,32,36,39],gangbar:19,garantie:39,garbag:29,gas:10,gat:[11,15,16,18,21,22,24,25,26,27,29,30,34,35,37,39,40],gcd:22,geaccepteerd:15,geavanceerd:[19,21],gebaseerd:29,gebeur:[19,28],gebeurt:[11,18,22,26,30,34,38,40],gebeurteniss:27,gebond:[35,39],geboortejar:10,gebor:33,gebruik:[0,11,12,15,16,17,18,19,21,23,26,27,28,29,30,31,32,33,34,35,36,37,39,40],gebruiker:[10,12,21,27,30,33,34,39],gebruiksstatistiek:27,gebruikt:[0,1,10,11,15,16,17,18,19,20,22,23,25,26,27,28,29,31,32,33,34,35,37,38,39,40],gecentreerd:18,gecombineerd:[29,30],gecompileerd:[11,15,28,29,35],gecontroleerd:15,gecorrigeerd:39,gecreeerd:15,gedan:[19,25,32,35],gedeclared:29,gedeclareerd:[12,29,32],gedeeld:[29,34],gedeelt:27,gedefineerd:18,gedefinieerd:[15,18,19,20,21,26,31,32,35],gedocumenteerd:19,gedownload:[23,41],gedrag:[15,22,35,38],gedur:23,gedwong:23,geeft:[15,18,19,21,22,24,26,29,30,31,32,37,38,39],geevalueerd:[33,34],gef:[15,19,21,22,23,27,32,37,40],gegan:32,gegenereerd:26,gegev:[12,15,18,19,21,22,26,29,32,38],gegeven:[11,26,28,37,38],gegevensbestand:27,gegevenstyp:23,gehandelt:18,gehel:[10,11,16,17,18,19,22,23,25,26,33,39,40],geheug:[10,11,34,35,37,38],geheugenbeher:37,geheugenlokatie:39,gehoud:39,geimplementeerd:[15,19,21,22,26],geimporteerd:19,geincrementeerd:34,geinitialiseerd:[12,29,32,40],geinitialisereerd:[29,34],geinstalleerd:[15,27],geinteresseerd:[12,34],geinterpreteerd:28,geintroduceerd:36,geisoleerd:22,gekek:33,gekoz:[21,29,30,33,37,39],gel:23,gelang:10,geld:26,geldig:[21,25,33],geldt:[16,22,33,37,38,39],geled:24,geleerd:0,geleg:36,gelez:30,gelijk:[10,12,15,16,19,21,22,33,35,36,39],gelijkheidsoperator:35,gelijktijd:40,gelijkwaard:[23,33,35],gelijkzijd:26,geluid:26,gemaakt:[0,15,18,19,21,22,24,25,28,29,30,31,33,37,38,39,40,41],gemak:[22,26,31,39],gemakkelijker:[31,33],gemen:22,gemiddeld:25,gemuteerd:26,gen:[10,11,15,16,18,21,22,23,24,26,27,28,29,30,33,34,35,37,38,39,40],geneg:20,genereert:[21,27],generer:[18,21,26],generiek:25,genoemd:[11,19,29,30,31,34,35,36,37,38,39,40],genom:25,geometrisch:18,geopend:15,georienteerd:[28,37],geplakt:19,geprint:[11,36],geprogrammeerd:33,gerealiseerd:19,gereedschap:32,gereedschapsvenster:27,gerepresenteerd:[11,20],gereserveerd:[25,31],geretourneerd:25,gericht:26,gescheid:[31,32,33],geschikt:[21,24,27],geschrev:[10,15,16,22,27,31,33,40],geslaagd:34,gespecialiseerd:27,gespecificeerd:[15,26,27],gesprok:[25,35,37,38],gesprong:39,gestart:[32,40],gesteld:37,gestopt:29,getal1:37,getal2:37,getal3:37,getal:[10,11,17,18,21,22,25,29,30,33,34,36,37],getalklas:22,getall:[4,11,12,16,19,21,25,26,33,35,36,37,39],getalstr:37,getdayofwek:24,getek:18,getest:[15,21,31,34],getheight:15,gethour:39,getminut:39,getpointbetwen:38,getradius:15,getsecond:39,getter:19,getx:[19,38],gety:[19,38],getypeerd:32,getypt:34,gev:[11,15,18,21,22,23,25,26,29,30,31,33,34,37,38,39],geval:[10,11,15,16,18,19,21,22,25,26,27,29,31,32,33,34,36,37,38,39,40],gevall:[10,25,33,37],gevoel:12,gevolgd:26,gevorderd:27,gevraagd:[24,38],gevuld:[18,26],gewaarschuwd:33,gewacht:40,gewass:29,gewenst:[21,27,29,31],gewerkt:[27,31,33],gewijzigd:[18,29,37,38,39],gewon:[21,23,41],gewoont:19,geword:[12,33],gezegd:[28,32,37],gezet:[0,12,18,22,39],gezien:[19,29,32,35,36,39],gezorgd:15,ggd:22,github:0,giv:26,gives:15,glossy:20,goed:[0,12,16,19,21,23,26,27,29,30,33,34,35,36,41],goniometrisch:26,gooit:40,grad:[23,26],gradl:41,grag:21,gray:18,greatest:22,greenteapres:0,greeter:32,gren:23,grenz:34,gret:29,grijz:27,groen:[15,23],groep:[21,29],groeper:[28,31],grondtal:11,groning:[29,30,31],grootcirkel:23,grootcirkelafstand:23,grootcirkelnavigatie:23,grootst:[11,22,26],grot:[4,11,12,18,23,26,35,37,39,40],groter:[11,16,17,21,22,33,36,37,39],grow:38,guid:0,guru:0,h:[15,26,36],ha:[29,34],haakj:27,haakjes:[19,29,30,31,33],hadden:19,hahahahahahahahahaha:29,hak:21,hal:[10,28,39],halfradius:18,hallo:[29,30,34,35,39],halveert:26,hamantasch:26,hand:[25,29,34,35,37,41],handel:[11,18,22,34],handig:[13,14,21,25,26,27],hangt:[19,33],hannah:20,hanz:[18,24,29],hanze_orang:18,hanzehogeschol:[0,30,31,36],hard:12,harder:[13,14],hardwar:[16,28,40],has:[26,39],hausdorff:26,head:0,header:27,hebb:[11,15,18,21,22,25,26,28,29,30,31,32,34,35,36,37,38,39],hebt:[0,15,16,21,22,23,26,27,29,32,39,41],heet:35,height:[15,26,38],heigth:15,hel:[28,29,32,34,35,37,39],helas:21,helemal:19,helft:[18,32],hello:[1,29,30,32,35,39],helloworld:[1,27,32],help:[0,10,15,27,29,34],helpt:11,henk:30,hercompiler:27,hergebruik:37,hergebruikt:32,herhaald:[31,34,36],herhal:[18,28,29,31,34,36],herinner:[36,38],herkenn:[16,18,22,31],herkent:18,herschrev:[15,33,34],herschrijf:[17,19],hetzelfd:[15,17,26,33,34,35,38,39],hi:23,hierbov:[22,26,34],hierdor:32,hiermee:[27,40],hieronder:[23,24,26,27,30],hiervan:[22,28],hiervor:[29,30],highlight:27,hint:[19,26],hmm:35,hoef:[18,32],hoeft:[18,26,30,31],hoek:[23,26],hoekpunt:26,hoeveelst:37,hoevel:[24,29,34,36,38],hoewel:[0,19,25,26,28,33,38],hog:[17,33],hoger:[25,27,33,40],hoi:38,hoihoi:38,hoihoihoi:38,hoihoihoihoihoihoihoihoihoihoi:38,hoofd:21,hoofdletter:[18,20,28,29,31,39],hoofdlettergevoel:28,hoofdmethod:26,hoofdstuk:[6,7,8,9,16,17,20,21,23],hoofdtak:26,hoofdvenster:27,hoogst:[11,36],hoogt:[15,26,31],hoopt:21,hoorcolleg:1,hoort:30,hor:29,horizontal:31,houd:[17,32],houdt:[25,31],hour:[12,32,34,39],hoursworked:12,how:0,html:[0,37,38],https:[0,34,37,38],huidig:[10,18,34,37,41],huiswerk:1,hulp:[18,25],hypothes:15,i:[0,1,32,34,36,37,38],ide:[15,18,27,32],idea:27,ideal:[25,39],idee:[16,23,29,32,36],ideeen:26,identiteit:34,iederen:23,iet:[11,12,26,30,32,34,35],ii:[0,1],ijzerwar:10,imlementeert:40,immer:[25,29,30,36],immutabl:[8,39],implement:[15,40],implementatie:[15,16,19,21,22,26],implementeert:[22,40],implementer:[15,21,22,23,26,40],impliciet:29,important:15,importer:[15,27],inclusief:[0,26,32,34],incompatibl:[11,29],incrementatie:34,incrementel:26,incrementer:34,indel:26,indent:27,inderdad:[22,34],index:[0,34],indexer:27,indien:[15,27],indigo:23,individueel:27,individuel:36,indruk:18,informatica:[28,34],informatie:[15,19,23,27,29,34,39],infrastructur:27,ingebouwd:27,ingelez:30,ingesteld:27,ingevoerd:[10,33],ingevuld:29,inging:20,inherent:29,inhoud:[10,15,19,31,37,40],initial:26,initialis:21,initialisatie:34,initialisaties:12,initialiser:[12,22,32],initiel:[18,36],inleid:[22,32],innem:38,input:[6,21,23,26,28],inricht:32,insid:26,inspecter:[32,35],inspectie:27,inspring:[27,28,30],installatie:23,installatiestapp:27,instanc:19,instantie:[15,16,19,22,30,35,40],instanties:[19,24,25,35],instantievariabel:40,instell:[18,23,27,30],instructies:[23,27,28],instrueert:29,integer:[18,19,21,23,25,26,29,30,32,37,38],integrated:27,intellij:[11,15,16,18,19,23,32,41],interactie:[30,33],interactief:36,interactiev:0,interessant:[0,15],interfac:[22,40],internet:41,interpreter:[28,31],interruptedexception:40,introducer:15,introductieopgav:2,inver:33,inverted:26,inverteert:33,inverter:33,invoer:[21,26],invoert:[30,33],invoerwaardes:25,inzend:26,inzicht:34,isabecedarian:20,isafter:24,isbn:0,isclos:19,isdoublon:20,isempty:37,ismanager:29,iso8601:24,it:15,italiaan:26,iteratie:[34,36],iteratief:[22,36],iteratiev:17,iteration:7,j:32,jaartall:24,james:0,jans:31,januari:24,jar:[10,18,24,26,33,41],jargon:23,java4python:0,java:[0,6,7,8,9,10,11,12,15,16,17,18,19,21,22,25,30,31,32,33,35,36,37,38,40,41],javac:[11,22],javaexampl:30,javas:[37,38],javascript:[28,29],jdk:27,jetbrain:27,jezelf:15,jij:[15,16,27,36],jojo:20,jou:[15,18],jouw:[11,13,15,17,18,21,22,27,39],jriely:0,juist:[17,23,24,25,26,32,33],juni:24,junit:15,jupiter:15,jvm:[19,34,35],k:23,kalenderjar:24,kamer:31,kamernummer:31,kampioenschap:24,kant:33,karakter:[11,20,29,30,36,39],kattenjar:33,keert:16,kegel:15,kegelvorm:15,ken:39,kenmerkt:15,kenn:[12,15,21,39],kennis:22,kennisgemaakt:[32,39],kennismak:[15,16,19,23],kent:[11,21,29],ker:[12,13,14,18,19,20,21,26,27,30,31,34,35],kerker:20,kerstdag:24,ketting:33,keus:21,keuz:[12,21,33,37],keuzemenu:21,kevin:[18,23,26],keyword:[19,24,28,31,32,35,38,39],kies:[15,23,27,32],kiez:26,kijk:11,kijkt:[16,21],kilometer:10,kit:27,kjel:[10,11,12],klar:[26,27,40],klas:[4,16,18,21,26,27,28,30,32,35,39,41],klass:[5,18,19,21,23,28,31,37,38],klassetyp:29,klassiek:36,klasss:31,klei:26,klein:[11,12,23,28,29,31,32,40],kleiner:[10,19,21,31,33],kleinst:22,kleur:[15,18,23,26,27],kleurmeng:23,klik:[27,32,41],klikt:27,klok:[26,34],klopt:[25,33],knop:20,know:15,koekj:26,koer:23,kom:[29,30,32,33,40,41],komma:[18,31,32],komt:[15,18,23,26,27,28,29,31,34,35,36,37,38],kond:39,koning:20,kopie:[26,35],kopieen:35,kopieert:26,kopier:12,kopj:19,kort:[15,16,26,32],korter:33,kortst:23,kortweg:35,kost:[10,25],kostenperen:25,kostprijs:25,kotlin:29,krachtig:27,krijg:[12,15,18,23,27,29,34,39,40,41],krijgt:[22,26,33,36,38],kruid:29,kun:[12,17,19,22,24,27,29,31],kunn:[11,15,16,19,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],kunst:26,kunstproject:26,kunt:[17,19,23,26,27,29,31,35,41],kwadradisch:12,kwadrat:31,kwestie:[29,32],laatst:[10,11,16,22,29],lager:33,lala:20,lancer:36,lang:[11,20,22,23,26,29,33,34,37],langslop:18,lapaugh:22,larg:11,largest:[26,36],last:[10,25],lastchancegas:10,lastig:[16,31],lastigst:29,lat:[12,15,17,18,27,28,30,31,32,35,41],later:[12,22,28,29,30,32],layout:26,lcd:23,ldot:26,leeftijd:[10,30],leeftijdkat:33,leeftijdkat_mensenjar:33,leeftijdkatnaarmen:33,leesbaarder:31,leesbar:[28,31,33,36,38],leest:[15,21,28,30],left:[17,23,26],leg:[30,32,34],leidrad:27,lengt:[18,21,26],lengtegrad:23,length:[18,21,26,34,36,37],leq:16,ler:[12,29,35],les:[12,15,18,21,23,29,34],let:[6,11,22,26,27,29,32,34,40],letter:[20,28,29],levert:[29,34],lez:[15,16,19,21,28,30],lib:[18,26],libraries:[27,41],library:31,licht:[15,18,23,33],lichtgrijz:18,liever:22,lift:27,liggend:34,light:33,ligt:[10,26],lijk:[34,39],lijkt:[19,30,32,40],lijnvermenigvuld:26,lijst:[26,32,37],lik:0,likely:18,lin:[18,21,23,26,27,30,32,41],liner:26,link:[18,19,27,36],linkerkant:18,linksbov:41,liter:10,literal:39,localdat:4,locatie:[27,38],log:16,logaritm:11,logic:7,logica:32,logisch:[0,16],lok:6,lokatie:[15,18,22,34,39],lokaties:[15,18,22],loopt:24,lop:[7,14,19,23,29,32],los:[12,15,28],losser:19,luchtvaart:23,lus:[17,20,36],luss:[3,16,36],lustrum:24,m:[23,29],maakt:[0,11,15,18,19,25,26,28,33,34,35,37,38,39,40],maand:24,machin:[28,35,36,38],machinecod:28,macht:[11,16,17,34],mag:[21,22,23,26,27],magenta:[23,41],main:[1,11,12,15,16,18,19,21,23,25,27,28,31,34,37,40,41],maintainabl:0,mak:[11,12,13,14,15,16,17,18,21,23,24,25,29,30,31,32,34,35,37,38,39,40,41],mama:20,manager:41,manier:[15,19,22,25,27,28,29,32,33,35,36,37,39,40],map:23,mapp:23,mar:[0,11,15,16,18,19,20,21,22,23,24,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41],marker:27,matching:[16,27],materiaal:[0,1],math:[11,16,21,23,25,26,32,37,38,39],mav:[15,41],max:23,maximal:[37,40],maximum:23,maxvalue:40,mayfield:0,meaningful:15,media:0,medium:14,mee:[15,18,19,22,24,25,34,37,40],meeest:11,meegegev:[19,29,31,37,38,39],meegeleverd:19,meegev:26,meerder:[15,18,19,30,31,33,34,37,38,39,40],meest:[15,19,22,27,29,33,36],meestal:[30,33,38],meestel:33,melding:40,mener:31,mens:[15,35],menu:[21,27],menukeuz:21,menuoptie:27,mer:[10,15,17,18,19,21,23,25,27,29,32,33,34,37,38,39,40],meridiaan:23,merk:[22,26,39],merkwaard:25,messag:29,method:[7,15,17,18,20,22,24,25,26,28,29,30,33,34,35,36,37,38,40],methodenam:22,methodes:[21,24,25,26,28,30],methodiek:15,middag:29,middel:[19,28,33,41],middelpunt:18,middennacht:31,mijl:23,miles:23,millennium:10,miller:0,millisecond:40,mimi:20,minder:31,minimal:[25,40],minsten:10,minut:[27,31,32,34,39],mis:29,misja:32,misluk:35,mislukt:27,mismatch:11,misschien:[0,11,15,16,18,21,27,29,32,34,39],missing:32,mit:26,mix:33,mm:24,model:33,modern:40,modifier:[18,39],modul:[23,41],modulair:[22,26],modulo:29,moeilijk:[28,34,37],moeilijker:26,moeit:[16,32],moer:10,moeten:[10,15,16,18,21,22,23,25,26,27,28,29,31,32,33,34,35,36,39],mog:39,mogelijk:[16,19,21,24,25,29,30,31,33,34,36,37,38,39,40],moment:[15,27,29,31,32,38],monster:19,mooi:[24,37],mov:19,mr13:0,multiply:[21,22,37],mutabl:8,mutated:26,mutator:[15,39],muter:26,mystery:34,n:[16,17,18,19,22,25,26,30,34,36,37,38],naamev:39,naarmat:[15,27],naast:[0,18,22,25,29,31,32,33,36,39],nadat:[15,22,34],nadel:[23,29,33,38],nader:21,nam:[11,15,18,19,23,27,28,29,30,31,32,37,39,40],namelijk:[18,21,36],names:37,nameupper:37,nan:[26,34],nana:34,napier:11,nar:[0,10,11,12,15,16,17,18,19,21,23,24,26,27,28,29,30,31,33,34,35,36,37,38,39,41],natur:[11,12,21,29],nautical:23,nauwkeur:22,nauwkeuriger:[22,31],naviger:41,necessary:15,ned:15,nederland:24,nee:[16,18,32,34],neemt:[0,16,26],negatief:[10,25,33],negatiev:[12,15,22,33],negative_infinity:26,neger:[20,27],nem:[10,19,21,30,31,32,33],nen:[20,30],ner:41,nested:18,nested_circles:18,nestedsquares:18,net:[19,25,38,39],never:15,newfixedthreadpol:40,newlin:32,next:33,nextint:[30,33,37],nextlin:30,nhet:30,niemand:34,nieuw:[12,15,16,19,22,26,27,29,30,32,33,35,37,38,39,41],nieuwjaarsdag:24,nik:32,nis:30,niveau:[18,23,26],nl:[34,37],nmogelijk:30,nodig:[15,21,22,23,26,27,30,33,37,39,41],noemer:[22,29],nogal:38,nogmal:[11,12],nom:30,non:25,noodzak:[34,39,40],nooit:39,normal:[25,35],nosuchelementexception:33,not:26,notatie:[11,35,39],now:24,nox:13,nul:[12,17,22,23,29],nullpointerexception:37,number:[11,33,36],number_on:35,number_three:35,number_two:35,numerator:22,numeriek:[20,22,29,30,34,36,37],numis:36,nummer:31,nuttig:[26,27,39],o:0,object:[0,8,15,21,22,26,28,29,30,34,39,40],objectgeorienteerd:[0,1,22],objecttyp:29,objectwaard:35,observer:11,oefen:[11,12,13,14,16,18,21,23],oefenopgav:1,off:29,oftewel:[15,32],ofwel:23,oject:38,ok:[10,27,41],oktober:24,omgat:22,omgedraaid:30,omgekeerd:[23,26,32],omgezet:[15,21,28,29,37],omging:19,omlijnd:26,omreken:33,omschrev:33,omslacht:[21,33,39],omtrek:[10,26],omvang:29,omweg:25,omwill:33,omzet:[23,32],onafhank:40,onbedoeld:[37,38],onbepaald:29,onbeperkt:33,onderan:[27,32],onderdel:[15,16,19,21,28,29,32,33,36],onderin:27,onderscheid:[28,29,37],onderst:26,onderstaand:[19,24,25,27,34,38,41],ondersteun:0,ondersteund:27,ondersteunt:30,onderwerp:[1,23,25,36,40],onderwijs:30,onderzoek:12,one:[26,29,33],oneind:[36,37],onev:34,ongeacht:[15,29,33,34,37],ongebruik:19,ongeld:[21,33,37],ongelijk:33,ongemerkt:25,ongever:[23,27],ongevuld:26,ongewijzigd:38,onlin:0,onmog:[19,34],onnauwkeur:22,onnod:33,onstan:25,ontbreekt:[29,32],ontdek:23,ontdekt:[12,29],onthoud:[17,23],ontstan:38,ontstat:[22,36],ontstond:10,ontvang:32,ontwerp:[5,26],ontwerper:[29,37],ontwikkel:[26,27],ontwikkelomgev:[11,27],onverander:[12,37],onverminderd:40,onverwacht:29,onvoldo:22,onwaarschijn:33,onwar:29,onz:[21,22,35],ooit:[33,34],oop:[1,27],oorsprong:26,oorspronk:26,opav:21,opbouw:36,opbrengst:25,opbrengstperen:25,opdel:31,opdracht:[21,26,27],opdrachtprompt:27,opdrachtspecificatie:23,opeenvolg:26,open:15,opent:[15,27],operand:[16,21],operatie:[21,23,28,29,34,37],operaties:28,operator:[6,19,21,30,37],opgav:[13,16,17,20,21,22,26],opgebrok:21,opgegev:[10,26],opgehaald:11,opgelost:31,opgenom:[18,26],opgeruimd:38,opgeslag:[19,22,27,33,35,37,38],opgesplist:40,opgesteld:15,opgeteld:31,opgev:18,opgevall:15,opgevraagd:[19,34],ophal:15,oplever:[23,32,34],oplevert:23,oplop:[20,23],oploss:[0,15,21,22,25,29,30,33,36,37],opnem:26,opnieuw:[17,22,27,28],oppervlak:[23,32],oppervlakt:31,oppervlakte_driehoek:31,opslan:[10,27,28,29],opslat:27,opstart:[27,32],optell:[21,22,28,29,34,39],optie:[18,21,27,32],opties:21,optimalisatie:35,optimalisaties:34,optional:25,optionaldoubl:25,optionalint:4,optionallong:25,optionel:[17,23,26,32],optred:29,opvall:18,opvalt:21,opvolg:33,opvrag:[19,34,39],opzet:27,opzicht:[18,25],or:18,oracl:[25,28,31,37,38],orang:23,oranj:18,ord:[18,26],ordent:27,order:[18,26],orderchecker:10,org:[15,34,37],organisaties:41,organiser:[18,26],oriented:0,origin:26,original:26,originel:37,other_lib:18,oudst:33,our:15,out:[1,11,12,16,19,22,23,24,25,27,28,29,30,31,32,33,34,36,37,38,39,40],outlin:[18,26],output:[6,26,28],overblijft:22,overbod:[0,38],overeenkom:39,overeenkomst:0,overeenkomt:10,overen:[23,27,34],overflow:22,overigen:38,overload:19,overrid:40,overzicht:[19,30,31],overzichtsmenu:27,p1:[19,38],p2:[19,38],p:[19,22,38],p_x:26,p_y:26,pack:27,packag:19,pak:[15,18,27],palindrom:20,panel:27,papa:20,papier:[12,26],par:[16,22,26,39],paragraf:[13,15,21],parallell:26,param:37,parameter:[16,17,18,21,22,26,34,39],paris:[23,39],parker:29,parseint:[18,30,32,37],parteretrap:20,pas:[11,12,17,25,26,29,34,36],pascal:28,passend:26,passing:15,past:[22,39],patron:[0,18,26,36],pattern:16,paus:40,pauz:40,pauzer:32,pay:12,payrat:12,payroll:12,pdf:0,per:[0,10,15,18,19,25,26,36],perfect:35,performanc:38,perl:28,permanent:11,person:[10,33,36,41],perspectief:32,php:[28,29],pi:[15,16,31,32],pick:18,pion:20,piping:27,pixel:32,pizza:26,plaatjes:[5,26],plaats:[12,19,29,31,33],plaatselijk:24,plaatst:29,plaatsvind:37,plaatsvindt:24,plak:12,plat:[11,19,22,25,28,30,31,33,36,37,40],player:[19,30],playernam:30,plek:[15,19],plot:[18,26],plusj:41,point1:19,point2:19,point3:19,point4:19,point5:19,point:[11,16,20,23,26,30,31,32,34,41],pointer:35,pol:[26,35],polygon:26,pom:15,pompstation:10,positie:[32,39],positief:33,posities:39,positiev:22,positiv:15,positive_infinity:26,potlod:[12,26],potverdorie:16,pow:[16,17,37],power:11,practica:41,practicum:[1,27],practicumdocent:[23,27],practicumpoint:19,praktijk:31,precies:[12,18,19,20,24,27,32,38],preciezer:19,precisie:[12,23],prestatie:40,priem:22,prijs:[10,29],prijz:10,prim:26,prima:[29,39],primair:23,primitief:[11,19,35,37],primitiev:[2,19,22,25,29,33,38,39],princeton:23,princip:29,print:[12,15,19,20,21,22,26,28,30,31,32,33,36,39],printadresdoorenvest:31,printbreakev:25,printf:[30,34],println:[1,11,12,16,19,22,23,24,25,27,28,29,30,31,32,33,34,36,37,38,39,40],printpoint:38,printstacktrac:40,printtim:32,printtwic:32,privacybeleid:27,privat:[15,39,40],prober:[11,12,17,19,22,31,35],problem:[10,11,12,13,14,16,17,21,22,25,28,29,31,34,36,38,41],procent:10,proces:[22,27],processor:[16,40],processorkern:40,producer:23,product:[17,22,25,36],progammacod:41,program:6,programm:[6,28],programma:[10,11,12,15,16,17,18,19,22,23,24,26,29,31,32,33,34,37,40,41],programmacod:27,programmeerfout:29,programmeerhulpmiddel:27,programmeeromgev:23,programmeeropdracht:27,programmeertal:[0,23,28,29,30,31,37],programmeerur:29,programmer:[0,1,6,7,8,9,22,23,29,31],programmeur:[25,31],programmma:[18,40],project:[23,26,41],projectbestand:[15,18,26],projectconfiguratie:15,projectmap:[23,27],projectstructur:15,prompt:21,properties:[15,19,39],property:[18,19,21],publicer:[23,41],punt1:38,punt2:38,punt3:38,punt:[11,17,18,19,21,23,29,31,32,38],puntkomma:[27,28,29],pythagoras:[19,31],python:[0,6,7,8,9,28,29,31],q:22,quot:30,r:[15,22,23,32],rad:[13,14,26,27,32],radial:[23,26],radius:[15,16,18,32],rak:16,raket:36,rand:[10,18],randkleur:18,random:[18,37],randombit:18,rar:20,rationalcient:22,rationalclent:22,rationalclient:22,rationel:22,realiser:33,recent:11,recht:[18,19,27,32],rechterkant:18,rechthoek:38,rechtstek:40,rechtstrek:19,recompil:27,recursie:[5,18,22,26],recursief:[18,26],recursiev:[17,18,22,36],recursion:13,recursiv:[7,18,36],recusiev:5,red:[0,18,19,23,26,34,35,37],redder:20,redirection:27,reeel:25,refactor:0,referentie:[19,23,38],referenties:37,referer:0,regel:[11,12,18,19,22,26,27,28,29,30,32,38,39],regeleind:30,regelnummer:27,regulier:31,reilly:0,reis:23,reiz:23,rek:[20,21,22,28,30,31,33,34,37],reken:[25,33,39],rekenkund:[28,37],rekenmachin:3,rekenmethod:21,rekenoperaties:21,rekent:10,rel:[23,25],relatie:[18,33],relatief:[22,39],relevant:[15,22,23],relevantie:0,renam:27,repeat:29,replac:37,representatie:[22,39],representeert:[19,24,34,37,38],representer:[11,22,26,39],reserveert:11,resolutie:18,respectiev:26,rest:[22,29,36],rester:10,result:[16,31,38],resultat:[11,12,15,16,17,18,21,22,25,29,30,31,32,33,36,38],resulter:[23,34],retourneert:19,retourner:25,returntyp:[22,39],returnwaard:[15,22,34],reversed:34,rgb:23,rgbtocymk:23,rho18:0,rhodes:0,riely:0,right:[15,17,23,26],rij:[36,37],rij_van_fibonacci:37,rijd:10,ring:10,robert:[18,23,26],robson:0,rod:[23,32],roep:[15,16,20,21,26,28,31,40],roept:15,rol:15,rond:[17,22],rotated:26,rotates:26,rotatie:26,rotatiepunt:26,roteert:26,round:31,rounding:12,rout:10,ruimt:[10,18,21,22,26,38],run:[12,27,40],runn:[23,27],runnabl:40,runnables:40,runt:41,rustig:27,s:[6,10,12,15,16,18,21,22,23,26,27,29,30,31,32,33,34,35,36,37,39,40],saf:38,sam:[11,15,17,23,27],samenwerk:21,sav:26,say:32,scaled:26,scales:26,scanner:[21,33],schaalt:26,schal:[18,23,26],scheidingstek:18,scherm:[11,19,23,24,25,27,28,32,33],schoolnam:30,schrijf:[10,12,16,17,18,19,20,22,23,26,31],schrijft:[10,11],schrijv:[0,11,12,15,16,18,21,22,23,26,27,28,30,33,36,38],scientist:0,scor:[29,30],scroll:27,se:27,second:[31,32,39,40],seconden_na_middennacht:31,secondpart:29,sedgewick:[18,22,23,26],see:15,seeing:15,selecter:[27,41],separat:23,separation:21,september:24,series:15,seriestest:15,servic:40,sessie:21,set:[15,26],setcanvassiz:26,setheight:15,sethour:39,setlocation:[19,38],setpencolor:[18,26,41],setpenradius:41,setradius:15,setscal:26,setter:19,setxscal:[18,26],setyscal:[18,26],sferisch:23,shortfall:11,showing:15,shutdown:40,sid:26,sierpinsky:26,signatur:[15,21,22,32,39],signed:29,simon:30,sin:[16,23,26],sind:26,sit:[0,13,14],sites:41,situatie:[15,33,38],situaties:[15,25,33],sla:12,slaagt:[15,27],slag:15,slan:[22,23,26,27,37,39],slecht:[12,26,30,35],slechter:29,slep:40,slimmer:32,slot:[21,26,32,36,40],sluit:27,sluitring:10,snel:22,sneller:[0,38,40],softwar:[0,15],softwareproblem:0,som:[0,10,18,19,22,29,30,33,34,37],sommig:[15,16,25,26,27,33,34,37],soort:[15,18,19,28,29,34],sourc:15,spannend:27,spatie:[11,32],speciaal:[32,35],special:[11,27,37],specificaties:15,specificeert:23,specificer:28,specified:[18,26],specifiek:[0,15,16,18,19,27,28,29,31,32],specifier:30,spel:35,speler:19,spiegel:26,spor:16,sprak:[25,29,33,38,40],spring:39,sqrt:[15,16,19,21,26,31,38],src:[15,27],stack:36,stan:[17,19,23,26,28,31,32,33],standaard:[18,19,21,24,26],standaardeditor:27,standard:[26,31],stap:[11,19,21,23,31,35,36],stapj:40,stapjes:31,start:[12,21,27,32,34,37,40],startproject:27,stat:[10,19,26,29,30,31,32,33,34,39],statement:[12,15,21,23,26,28,29,30,31,32,34],statisch:[26,32],statusbalk:27,stddraw:[18,26,41],stdlib:[18,26,41],stdrandom:18,sted:[11,15,17,19,21,22,23,27,31,32,35],stel:[12,18,23,25],stell:29,stelling:[16,19],stelt:[15,16],sterk:29,stijlregel:27,stilgezet:32,stilstan:32,stip:32,stop:[21,34],stopconditie:26,stopp:[19,26,33],stopwaard:34,strak:15,stral:[15,32],strikt:[23,25,28,29],string:[1,3,7,11,12,13,16,18,19,21,22,23,26,27,28,30,31,33,38,39,40,41],string_fiv:35,string_four:35,string_on:35,string_six:35,string_three:35,string_two:35,stringbuffer:38,stringcontainsinteger:37,structur:[34,41],student:[0,26,29],studio:27,stuk:[10,25,31,33,41],stukj:[32,40],stur:27,submit:40,subproblem:31,substring:36,subtiel:18,subtract:[21,22],subtractiev:23,succes:21,succesvol:[11,29],such:26,suggereert:19,suggestie:25,suggesties:26,sum:22,summary:[19,24],superset:34,swift:[28,29],symbol:15,syntactisch:27,syntax:[0,12,15,18,27,29,32],syntaxfout:32,system:[1,11,12,16,19,22,23,24,25,27,28,29,30,31,32,33,34,36,37,38,39,40],systematisch:15,t1:40,t2:40,t3:40,t:[15,25,29,30,31,32],taaitaai:20,tab:30,tabel:17,tak:[15,21,23,32],takes:[18,26],tal:[0,28,32,35],tamtam:20,tankinhoud:10,target:15,tax:12,taxrat:12,taylorrek:22,tdd:5,techniek:[15,26,29,36],technisch:[19,29,38],teg:[17,18,26,29,41],tegelijk:[16,23],tegelijkertijd:[0,12],tegengesteld:33,tegenkomt:29,tegenstell:[26,28,31,35],tek:[18,26,33],teken:[11,12,18,26],tekenset:34,tekent:[18,26],tekenvenster:26,tekst:[11,28,29,30,36,39],tekstboek:23,teksteditor:27,tekstrepresentatie:15,tekstuel:[34,39],tekstverwerker:12,tel:31,teleurstell:15,tell:[36,40],teller:[22,29,34,36,40],telt:[24,40],ten:[18,22,23,25,26],tenminst:[33,37],tenslot:[12,26],tent:20,ter:[0,23,36,38],terechtkomt:29,term:22,terminal:27,terug:[15,18,19,21,22,25,26,29,30,31,33,34,36,37,38,39,41],teruggeeft:[16,17,20,21,26,31,32],teruggegev:[24,31,34,36,37,38],teruggev:[21,31,32,33],terugkom:[22,29],terugvind:[1,16,20],terwijl:[23,26,27,34],test:[16,19,21,24,25,26,31,33,41],testcas:15,testcod:[25,26,41],testfibonacci:15,testing:7,testnegativeheigthconstructor:15,testpanel:15,tevor:34,text:[21,29,36,38],that:[15,22,26,39],the:[11,15,18,26,30,33],them:[15,26],theorie:[33,37],thes:26,theta:26,thing:15,think:0,thinkjavacode2:0,thread:[11,23,38],threadpol:40,three:33,throwfor:33,tien:29,tijd:[15,27,34,39,40],tijd_1:39,tijd_2:39,tijd_3:39,tijdelijk:31,tijden:[1,10,12,23,29],tijdschrift:23,tijdstip:31,tijdzon:[24,39],tijdzones:39,tim:34,timeout:40,times:[11,15,22,23,26],timeunit:40,tinspring:30,to:[0,11,15,23,29,34],todegres:23,todo:27,toe:[11,12,15,18,19,22,26,27,31,32,34,36,41],toegang:[15,27,39],toegek:[29,31,38],toegelicht:0,toegepast:[10,26,29,33,36,37],toegevoegd:[18,22,41],toegewez:40,toekend:12,toekent:38,toelicht:31,toeneemt:34,toepass:[0,15,27,33,36,39],toepast:34,toestemm:15,toetsenbord:[28,30],toevoeg:[27,34,35,39,40,41],toewijzingsnotatie:35,toewijzingsverklar:12,tolowercas:20,ton:[21,27],tony:22,too:11,toont:[21,34],toradian:[23,26],tostring:[15,22,24,37,38],totaalprijs:10,total:10,totdat:[19,27],touppercas:[37,39],traditionel:40,transformaties:[26,39],translat:19,translated:26,translates:26,translatie:26,transler:26,treedt:[29,37],trek:22,triangl:26,trigonometrie:26,trigonometrisch:23,trinket:0,trust:15,turing:37,tuss:[11,19,21,23,26,28,29,30,31,32,33,34,35,37,38,40],tussenstap:28,tussentijd:31,tutor:36,tutorial:[16,32],twaalf:29,twed:[16,18,19,21,23,24,26,33,35],twee:[0,10,11,12,13,15,16,18,19,20,21,22,23,26,27,29,30,31,33,34,35,37,38,39],tweecijfer:10,tweedimensional:[21,26],tweemal:[10,21],tweetal:[21,22],twic:32,two:[18,33],typ:[5,11,12,15,17,18,19,21,22,23,27,30,31,32,35,36,37,38],typefout:27,typer:29,types:[6,8,11,33,38],typisch:[22,27],typt:27,uigevoerd:33,uitbreid:27,uitdag:[17,23],uitdruk:[32,34,39],uiteind:[15,26,32],uiteraard:[31,40],uitgangspunt:15,uitgebreid:[0,29,31,32,37],uitgebreider:[15,30,31],uitgedrukt:[16,39],uitgegan:27,uitgeschrev:[10,12],uitgeslot:15,uitgevoerd:[11,15,28,29,33,34,40],uitkled:32,uitkomst:[12,16,19,25,33,37],uitprint:10,uitprober:26,uitschrijv:10,uitsluit:30,uitverkop:10,uitvoer:[0,11,12,15,19,21,22,23,24,26,27,28,29,33,36,40],uitvoerd:23,uitvoert:[11,17,26,28,35],uitwerk:[14,15,17,22,36],uitziet:[26,27],unicod:[20,39],uniform:18,unique:15,unittest:15,unix:18,unknown:33,unleashed:26,unmutabl:18,unresolved:11,unzip:26,up:18,upward:26,uren:[34,39],url:0,us:15,useful:15,util:[30,33,36,40],uur:[31,34],v:[15,31],vaardig:16,vak:[16,19,24,25,26,29,31,32,33,34,36,40,41],vaker:39,vakgebied:34,valid:25,validates:15,validatie:[33,37],valley:10,valt:24,value:[11,12,15,33,40],valueof:37,values:21,vanaf:[29,34,36],vandag:24,vandan:32,vanuit:[26,27,40],vanweg:[22,35],variabel:[2,11,15,19,23,25,28,30,31,32,33,34,35,37,38],variabelenam:19,variabl:[27,32],variables:[6,12],variant:34,variatie:35,vast:[25,28,31,39],vastekost:25,vastgelegd:29,vastgesteld:33,veelhoek:26,veelvuld:30,veilig:23,vel:[0,11,16,20,21,23,27,28,29,30,31,32,33,35,37,39,40,41],veld:[15,18,22,39],venster:[18,41],ver:23,verander:[11,19,26,29,37,38,40],veranderd:[19,26,33,38],verandert:[18,29,37],verantwoord:[18,21,36],verberg:39,verbergt:39,verbeter:19,verbeterd:22,verborg:39,verdel:29,verder:[15,21,22,31,40],verdubbelt:34,vereenvoud:[11,22],vereis:[23,26,31],vereist:31,verenigd:10,vergelek:[19,35,37],vergelijk:[0,12,15,19,22,26,28,30,33,35,37,39],vergelijkingsoperator:23,vergelijkt:[15,37,39],verget:[11,23,34],vergrot:39,verheff:16,verhev:[11,17],verhog:[19,36],verhoogd:34,verhoogt:34,verhoud:22,verkeerd:34,verklaart:[29,35],verklar:[11,19,29,31],verkocht:25,verkop:25,verkort:18,verlag:36,verlegg:23,verlies:25,verlop:[21,29],verlor:37,vermenigvuld:[21,22,29],vermenigvuldigd:23,vermenigvuldigingsoperator:29,vermoed:34,veronderstel:10,verpakt:41,verplaats:19,verplat:26,verplicht:[19,27,33],versa:34,verschijn:27,verschijnt:[11,27,41],verschil:[11,19,22,28,32,35,38],verschill:[0,12,18,22,23,26,27,28,29,31,33,35,37,38,39,40],verschilt:[11,19,29],verschuiv:26,versie:[0,11,15,17,19,22,27,28,29],versienummer:15,versies:12,version:27,verspring:[34,39],versus:34,vertal:26,vertegenwoord:32,vertell:[22,26],vertex:26,vertical:31,vertices:26,vertrek:31,vervang:[33,34],verver:20,vervolg:0,vervolgen:[11,12,15,18,19,23,26,27,29,33,34,36,40],verwacht:[15,19,26,32,35],verwarr:[35,38],verwijder:[12,26,38],verwijderd:[29,38],verwijst:[11,37,39],verwijz:[0,19,29,35,37,38,39],verwoord:38,verzamel:[28,29,34],verzamelt:21,via:[15,19,21,32,36,37,38,39,40],vic:34,viel:24,vier:[16,23,26,33,39],vierd:[22,34],vierkant:18,view:[18,27,32],vijf:[23,24],vind:[0,15,16,17,18,19,21,22,24,25,29,31,36,37,38,40,41],vindt:[0,35],virtual:[28,35],virtuel:[28,38],visual:27,visualisaties:0,vlak:[19,31],vluchtleid:36,voeg:[18,19,22,26,27,31,41],voegt:27,voel:26,voer:[10,11,12,15,21,22,27,33,37,39,40],voert:[23,33,40],voetbal:24,vol:10,voldoen:[15,28,36],voldoend:[0,24,39],volg:[16,18,23,26,27,39],volgen:[18,21],volgend:[10,11,12,13,14,15,16,18,19,20,21,22,23,25,26,27,28,29,32,33,34,36],volgord:[10,20,23,26,31,32,33,39,40],volgt:[11,15,17,18,21,22,27,28,31,33,34,37,38,40],volled:[15,18,19,31,37,39,40],volstan:24,voltooid:27,vooraf:[15,29],voorafgegan:30,vooral:[16,21],voorbeeld:[10,15,16,20,21,22,23,26,27,30,31,32,34,37,38],voorbeelduitvoer:23,voorbij:32,voordat:[11,15,16,18,22,24,26,31,34,40],voordel:[22,23,30],voorgaand:18,voorkeur:33,voorkom:[0,12,20,22,31,33,37],voorkomendst:29,voorkomt:[20,37],voornaamst:19,voornam:[15,18,23],voorrang:33,voorspel:40,voort:39,vooruitblik:21,vooruitgang:26,voorwaard:[22,33],voorzicht:22,voorzien:0,vor:[0,1,11,12,13,14,16,19,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],vordert:27,vorig:[11,12,17,18,29,32,36],vorm:[15,22,27,33,36],vormt:28,vraagt:[10,21,34],vrag:[12,15,21,23,24,27,34],vreemd:[22,25,35],vrij:26,vscod:27,vuistregel:[33,38],vulkleur:18,vull:21,vulling:18,w:35,waarbij:[19,22,25,27,29,30,38],waard:[10,11,15,16,18,19,20,21,22,23,25,26,29,31,32,33,34,35,37,38,39,40],waardes:[30,33],waardor:[24,29],waarin:[25,26,27,28,29,38],waarmee:[24,39,41],waarneemt:22,waarom:[17,23,26,31,32,34,35],waarop:[24,29,31,33,35],waarschijn:[0,17,33],waarschuw:27,waarvan:[23,26,33,37,38],waarvor:28,wacht:40,wachtrij:36,wachtwoord:34,wanner:[11,12,15,16,18,22,25,27,29,32,35,38,41],war:[0,10,13,14,15,18,19,21,22,26,27,29,30,32,33,34,35,36,38,39,40,41],warm:24,wayn:[18,23,26],we:[0,12,15,18,19,22,24,26,27,28,29,30,31,32,33,34,35,36,39,41],webpagina:23,weekdag:24,weergav:[24,31],weergegev:[22,37,38],weergev:[16,27,28],weerlegg:34,weerszijd:18,weg:23,weglat:[27,32],weinig:10,wek:24,wekker:39,wekt:25,wel:[11,15,19,25,26,28,29,31,32,33,34,37,38,39],welk:[15,19,24,26,29,33,37],welkom:27,welkomstscherm:27,welkomsttekst:27,wellicht:29,wens:39,wenselijk:[25,33],went:16,wer:[11,21,23,25,35,36,38,41],werden:[10,36],wereld:[29,32,34,35,39],werk:[15,16,18,19,22,23,26,27,28,33,34,37,40],werkboek:1,werkboektekst:32,werkend:[28,31],werkt:[11,15,16,19,22,26,31,33,34,35,37],werkwijz:[15,33],wet:[15,18,21,23,24,26,27,29,31,32,34,36],wetenschapp:11,what:30,whil:[19,34,36,37,40],whit:23,whos:26,width:38,wij:[15,18,27,32,36,39],wijs:12,wijz:[19,29,33,37],wijzig:[11,12,22,26,27,37,38],wiki:[34,37],wikipedia:[23,34,37],wild:26,wildcard:18,will:[11,16,21,27,36,39],willekeur:[15,18],wilt:[11,26,27,32,34],window:18,winkel:10,winst:25,winstperen:25,wintertijd:39,wiskund:[11,23,26,31,33],wit:[20,23,26],witregel:28,wo:33,won:24,woonplat:[29,30],woord:[11,15,20,21,26,31,32,34,37],word:[0,10,11,12,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],worked:12,world:[1,29,30,32,35,39],wortel16:31,wortel:31,wp:0,wrapper:38,x1:[23,31,38],x2:[23,31,38],x:[12,16,17,18,19,21,23,26,33,38],x_0:26,x_1:[19,21,23,26,31],x_2:[19,21,23,26,31],x_i:26,x_smaller_than_y:33,xml:15,y1:[23,31,38],y2:[23,31,38],y2k:10,y:[18,19,21,23,26,33,38],y_0:26,y_1:[19,21,23,26,31],y_2:[19,21,23,26,31],y_i:26,yellow:[18,23],your:[16,30,32],yyyy:24,z:[11,23,29,35],zeemijl:23,zeerst:26,zeevaart:23,zegg:[22,29,32,33,39],zegt:[20,35],zeker:[22,24,26,32,34,35],zelfd:39,zelfgelijkenis:36,zelfs:[16,18,19,27,28,34,39],zelfstand:33,zer:[0,26],zernikeplein:31,zero:29,zes:33,zet:[12,18,19,21,23,24,25,30,32,36,37,39,41],zeur:29,zichtbar:[11,15,30,32,38],zichzelf:[12,26,32,39],zie:[15,18,21,22,23,24,26,34,37],zien:[0,12,15,17,18,26,27,28,29,30,32,35,38,39,41],ziet:[11,15,18,26,27,32,34],zijbalk:27,zijd:[18,26],zijdelengt:18,zijlengt:26,zin:[23,37],zip:[15,18,23,26,27],zit:[31,35],zoal:[10,15,16,18,19,24,26,27,28,29,30,32,34,35,37,38,39,41],zodan:[12,25],zodat:[13,14,16,17,19,24,25,26,29,30,33,35,38,40],zodra:[15,17,19,32,38],zoek:[19,24,29,36,39],zoekt:18,zogenaamd:[19,28,41],zogezegd:20,zojuist:41,zolang:[22,34,36,39],zomar:39,zomer:39,zorg:[11,19,23,26,27,29,31,36],zorgt:[19,33,36,40],zorgvuld:[16,23,27],zoud:[12,21,33,35,39],zovel:10,zover:35,zowel:[1,18,19,22,23,31,33,34,35,38],zul:[12,16,17,29],zull:[0,15,18,21,27,29,33,34,35,39],zult:[0,16,23,26,27],zwart:[18,20,23],zwevendekommagetall:[11,16],zwevendepuntgetall:12},titles:["Literatuur","Welkom","Opgaven week 1","Opgaven week 2","Opgaven week 3","Opgaven week 4","Week 1","Week 2","Week 3","Week 4","Condities","Primitieve gegevenstypen","Variabelen en toekenningen","CodingBat","CodingBat","Klassen ontwerpen en testen","Debuggen en methoden","Grote getallen","Geneste cirkels","Practicum: Objecten maken van klasse Point","Strings en lussen","Methoden en condities","Klassen ontwerpen","Opgaven practicum 1","Opgave Klasse LocalDate","Opgave klasse OptionalInt","Recursieve graphics","Hello World in Java","Inleiding","Variabelen en operatoren","Invoer en uitvoer","Methoden","Methoden","Condities en logica","Lussen en strings","The strange case of String","Recursie","Immutable objecten","Mutable objects","Klassen ontwerpen","Snelle inleiding threads","Externe bibliotheken gebruiken"],titleterms:{"1":[2,6,23,32],"2":[3,7,32],"3":[4,8,32],"4":[5,9],"\u00e9n":29,"boolean":33,"break":25,"char":34,"if":33,"int":32,"null":37,"return":[31,38],"switch":33,"this":39,De:[15,21,22,25,32,33,34,37,40],Een:[26,28,34,40],Het:[22,33,37,39],Hoe:36,Ik:27,Nog:19,Overige:29,Tot:[15,22],Van:32,aanpak:40,aantal:28,abc:20,abstractie:39,achtergrond:26,afhank:15,afrondingsfout:29,algoritm:22,anatomie:32,ander:[27,29,36],argument:[31,32,37],array:36,art:26,basisoperaties:28,begrijp:27,bereken:25,bibliografie:0,bibliothek:[26,41],biginteger:37,bijzonder:[21,34],boek:[6,9,12],boodschap:34,cas:35,casus:25,chaining:33,checker:10,cirkel:18,classes:37,cod:28,codingbat:[13,14],collector:38,collegejar:24,commandlin:37,compiler:[28,29],con:15,condities:[10,21,33],conditionel:36,configuratie:15,consol:29,constructor:[19,39],copy:26,counter:40,data:39,debug:32,debugg:16,declarer:29,definier:[31,32],del:26,design:0,distanc:21,documentatie:19,doel:[21,22,23,26],doorlop:34,driehoek:26,dubbel:11,dubbelwoord:20,dynamisch:29,editor:27,eenvoud:21,eig:26,eindig:34,els:33,equal:39,equality:35,escap:30,euclides:22,even:25,explosie:11,exponentiel:11,extern:41,faculteit:17,fermat:16,floating:29,flow:21,formatter:[28,30],fout:29,foutj:19,garbag:38,gebruik:[22,25,41],gedrag:34,gegevenstyp:11,gehel:29,geheug:29,gen:25,genest:[18,34],geometrisch:26,getall:[17,22,29],getmenuoption:21,getoperand:21,getpair:21,getter:39,getypeerd:29,gevar:11,grafisch:36,graphic:26,greatcircl:23,grot:17,handel:[36,39],hello:[23,27,28],helloworld:23,hifour:23,huidig:24,i:26,ii:26,iii:26,immutabl:[37,38],incrementel:31,initialiser:29,inleid:[15,18,21,23,28,40],installer:27,intellij:27,invoer:[30,33],java:[23,26,27,28,29],jouw:26,karakter:34,karaktermoord:11,kat:33,kenmerk:[28,39],kerst:24,keyword:[33,37],klas:[15,19,22,24,25,31,37,38,40],klass:[15,22,39],klein:24,korting:10,kunstwerk:26,kwadratisch:12,leeftijd:33,lengt:34,literal:35,literatur:0,localdat:24,logica:33,logisch:[29,33],lus:34,luss:[20,34],machtsverheff:17,main:[26,32],mak:[19,26,27],mar:29,math:31,meerder:32,mensenjar:33,method:[16,19,21,31,32,39],methodes:[19,31,37],millenniumbug:10,mod:32,moderner:40,mogelijk:26,morgan:33,multadd:16,multitask:40,multithread:40,mutabl:38,nar:32,nestedcircles:18,nesting:33,nieuw:31,nijpend:11,object:[19,35,37,38],oneind:34,ongeld:25,ontwerp:[15,22,39],ontwikkel:31,opdracht:[18,23],open:27,operator:[29,33,35],opgav:[2,3,4,5,15,18,23,24,25,27],opgaveoptionalint:25,opnieuw:12,oppervlak:15,opslan:37,optionalint:25,optionel:[6,7,8,9,15],order:10,ordered:23,parameter:[31,32,38],pattern:0,point:[19,29,38],power:21,practicum:[19,23],primitief:29,primitiev:[11,37],prinsjesdag:24,problem:30,programma:[21,27,28],project:[15,27],punt:[25,26],quiz:32,random:21,rational:22,rectangl:38,recursie:[13,36],recursief:36,recursiev:26,reden:31,reeks:30,referentie:37,referenties:38,rekenkund:29,rekenmachin:21,relationel:33,requirement:26,returnwaard:[32,36],rgbtocmyk:23,rond:26,rotat:26,roter:26,runtim:29,s:28,salaris:12,scal:26,scanner:30,schaakstuk:20,scheur:10,schrijv:31,sequentieel:36,setter:39,sierpinski:26,sinterklas:24,slot:[15,22],snell:40,standaard:30,standaarduitvoer:30,stap:[15,18],stapp:26,statement:33,statisch:29,stopt:34,strang:35,string:[14,20,29,32,34,35,36,37],stringbuilder:38,substring:34,subtiel:34,syntax:34,tal:29,tank:10,tbv:37,tekort:11,terug:32,test:[15,32],testing:15,the:35,thread:40,tim:39,toekenn:[12,29],toewijz:12,tostring:[19,39],transform2d:26,transformatie:26,translat:26,typ:[29,33,39],types:[29,37],uitvoer:[18,30],unicod:34,unit:15,user:21,valider:33,variabel:[12,29],verbeter:22,vergelijk:34,verhog:34,verlag:34,verschil:34,versus:29,volled:28,volum:15,voorbeeld:[18,24,28,29,33,36,40],voorbereid:26,vor:[15,18],vrag:32,vs:[37,38],waard:[12,36],waardes:[25,31,38],wanner:34,wek:[2,3,4,5,6,7,8,9],welkom:1,werk:24,werkt:36,wet:33,willekeur:26,world:[23,27,28],wrapper:37}}) \ No newline at end of file +Search.setIndex({docnames:["about/literatuur","about/syllabus","course/ex_1","course/ex_2","course/ex_3","course/ex_4","course/ex_5","course/week_1","course/week_2","course/week_3","course/week_4","course/week_5","exercises/12_12_if_statements","exercises/8-9_primitive_data","exercises/9a-9_variables_assignment","exercises/codingbat_arrays","exercises/codingbat_recursie","exercises/codingbat_strings","exercises/cone/index","exercises/debuggen_en_methoden","exercises/grote_getallen","exercises/hypotheek","exercises/nested_circles/index","exercises/objecten_maken_met_point","exercises/string_loops","problems/calculator/index","problems/class_design/index","problems/hello_world/index","problems/opgave-LocalDate","problems/opgave-OptionalInt","problems/recursive_graphics/index","problems/verhuur/index","support/install","topics/1a_inleiding","topics/1b_variabelen_en_operatoren","topics/1c_invoer_en_uitvoer","topics/2a1_methoden","topics/2a2_methoden_en_testen","topics/2b_condities_en_logica","topics/3a_lussen_en_strings","topics/3c_string_mystery","topics/4a_recursie","topics/4b_immutable_objecten","topics/5a_mutable_klassen_en_objecten","topics/5b_klassen_ontwerpen","topics/6a_collections","topics/6a_static_klassen","topics/9b_threads","topics/jars-importeren"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinxcontrib.bibtex":9,sphinx:56},filenames:["about/literatuur.md","about/syllabus.md","course/ex_1.md","course/ex_2.md","course/ex_3.md","course/ex_4.md","course/ex_5.md","course/week_1.md","course/week_2.md","course/week_3.md","course/week_4.md","course/week_5.md","exercises/12_12_if_statements.md","exercises/8-9_primitive_data.md","exercises/9a-9_variables_assignment.md","exercises/codingbat_arrays.md","exercises/codingbat_recursie.md","exercises/codingbat_strings.md","exercises/cone/index.md","exercises/debuggen_en_methoden.md","exercises/grote_getallen.md","exercises/hypotheek.md","exercises/nested_circles/index.md","exercises/objecten_maken_met_point.md","exercises/string_loops.md","problems/calculator/index.md","problems/class_design/index.md","problems/hello_world/index.md","problems/opgave-LocalDate.md","problems/opgave-OptionalInt.md","problems/recursive_graphics/index.md","problems/verhuur/index.md","support/install.md","topics/1a_inleiding.ipynb","topics/1b_variabelen_en_operatoren.ipynb","topics/1c_invoer_en_uitvoer.ipynb","topics/2a1_methoden.ipynb","topics/2a2_methoden_en_testen.ipynb","topics/2b_condities_en_logica.ipynb","topics/3a_lussen_en_strings.ipynb","topics/3c_string_mystery.ipynb","topics/4a_recursie.ipynb","topics/4b_immutable_objecten.ipynb","topics/5a_mutable_klassen_en_objecten.ipynb","topics/5b_klassen_ontwerpen.ipynb","topics/6a_collections.ipynb","topics/6a_static_klassen.ipynb","topics/9b_threads.ipynb","topics/jars-importeren.md"],objects:{},objnames:{},objtypes:{},terms:{"0":[13,14,18,19,20,21,22,23,25,26,27,29,30,34,36,37,38,39,41,42,43,44,45,46,48],"00":[12,21,39,44,46],"000":21,"001":44,"01":[12,39],"02":21,"02d":[39,44],"02f":46,"03":21,"036":44,"04":44,"05":48,"0625":30,"07":12,"1":[3,4,5,6,12,13,14,15,16,17,18,19,20,21,22,23,25,26,28,29,30,34,36,38,39,41,42,44,45,47],"10":[9,12,13,14,18,19,22,23,26,27,28,29,31,34,36,37,38,39,42,43,44,47],"100":[12,21,29,43,46],"1000":[29,41],"10000":21,"1000000000000000000000000000000000000002980":42,"1000000000000000000000000000000000000059600000000000000000000000000000000001687276000000000000000000000000000000030168494880000000000000000000000000000382083987655200000000000000000000000003643552906279987200000000000000000000027144469151785904640000000000000000000161781036144643991654400000000000000000783424667530438529586432000000000000003112807345654275757556756480000000000010203782479054715933271047741440000000027642974352348230437407020244992000000061782047677498295027604690247557120000113298770510119950266007370423212441600168815168060078725896350981930586537984201227680327613841268450370461259153277115393277305090389681244407492047586489270595756792745732058849019841482778291273451892540397046922561679854603113217987206357870566652613603558522812344988375773481082714431239426930219899039403267535772057600000000000000000000":42,"101":46,"106":12,"108":12,"11":[10,32,34,36,37,38,42,43],"12":[11,12,21,22,26,29,34,44,45],"120":41,"12000":29,"123":42,"124":42,"1245":21,"125":[30,37],"1253762":44,"127":[22,34,44],"1277":21,"128":[34,44],"13":[11,22,30,42,45],"130":27,"13e":30,"14":[11,13,36],"141592653589793":46,"143":27,"145000":21,"147":44,"147580":21,"149":[42,46],"1492072508":0,"1492078005":0,"14e23":13,"15":[12,20,23,31,38],"150":[21,46],"1500":46,"150000":21,"151":27,"1594":38,"16":[13,21,34,36,38,39],"17":[21,27],"17412":21,"1779271158425":27,"18":[21,28],"180":[31,34,35],"1800":12,"1867":21,"1899":21,"190":12,"1915":30,"1962":12,"1965":28,"197":21,"1988":28,"1999":[22,27,30],"1e":21,"1f":44,"2":[2,4,5,6,7,13,14,15,16,17,18,19,20,21,22,23,25,26,27,30,32,34,36,38,39,41,42,43,44,45,46,47,48],"20":[14,19,29,31,34,42,47],"200":[27,43,47],"2000":12,"2013":0,"2014":26,"2018":0,"2019":0,"2020":0,"2021":[22,27,30],"2023":28,"206":21,"20e":12,"21":[25,37],"21819":29,"21e":12,"22":[21,44],"2212":38,"223":44,"224":21,"2258":38,"23":[13,28,39,44],"238":22,"24":[12,21,28,39,44],"25":[23,28,30,43],"2500":[29,46],"255":27,"26":28,"27":12,"283533":21,"288":26,"291":21,"291000":21,"29e":21,"2_147_483_647":34,"2_147_483_648":34,"2e":[0,21],"2f":21,"2nd":0,"3":[2,3,5,7,12,13,14,15,17,18,19,22,23,25,26,27,30,31,34,36,38,39,41,43,44,46,47],"30":[12,20,21,29,43,44],"300":43,"30e":21,"3185":27,"32":[13,26,34,36,44],"320":12,"324555320336759":36,"32_767":34,"32_768":34,"33":[21,27,39],"339":21,"340":47,"34560":26,"348":21,"35":[27,35],"35000":13,"356":13,"360":21,"37":[12,21,36],"371":21,"372":44,"37lhg3":31,"38":[12,21,38],"39":21,"3n":39,"3x":14,"4":[3,8,13,14,18,19,21,22,25,26,30,31,34,36,37,38,39,41,43,44],"40":[14,27,31,34,36],"4000":46,"416":21,"42":[21,25,37,40],"423076923076923":27,"43":[21,40],"435":21,"4392156862745098":27,"44":21,"45":[30,38],"454":21,"47":38,"48":[12,27],"483":44,"49":27,"4901960784313726":27,"5":[5,8,12,13,18,19,21,22,23,25,26,28,29,30,31,34,36,37,38,39,41,42,43,48],"50":[21,29,43],"5000":21,"50000000000000000000000000000000000000000":42,"50000000000000000000000000000000000000149":42,"512":31,"53":21,"535":44,"53981633974483":37,"54":[19,34],"543":21,"553":21,"56":38,"562":21,"58":39,"59":[37,39,44],"59830":36,"6":[8,12,24,25,26,30,34,36,39,43],"60":[21,27,36,39,43,44],"62":[12,21],"622":21,"63":[13,34],"64":[13,34],"647":44,"648":44,"65":[21,27,44],"65000":42,"66":[21,39],"67":21,"67000":21,"694":21,"7":[14,18,22,23,25,26,38,41],"700":[31,47],"7217a610":41,"726":21,"73":21,"74":[21,27],"74466":21,"75":[12,21,27,29],"760":21,"767":44,"768":44,"775":44,"78":[19,36,37],"780":26,"79":[21,36],"8":[8,12,16,20,26,34,36,39,42,43,44,48],"80":[12,29],"807":44,"808":44,"81933":21,"854":44,"86":21,"87":27,"8901":21,"8x":14,"9":[9,20,25,26,28,41,42,43,44],"90":30,"937":38,"93888":26,"95":34,"960":21,"961":21,"97":21,"9747":36,"978":0,"979":21,"9812":24,"9823":24,"99":12,"994":21,"9999999999999999":34,"E\u00e9n":[19,25,35,36],"\u00e9\u00e9n":[13,14,18,21,22,23,25,30,31,32,34,36,38,40,43,46,47],"\u00e9n":[14,46],"\u00f3\u00f3k":43,"\u03c0":18,"abstract":31,"boolean":[21,23,24,26,27,34,42,44,45],"break":38,"catch":47,"char":[13,24,34,41,42,44,45],"continue":32,"debugger":37,"default":38,"do":47,"final":[22,44,45,46],"float":[26,31,34,42],"for":[0,7,8,9,10,11,18,20,21,39,41,42,43,45],"if":[18,20,21,22,25,26,27,28,39,41,42,44,45],"import":[18,22,23,32,35,41,43,45,47],"int":[13,20,21,22,23,25,26,27,29,30,31,34,35,36,38,39,40,41,42,43,44,45,46,47],"long":[14,26,28,34,42,44,47],"n\u00e1":39,"new":[18,21,22,23,26,27,28,30,32,35,38,40,42,43,44,45,46,47],"null":[29,30,31,38,43],"protected":21,"public":[1,13,14,18,19,20,21,22,23,25,26,27,28,29,30,31,32,33,36,37,38,39,41,42,43,44,45,46,47,48],"return":[18,19,20,21,22,23,25,26,29,30,31,35,37,38,41,42,44,45,46],"short":[13,34,42,44],"sierpi\u0144ski":30,"static":[1,13,14,18,19,20,22,23,25,26,27,28,29,30,32,33,36,37,38,39,41,42,43,48],"super":21,"switch":25,"this":[21,31,37,46,47],"true":[21,23,26,27,31,34,38,39,40,42,45],"try":47,"void":[1,13,14,18,19,21,22,25,27,29,30,32,33,36,37,39,41,42,43,44,46,47,48],"wac\u0142aw":30,"with":[18,22,30,32,46],Aan:[39,42],Al:12,Alles:32,Als:[0,12,13,14,18,19,21,23,25,26,27,28,29,31,32,34,36,38,39,41,42,43,44,45,46,48],Ben:27,Bij:[0,12,21,23,30,31,33,34,38,40],Dan:37,Dat:[21,26,33,38,42,46],De:[4,12,13,14,19,20,22,23,24,27,28,30,31,32,33,34,35,36,40,43,44,45],Die:35,Dit:[0,1,13,14,18,21,22,23,26,27,30,31,32,34,36,37,38,39,40,41,42,43,46,47],Een:[0,12,13,18,20,21,22,23,24,25,26,27,28,29,31,32,34,35,36,37,38,41,42,43,44,46],En:[35,37,40,41,44],Er:[12,21,23,26,27,29,31,33,34,35,36,39,42,43],Heb:27,Het:[12,13,15,16,17,18,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,39,40,41,43,46,47],Hier:[12,18,22,24,27,30,35,39,46],Hoe:[19,20,25,27,34,35,39,44],Ik:[27,37],In:[0,12,13,18,19,21,22,23,24,25,26,30,31,32,33,34,35,36,37,38,40,41,42,43,44,45,47],Is:[20,26,27,29,37,39,44],Je:[0,1,13,14,18,19,20,22,23,25,26,27,30,31,32,34,36,37,39,40,41,44,46],Kan:13,Men:24,Met:[13,18,21,23,29,30,31,35,37,38,41,42,43,46],Mijn:27,Moet:38,NIET:38,Niet:[23,47],Nog:[12,21],Nu:[32,39],Of:[33,36,38,39,42],Om:[0,21,24,27,28,29,30,31,32,33,35,36,40,43],Omdat:[31,38,42,47],Onder:[23,28,29],Ons:34,Ook:[18,19,24,25,31,33,34,38,42,43],Op:[0,13,20,22,28,33,34,42,44,47],Over:[28,39,40],Tot:[39,40,41],Uit:[18,25],Uw:[12,34],Van:[21,34,36],Wat:[13,18,21,23,25,27,28,29,34,35,37,38,43,44,47],Ze:[23,25,40],Zijn:14,Zo:[19,23,26,28,31,33,36,38],Zonder:38,Zou:[39,40],a:[0,7,13,18,19,21,22,25,26,30,31,34,36,37,38,39,41,46],aa:13,aanbied:22,aanbreng:26,aanbrengt:32,aanduid:[12,34],aangeeft:[24,28,34],aangegev:[18,28,31,32,37,38],aangemaakt:[18,39,40,46],aangepast:[20,21,26,43],aangeroep:[18,23,30,31,34,37,41,43,44,47],aangev:18,aangezien:[32,39],aanhalingsteken:[13,39],aankoopbedrag:12,aankop:12,aanlop:[20,22],aanmaakt:27,aanmak:[34,37,40,44,46],aannam:12,aannem:[27,30],aanpak:[25,30,38],aanpass:[21,30,33,47],aanroep:[19,21,22,23,25,29,30,31,35,36,37,41,42,43,46],aanroept:[19,22,30,39],aanschafprijs:31,aanschafprijz:31,aantal:[12,22,25,26,29,30,31,34,35,36,37,38,44,46,47],aantal_minut:36,aantaljar:38,aantall:[31,38],aantaltermijn:21,aanvull:[18,25,34,37],aanwez:[23,29,31,33,44,47],aanzien:[21,31],aard:27,aardglob:27,aardoppervlak:27,abecedarisch:24,abelmos:24,abl:18,about:[18,30],abs:44,absolut:18,absorbeert:27,accent:24,accept:24,accepteert:[19,20,22,24,27,30,37,44],accepter:[27,30,32,37],acces:[21,22,44],accessor:[18,44],accijn:24,accolad:34,accolades:[33,38],account:[15,16,17,46],acherligg:44,achter:[23,36,47],achteraf:18,achtergrond:[22,39],achterhal:42,actief:21,actually:18,add:[25,26,39,42,44,45],administratie:31,adres:39,adresser:33,adviser:37,adviseur:21,af:[21,23,26,27,28,37,38],afdruk:27,afdrukt:[12,27,30],afgedrukt:[23,29,30],afgeleid:27,afgellost:21,afgelost:21,afgeprijsd:12,afgerond:[19,36],afgeschermd:44,afgeteld:41,afgetrok:27,afhandel:[25,29],afhang:30,afhank:[12,21,22,27,31,38,41],afkop:24,aflegt:27,afleid:18,aflop:[24,26,27],afloss:21,afmet:18,afneemt:[21,39],afnem:31,afrad:37,afrond:14,afsluit:[32,47],afstand:[23,25,27,36,43],aftell:41,aftrek:[21,25,26,34,44],afvrag:34,afzonder:[18,35,38],again:40,age:35,agnost:24,aha:39,aim:18,alan:42,alejandro:27,alen:26,alfabetisch:24,algebraisch:27,algemen:[0,19,31,32,34,37,39,41,44],alias:43,alic:27,aliiien:41,all:[0,12,18,21,22,23,24,25,27,30,31,33,34,35,38,39,43,44,46,47],allclasses:43,allebei:38,allemal:[24,27,31,38,39],allen:[12,18,21,22,23,25,26,29,30,31,33,34,35,36,37,38,40,41,42,44,46,47],allereerst:[23,41],allerlaatst:27,alpha:30,already:37,alsmed:1,alsof:[34,47],alt:32,alternatief:[21,35],alternatiev:[0,22],althan:25,alvoren:32,amount:[14,46],an:[22,30,38],ananab:39,and:[0,7,8,18,22,25,26,27,30,46],ander:[12,13,14,15,16,17,18,19,21,22,23,25,26,27,30,31,33,35,37,38,39,42,43,44,46,48],andersom:[31,42],annotatie:18,annotaties:18,annuitair:21,anoniem:[31,32],antwoord:[20,25,27,28,34,39],any:30,anzehogeschol:41,apart:[18,27,40],api:[18,42,43],apparat:33,append:43,applicatie:[42,48],application:[19,37],approx:26,arccos:27,architectur:33,archiv:[22,48],are:18,area:[18,19,37],arg:[1,13,14,19,22,25,27,30,32,33,37,39,42,46,48],argument:[22,23,25,27,29,30,31,32,43,46],ariel:46,arithmeticexception:[26,34],arora:26,around:22,array11:16,array:[6,11,16,17,21,25,30,37,39,42,44,46],arrayindexoutofboundsexception:27,arraylist:[21,31,45],artikel:31,artistiek:30,as:[18,30,36],ascii:39,ascii_:39,ass:30,assert:18,assertequal:18,assertion:18,assign:[14,46],at:[7,22,30,34,38,42],auto:[12,31,32],autobox:42,automatisch:[18,21,23,32,44,47,48],automerk:31,averagefinder:19,awaittermination:47,awt:[22,23,43],aygo:31,b1:42,b2:42,b3:42,b4:42,b:[0,19,26,27,31,32,34,38,39,46],backslash:35,baeldung:34,balanc:46,balkj:48,ban:39,banana:39,bas:[18,22,27,38,41,42],baser:31,basic:[15,16,17],basis:[18,21,22,25,26,33,34,36,41,46,47],basisoperaties:35,batavus:31,be:[13,18,34],beantwoord:25,bedenk:[22,25,26,28,37,39,41],bedoel:[23,38,44,46],bedoeld:[21,30,31,32,35],bedrag:[12,21,29,31],bedrijv:48,beeindigd:39,beeld:[21,30,32],beetj:37,begeleid:0,begijn:24,begin:[23,30,31,38],beginn:[18,27,28,33,34],beginnersfout:[36,47],beginpunt:33,begint:[18,22,23,24,25,28,32,34],beginwaard:[25,39,41],begonn:39,begrijp:[0,14,27,40],begrijpt:30,begripp:21,behaald:31,behalv:[19,21,27,29],behandel:[18,34],behandeld:[0,19,33],beher:[18,44,45],behor:33,behulp:[20,21,26,27,31,38],beid:[12,21,22,23,34,38,39,43],beinvloed:43,bekek:25,bekend:[12,18,19,27,34],bekijk:[33,37,41],beknopt:24,beknopter:19,bekort:24,belang:[14,26,31,36],belangrijk:[14,26,27,33,34,35,42,44],belangrijkst:[23,28,35],belop:24,bemost:24,benader:[23,26,34,36,42],benadert:26,bened:[30,32],bennot:24,benodigd:21,bent:[0,18,27,30,32,41],benzin:[12,31],benzineauto:31,benzinemeter:12,benzinestation:12,benzinetank:12,bepaald:[0,13,18,20,21,22,23,25,29,31,34,36,37,38,41,42,44,45,47],bepaalt:[30,31],bepal:[12,18,22,39,43],beperk:[26,44],beperkt:[27,31,38,44],bereik:[26,34,37,38,39,41,43,44],bereikt:44,berek:[14,21,22,23,25,26,29,31,36],bereken:[14,19,20,21,25,26,30,36,43],berekenbreakev:29,berekenhuurprijs:31,berekenmaandlast:21,berekenmaandlastafloss:21,berekenmaandlastrent:21,berekent:[12,13,14,19,21,25,30,36],beriberi:24,bericht:18,berust:26,beschik:[21,23,32,33,36,42,43],beschref:30,beschrev:[18,27,41,46],beschrijft:18,beschrijv:[13,21,26,31,32,33,34],besliss:[12,33,38],bespar:12,bespreekt:16,besprok:[18,47],best:[30,35],bestaand:[21,38,42,43],bestan:[19,21,33,38,40],bestand:[18,22,26,27,30,32,33],bestandssystem:22,bestat:[21,34,36,43,47],bestell:12,bestookt:25,bestuder:[21,22,31,37],bestur:32,besturingssystem:[22,32,47],bestuurder:12,betaald:21,betal:21,beteken:13,betekenis:[13,27,29,32,36,37,38],betekent:[14,22,27,30,33,37,38,39,42,46],beter:[14,19,32,34,35,36,38,43,44],betreff:47,betreft:[0,39,44],betrek:21,betrouw:43,betweenx:23,betweeny:23,betwen:[23,28],bevat:[1,12,13,18,19,21,22,23,26,29,30,31,32,34,35,36,37,38,42,47],bevest:[30,32],bevind:[22,30],bevindt:[23,26,33],bewaard:[15,16,17,34,40],bewerk:[13,14,19,20,25,42,43],bewijs:39,bewijz:39,bewust:42,bezit:31,bezoekt:[15,16,17],bibliothek:[5,18,22,27,32],bied:[19,26,36,42,43,47],biedt:[29,31,32,37,42,44],big:20,biggest:22,biginteger:[20,26,43,44],bijbehor:[25,31,32,41,42],bijft:37,bijgeleverd:30,bijknop:24,bijkom:21,bijlop:24,bijnot:24,bijv:[32,40],bijvoorbeeld:[0,12,13,14,18,21,22,23,24,25,26,27,28,29,30,31,32,33,34,36,37,38,39,40,41,42,44,45,46,47],bijzonder:41,binn:[21,23,30,38,44,47],binnenkomt:35,binnenst:39,bit:[13,34],black:[22,27],blader:37,blastoff:[39,41],blauw:27,blauwdruk:[44,46],blibliothek:18,blijft:[26,44],blijkbar:[13,40],blijv:[15,16,17,21,30,43],block:[21,32,38,47],blog:34,blok:[23,33,38],blue:[27,30,46,48],bluej:31,bo:46,bob:[12,27],body:[30,37,39],boek:[0,16,18,19,20,24,27,30,31,37,40,47],boel:48,boem:30,bog:27,boilerplat:[27,32],bol:[27,34],bonbon:24,boodschap:27,bottom:30,bout:12,bouwsten:44,bouwt:44,bouwteken:46,bov:23,bovenin:23,bovenst:[30,33],bovenstaand:[13,21,23,26,32,33,34,35,38,43,44],box1:43,box2:43,box:43,bracket:32,brad:0,bradley:[12,13,14],brandon:0,brandstoftyp:31,breakpoint:37,breedtegrad:27,breid:[18,22,25,31],brek:[13,14],brengt:30,breuk:[26,34],bron:40,bruto:21,bug:19,building:0,buit:[23,26,43],buitenst:39,bundel:32,bureaublad:32,by:[30,34],byt:[34,42,44],bytecod:33,bytes:44,c1:47,c2:47,c3:47,c:[18,19,26,27,31,33,34,35,39],cach:40,calculat:18,calculatearea:[19,37],calculatedistanc:43,calculator:25,calling:30,camera:27,cannot:[13,18,34,46],canvas:22,capra:26,carol:27,cas:[22,38,41],cast:[31,34,39,43],categorie:19,ccw:30,cdot:[20,26,37],ceil:29,cent:12,center:[22,43],centimeter:36,centred:22,centrum:22,ch:[13,42],chained:38,chanc:12,changes:18,chantal:27,charassassination:13,charat:[34,39,41,42,44,45,46],check:[31,34,38],checked:47,checkt:34,child:21,chintz:24,chlor:24,choic:42,chooserandomnam:42,chris:0,chrismayfield:0,chronounit:28,cijfer:[12,27,34,35,36,42],circl:[19,22],circles:22,circular:18,cirkel:[36,37,48],cirkelbog:27,clas:[1,13,14,18,19,21,22,27,30,31,32,33,37,39,42,44,45,46,47],classes:[10,11],classpath:[22,30],client:46,clientcod:26,cmyk:27,cod:[0,13,18,19,21,23,24,25,27,30,31,32,34,35,36,38,39,40,43,46,47,48],codefragment:0,codegrad:31,codingbat:[3,5,6],coer:32,collatz:39,collectie:[25,36,44,45],collecties:21,collection:[31,34],colleg:25,color:22,colour:46,com:[0,42,43],combinatie:[22,23,34],combinaties:34,combineert:[34,41,44],combiner:[34,35],combo:42,command:[22,25,27,30,32,35,37],commandlin:[32,37,46],commando:32,commandoregel:[22,27,32],commentaarregel:33,commentar:[32,33],common:26,community:32,compar:31,comparabl:31,comparator:31,compareto:31,compatibl:38,compilatie:32,compilation:[13,37],compileerfout:[32,34],compileert:[13,33,48],compiler:[13,14,18,26,27,32,35,36,37],compilereert:13,compileropties:32,complet:47,complex:[15,30,38,44],complexer:[34,35],complexiteit:[44,47],compositie:[21,25],computer:[0,7,27,31,32,39],computergeheug:13,computerhardwar:33,computersystem:12,concatenatie:34,concatenation:23,concentrer:18,concept:[0,19],concern:25,concret:[37,41,46],concurrent:47,conditie:[38,39,41],condities:[3,33],conditional:8,conditionel:[25,37,38],conetest:18,configur:22,configuratie:[22,37],consol:[23,32,33,35,47],constant:[13,22,36,40,45,46],constructie:[30,38],constructor:[18,21,26,28,31,46,47],contant:36,contextuel:22,continu:27,contitional:8,contrasteert:30,control:[25,31,44],controleert:[12,24,31,39],controler:[12,13,14,21,23,25,31,32,38,40,41,42],conventie:[18,22,44,46],conventies:23,convert:13,converted:[13,34],converteert:27,converter:[20,27,30,35],coordinat:[22,23,25,30,36,43],coordinatenbepal:22,copyofrang:41,copyright:[12,13,14,22,26,27,30],correct:[12,13,14,18,19,20,21,22,23,25,30,34,36,43],corresponder:27,cos:[19,27,30],cosinuss:27,countdown:41,counterclockwis:30,cour:32,couscous:24,cp:[22,30],creat:30,createstartpoint:43,creativiteit:30,creeert:21,cryptisch:44,cs:0,ctrl:32,cub:37,cubemethod:37,cursus:[0,14,18,27,30,32],cursuss:37,cx:30,cy:30,cyaan:27,cyan:[22,27],d222:36,d:[21,26,28,31,35,36,40,46],d_x:30,d_y:30,daadwerk:[12,21,34,47],daarbij:[31,47],daardor:[21,31,33,34,46],daarin:[23,29,48],daarmee:[14,21,22,34,42],daarna:[30,33],daarnaast:[21,47],daarom:[21,31,33,38,42,43],daarop:[28,39],daaruit:21,daarvan:[23,26,28,31,34,35,36],daarvor:25,dag:[28,39],damesfiet:31,dar:[0,14,18,20,23,34,37,39,41,44,48],data:[5,7,9,18,39,41,46],datatyp:[2,21,27,29,31,34,35,36,44],datatypes:[23,34,35],datum:[12,28],dav:27,day:28,dd:28,death:12,debug:19,debugg:37,december:28,decimal:14,declar:[14,25],declaratie:[14,21,37],declaraties:[14,34,37],declarer:[14,37,42],decrementatie:39,decrementer:39,deeghouw:24,deelbar:26,defin:[10,11],defined:37,definieer:27,definieert:21,definier:[18,30,44],definitie:[20,21,23,33,36,37,46],degres:30,deinor:24,dekkop:24,dekmos:24,del:[13,19,21,25,26,33,34,39,47],deler:26,deling:[25,26],delta:44,deluxeordered:27,demonstreert:27,denk:[22,25,26,30,34,39,41,44,46],denkbar:29,denkfout:34,denkt:33,denominator:26,depaul:0,dependecy:48,deposit:46,derd:[27,28,34],derdeletter:34,dergelijk:48,deshi:27,design:10,desktop:43,detail:[22,26,44],development:[18,32],dez:[0,13,14,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],dezeld:39,dezelfd:[14,18,26,27,29,30,31,34,39,40,44],diagram:[42,43],dialoogvenster:32,diameter:[19,36,37],dient:[21,23,33,43,47],diept:[22,30],diesel:31,digital:27,dikkop:24,dikor:24,dikwijl:33,dimensie:[18,30],dimensional:23,ding:[14,40],dinsdag:28,direct:[33,36,38,41,43,44],direction:30,directly:30,directory:[18,22,32],directorystructur:18,discounter:12,discountprices:12,discrepantie:27,discussie:0,displaynam:18,distanc:[23,27,36,43],div:[26,27],divid:[25,26],divisor:26,dm19:[0,27],doc:[42,43],documentatie:[18,19,22,28,29,33,36,37,43,48],dodo:24,doe:[31,34],doel:[18,19,22],doet:[13,19,21,38,40,44],don:[18,37],doordat:[12,21,36,38,42],doorenvest:36,doorgegev:[30,37,43],doorgev:[37,43],doorloopt:39,doorlop:[24,37],doornem:41,doorvoer:26,dor:[0,12,18,19,20,21,22,23,24,25,26,28,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,48],doubl:[13,14,18,19,20,21,22,23,25,26,27,29,30,34,36,37,38,42,43,44,46],doublejeopardy:13,downey:0,download:[18,22,30,32,48],downloadt:27,draai:[32,33],draw:[22,30],drie:[14,19,23,27,30,34,36,38,39],driekwart:12,driv:18,druk:[13,26,27,28,34,39,44],drukt:27,dsquar:36,dubbel:[14,21,22,25,27,31,35,38],duid:12,duidelijk:[38,44,47],duidelijker:32,dumdum:24,duplicat:[21,36,38],duplicatetext:43,duplicatetext_sb:43,dur:[31,32],duurt:[28,31],dwing:26,dx:[30,36,43],dy:[30,36,43],e:[13,19,26,31,32,47],each:[22,30],echt:40,echter:[22,23,26,30,31,33,34,36,38,42],edition:[0,32],editor:[21,23],edu:0,eeen:18,eenheid:29,eenmal:[34,35,39,45,46],eenor:24,eenvoud:[18,19,21,22,26,28,30,32,33,38,42,43,45,47],eenvoudiger:[38,42,43],eenvoudigst:44,eerder:[23,25,26,32,34,37,39,40,44,46],eerst:[0,13,14,18,19,21,22,25,26,27,28,30,31,32,34,35,37,38,39,40,41,43,47],eerstvolg:28,eeuw:[12,30],effect:[35,42,43],efficient:[26,43],efficienter:[20,43],efficientie:[38,40],effort:24,eig:[25,27,31,43,46],eigen:[35,40,41],eigenschap:[26,42],eigenschapp:[21,42,43],eind:[21,38,39],eindelijk:[32,40],eindelos:39,eindig:[33,41,42],eindigt:[24,39],eindresultat:36,eindwaard:25,elektrisch:31,element:[32,37,42,45],elisabeth:0,elk:[13,14,21,22,23,24,25,26,27,28,30,31,32,33,35,37,39,41,43],elkar:[0,25,27,31,34,36,38,40,44,47],els:[22,25,27,28,39,41,42],embellishment:22,empty:29,ene:[21,41],enen:24,eng:37,engel:[23,28],enig:[21,34,37,39],enigszin:29,enkel:[13,22,24,26,30,37,38,39,44],entry:[27,36,37],environment:32,enzovoort:[12,30],equal:[23,26,31,39,40,42],equally:22,equilateral:30,equivalent:27,erg:[30,31,41],ergen:[27,37,48],eric:0,ernstig:23,erop:26,error:[13,14,35,37],eruit:33,ervan:27,ervor:[30,31,34,46],essentie:37,etc:[39,43],eur:21,euro:[21,29],europ:44,europes:28,evaluer:40,even:[20,37,39,48],eventueel:[27,29,31,32],eventuel:0,evenvel:12,exact:[23,30,31,36],exception:[13,27,47],exclusief:39,executor:47,executorservic:47,exp:[13,19],expectation:18,experimenter:[14,30],expliciet:[21,37,40],exponent:21,exponentialexplosion:13,expressie:[37,38,39],expressies:37,expsum:19,extend:[11,18,21],extensibl:0,extensies:32,extension:32,extern:[18,22],extra:[12,21,30,31,38,40],f:[31,35],faalt:18,factor:30,factorial:[20,41],faculteit:[26,41],fail:18,failed:37,failing:18,failur:18,fal:[18,21,23,26,27,31,34,38,39,40,42,44,45],famous:30,fancycircl:22,fancysquar:22,feest:28,feit:40,feitelijk:34,fib:42,fibonacci:[18,42],fiet:31,fiets:31,figur:[22,30],fijn:[32,34],fil:[27,32,48],fill:22,filled:30,filledcircl:22,filledpolygon:30,filledtriangl:30,financieel:21,financier:21,find:18,findcenter:43,first:[0,19,37,41],firstpart:34,fit:30,flexibeler:[31,45],flexibiliteit:[31,43],floating:[13,19,35],floatingpoint:34,floppy:24,format:[27,28,32,35,44,46],formatteert:32,formatter:[32,44],formul:[14,18,21,25,27,30,37,38],formuler:23,formules:27,four:[30,38],fout:[12,13,18,19,23,26,27,35,37],foutbericht:32,foutmeld:[12,32,42],foutsoort:34,fpl:0,fr20:0,fraai:0,frac:[18,19,26,27,30],fractal:30,fractie:[21,25],fracties:44,fram:31,frames:41,framework:18,freeman:0,from:13,fruit:39,frustratie:40,fuctionaliteit:0,fulfill:18,functie:[12,14,30,33,36,37,41,43],functies:[14,23,27,30,32,33],functionaliteit:[22,25,32],functioneert:31,fysiek:[41,47],g0:42,g1:42,g2:42,g:27,ga:[18,19,22,25,26,30,32,41,45],gam:[23,45],gameword:45,gan:[18,20,21,22,32,37,41,44],gangbar:23,garantie:44,garbag:34,gas:12,gat:[13,18,19,22,25,26,28,29,30,31,32,34,35,39,40,42,44,46,47],gcd:26,geaccepteerd:18,geavanceerd:[23,25],gebaseerd:34,gebeur:[21,23,33],gebeurd:31,gebeurt:[13,21,22,26,30,31,35,39,43,46,47],gebeurteniss:32,gebond:[40,44],geboortejar:12,gebor:38,gebouwd:46,gebruik:[0,13,14,18,19,20,21,22,23,25,27,30,31,32,33,34,35,36,37,38,39,40,41,42,44,46,47],gebruiker:[12,14,25,32,35,38,39,44],gebruikersinteractie:31,gebruiksstatistiek:32,gebruikt:[0,1,12,13,18,19,20,21,22,23,24,26,27,29,30,31,32,33,34,36,37,38,39,40,42,43,44,46,47],gecentreerd:22,gecombineerd:[34,35],gecompileerd:[13,18,33,34,40],gecontroleerd:18,gecorrigeerd:44,gecreeerd:18,gedan:[21,23,29,31,37,40],gedeclared:34,gedeclareerd:[14,21,34,37],gedeeld:[21,34,39],gedeelt:32,gedefineerd:22,gedefinieerd:[18,21,22,23,24,25,30,36,37,40,46],gedocumenteerd:23,gedownload:[27,48],gedrag:[18,21,26,40,43],gedur:[21,27],gedwong:27,geeft:[18,21,22,23,25,26,28,30,31,34,35,36,37,42,43,44,46],geevalueerd:[38,39],gef:[18,23,25,26,27,31,32,37,42,47],gegan:37,gegenereerd:[30,31],gegev:[14,18,22,23,25,26,30,31,34,37,43,46],gegeven:[13,30,31,33,42,43],gegevensbestand:32,gegevenstyp:27,gehandelt:22,gehel:[12,13,19,20,21,22,23,26,27,29,30,38,44,47],geheug:[12,13,39,40,42,43],geheugenbeher:42,geheugenlokatie:44,gehoud:44,geimplementeerd:[18,21,23,25,26,30,31],geimporteerd:23,geincrementeerd:39,geinitialiseerd:[14,34,37,47],geinitialisereerd:[34,39],geinstalleerd:[18,32],geinstantieerd:21,geinteresseerd:[14,39],geinterpreteerd:33,geintroduceerd:41,geisoleerd:26,gekek:38,gekoz:[21,25,34,35,38,42,44],gel:27,gelang:12,geld:[30,46],geldig:[25,29,38],geldt:[19,26,38,42,43,44],geled:28,geleerd:0,geleg:41,gelez:35,gelijk:[12,14,18,19,21,23,25,26,31,38,40,41,44],gelijkheidsoperator:40,gelijktijd:47,gelijkwaard:[27,38,40],gelijkzijd:30,geluid:30,gemaakt:[0,18,21,22,23,25,26,28,29,33,34,35,36,38,42,43,44,46,47,48],gemak:[21,26,30,36,44],gemakkelijker:[36,38],gemeenschapp:31,gemen:26,gemiddeld:29,gemuteerd:30,gen:[12,13,18,19,21,22,25,26,27,28,30,31,32,33,34,35,38,39,40,42,43,44,46,47],geneg:24,genegeerd:31,genereert:[25,31,32],generer:[22,25,30],generiek:[29,31],genoemd:[13,21,23,34,35,36,39,40,41,42,43,44,47],genom:29,geometrisch:22,geopend:18,geoptimaliseerd:31,georienteerd:[33,42],geplakt:23,geprint:[13,41],geprogrammeerd:38,gerealiseerd:[21,23,31],gereedschap:37,gereedschapsvenster:32,gerepresenteerd:[13,24],gereserveerd:[29,36],geretourneerd:29,gericht:30,gescheid:[31,36,37,38],geschikt:[25,28,32],geschrev:[12,18,19,26,32,36,38,46,47],geslaagd:39,gesorteerd:31,gespecialiseerd:32,gespecificeerd:[18,30,32],gesprok:[29,40,42,43],gesprong:44,gestart:[37,47],gesteld:42,gestopt:34,gestort:46,getal1:42,getal2:42,getal3:42,getal:[12,13,20,22,25,26,29,34,35,38,39,41,42],getalklas:26,getall:[4,13,14,19,23,25,29,30,38,40,41,42,44],getalstr:42,getautos:31,getbalanc:46,getbedrag:21,getbeschrijv:31,getdayofwek:28,getek:22,getest:[18,25,36,39],getfiets:31,getheight:18,gethour:44,getlooptijd:21,getminut:44,getpointbetwen:43,getradius:18,getrentepercentag:21,getresterendbedrag:21,getresterendelooptijd:21,getsecond:44,getter:[21,23,31],getx:[23,43],gety:[23,43],getypeerd:37,getypt:39,gev:[13,18,22,25,26,27,29,30,31,34,35,36,38,39,42,43,44],geval:[12,13,18,19,21,22,23,25,26,29,30,31,32,34,36,37,38,39,41,42,43,44,46,47],gevall:[12,29,38,42],gevoel:14,gevolgd:30,gevorderd:32,gevraagd:[28,43],gevuld:[22,30],gewaarschuwd:38,gewacht:47,gewass:34,gewenst:[25,31,32,34,36],gewerkt:[31,32,36,38],gewijzigd:[22,34,42,43,44,45],gewon:[25,27,48],gewoont:23,geword:[14,38],gezegd:[33,37,42],gezet:[0,14,22,26,31,44],gezien:[23,34,37,40,41,44,46],gezorgd:18,ggd:26,github:0,giv:30,gives:18,glossy:24,goed:[0,14,19,21,23,25,27,30,32,34,35,38,39,40,41,48],goniometrisch:30,gooit:47,grad:[27,30],gradl:48,grag:25,gray:22,greatest:26,greenteapres:0,greeter:37,gren:27,grenz:39,gret:34,grijz:32,groei:45,groen:[18,27],groep:[25,34],groeper:[33,36],grondtal:13,groning:[34,35,36],grootcirkel:27,grootcirkelafstand:27,grootcirkelnavigatie:27,grootst:[13,26,30],grot:[4,13,14,22,27,30,31,40,42,44,45,47],grotendel:21,groter:[13,19,20,21,25,26,31,38,41,42,44],grow:43,guessletter:45,guid:[0,31],guru:0,h:[18,30,41],ha:[34,39],haakj:32,haakjes:[23,34,35,36,38],hadden:23,hahahahahahahahahaha:34,hak:25,hal:[12,33,44],halfradius:22,hallo:[34,35,39,40,44],halveert:30,hamantasch:30,hand:[21,29,34,39,40,42,48],handel:[13,22,26,39],handig:[15,16,17,25,29,30,32],hangt:[23,38],hannah:24,hanz:[22,28,34],hanze_orang:22,hanzehogeschol:[0,35,36,41],hard:14,harder:[15,16,17],hardwar:[19,33,47],has:[21,30,44],hashcod:31,hashset:31,hausdorff:30,head:0,header:32,hebb:[13,18,21,22,25,26,29,30,31,33,34,35,36,37,39,40,41,42,43,44,46],hebt:[0,18,19,25,26,27,30,31,32,34,37,44,46,48],heet:40,height:[18,30,43],heigth:18,hel:[33,34,37,39,40,42,44,46],helas:25,helemal:23,helft:[22,37],hello:[1,34,35,37,40,44,46],helloworld:[1,32,37,46],help:[0,12,18,32,34,39],helpt:13,henk:35,hercompiler:32,herenfiet:31,hergebruik:42,hergebruikt:37,herhaald:[36,39,41],herhal:[22,33,34,36,39,41],herinner:[41,43],herkenn:[19,22,26,36,46],herkent:22,hernoem:[21,31],herschrev:[18,38,39],herschrijf:[20,23],hetzelfd:[18,20,21,30,31,38,39,40,43,44,46],hi:[27,46],hierbov:[21,26,30,39,46],hierdor:37,hiermee:[32,47],hieronder:[27,28,30,32,35],hiervan:[26,33],hiervor:[31,34,35],highlight:32,hint:[21,23,30],hmm:40,hoef:[22,37],hoeft:[22,30,31,35,36],hoek:[27,30],hoekpunt:30,hoeveelst:42,hoevel:[28,31,34,39,41,43],hoewel:[0,21,23,29,30,31,33,38,43],hog:[20,31,38],hoger:[29,32,38,47],hoi:43,hoihoi:43,hoihoihoi:43,hoihoihoihoihoihoihoihoihoihoi:43,hoofd:25,hoofdletter:[22,24,33,34,36,44,46],hoofdlettergevoel:33,hoofdmethod:30,hoofdstuk:[7,8,9,10,11,19,20,24,25,27,45],hoofdtak:30,hoofdvenster:32,hoogst:[13,41],hoogt:[18,30,36],hoopt:25,hoorcolleg:1,hoort:[31,35],hor:34,horizontal:36,houd:[20,21,31,37],houdt:[29,36],hour:[14,37,39,44],hoursworked:14,hous:46,how:0,html:[0,42,43],https:[0,39,42,43],huidig:[12,21,22,39,42,48],huis:[21,46],huisnummer:46,huiswerk:1,hulp:[22,29],huurauto:31,huurfiet:31,huurprijs:31,huurvoertu:31,hypotheek1:21,hypothes:18,i:[0,1,37,39,41,42,43,45],ide:[18,22,32,37],idea:32,ideal:[29,44],idee:[19,27,34,37,41],ideeen:30,identiek:31,identiteit:39,ieder:46,iederen:27,iet:[13,14,21,30,35,37,39,40],ii:[0,1],ijzerwar:12,imlementeert:47,immer:[21,29,34,35,41],immutabl:[9,44],implement:[18,47],implementatie:[18,19,21,23,25,26,30,31],implementaties:21,implementeert:[26,31,47],implementer:[18,21,25,26,27,30,31,47],impliciet:[21,34],important:18,importer:[18,32],inclusief:[0,30,37,39],incompatibl:[13,34],incorrect:21,incrementatie:39,incrementel:30,incrementer:39,indel:30,indent:32,inderdad:[26,39],index:[0,39],indexer:32,indien:[18,21,32],indigo:27,individueel:32,individuel:41,indruk:22,info:31,informatica:[33,39],informatie:[18,23,27,31,32,34,39,44],infrastructur:32,ingebouwd:32,ingeleverd:31,ingelez:35,ingesteld:32,ingevoerd:[12,38],ingevuld:[21,34],ingewikkeld:21,inging:24,inherent:34,inhoud:[12,18,23,36,42,47],initial:30,initialis:25,initialisatie:39,initialisaties:14,initialiser:[14,26,37],initiel:[22,41],inleid:[26,37],inmiddel:46,innem:43,innerclas:31,input:[7,25,27,30,33],inricht:37,insid:30,inspecter:[37,40],inspectie:32,inspring:[32,33,35],installatie:27,installatiestapp:32,instanc:23,instantie:[18,19,23,26,31,35,40,46,47],instanties:[23,28,29,40,46],instantievariabel:47,instell:[22,27,32,35],instructies:[27,32,33],instrueert:34,integer:[22,23,25,27,29,30,31,34,35,37,42,43,46],integrated:32,intellij:[13,18,19,21,22,23,27,37,48],interactie:[35,38],interactief:41,interactiev:0,interessant:[0,18],interfac:[26,31,47],internet:48,interpreter:[33,36],interruptedexception:47,introducer:18,introductieopgav:2,inver:38,inverted:30,inverteert:38,inverter:38,invoer:[25,30],invoert:[35,38],invoerwaardes:29,inzend:30,inzicht:[21,39],inzit:31,isabecedarian:24,isactief:21,isafter:28,isbn:0,isclos:23,isdoublon:24,isempty:42,ismanager:34,iso8601:28,it:18,italiaan:30,iteratie:[39,41],iteratief:[26,41],iteratiev:20,iteration:8,j:37,jaarlijk:21,jaartall:28,james:0,jans:36,januari:28,jar:[12,21,22,28,30,38,48],jargon:27,java4python:0,java:[0,7,8,9,10,11,12,13,14,18,19,20,21,22,23,25,26,29,31,35,36,37,38,40,41,42,43,45,46,47,48],javac:[13,26],javaexampl:35,javas:[42,43],javascript:[33,34],jdk:32,jetbrain:32,jezelf:18,jij:[18,19,32,41],jojo:24,jou:[18,22],jouw:[13,15,16,18,20,22,25,26,31,32,44],jriely:0,juist:[20,27,28,29,30,37,38],juni:28,junit:18,jupiter:18,jvm:[23,39,40],k:27,kaartspell:45,kalenderjar:28,kamer:36,kamernummer:36,kampioenschap:28,kant:38,karakter:[13,24,34,35,41,44],kattenjar:38,keert:19,kegel:18,kegelvorm:18,ken:44,kenmerk:21,kenmerkt:[18,21],kenn:[14,18,25,44],kennis:26,kennisgemaakt:[37,44],kennismak:[18,19,23,27],kent:[13,25,34],kentek:31,ker:[14,15,16,17,21,22,23,24,25,30,31,32,35,36,39,40],kerker:24,kerstdag:28,ketting:38,keus:25,keuz:[14,25,38,42],keuzemenu:25,kevin:[22,27,30],keyword:[21,23,28,33,36,37,40,43,44,46],kies:[18,27,32,37],kiez:30,kijk:13,kijkt:[19,25],kilometer:12,kit:32,kjel:[12,13,14],klar:[30,32,47],klas:[4,19,22,25,30,31,32,33,35,37,40,44,46,48],klass:[5,22,23,25,27,31,33,36,42,43,46],klassetyp:34,klassiek:41,klasss:36,klassw:31,klei:30,klein:[13,14,27,31,33,34,36,37,47],kleiner:[12,23,25,36,38],kleinst:26,kleur:[18,22,27,30,32,46],kleurmeng:27,klik:[32,37,48],klikt:32,klok:[30,39],klopt:[29,38],knop:24,know:18,koekj:30,koer:27,kom:[31,34,35,37,38,47,48],komma:[22,36,37],komt:[18,21,22,27,30,32,33,34,36,39,40,41,42,43],kond:44,koning:24,kopie:[21,30,40],kopieen:40,kopieert:30,kopier:14,kopj:23,kort:[18,19,21,30,37],korter:[31,38],kortom:21,kortst:27,kortweg:40,kost:[12,29],kostenperen:29,kostprijs:29,kotlin:34,krachtig:32,krijg:[14,18,21,22,27,31,32,34,39,44,47,48],krijgt:[26,30,31,38,41,43],krimp:45,kruid:34,kun:[14,20,23,26,28,31,32,34,36],kunn:[13,18,19,21,23,24,25,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],kunst:30,kunstproject:30,kunt:[20,23,27,30,32,34,36,40,48],kwadradisch:14,kwadrat:36,kwestie:[34,37],laatst:[12,13,19,26,34],lag:31,lager:[21,38],lala:24,lancer:41,lang:[13,21,24,26,27,30,34,38,39,42],langslop:22,lapaugh:26,larg:13,largest:[30,41],last:[12,21,29],lastchancegas:12,lastig:[19,36],lastiger:21,lastigst:34,lat:[14,18,20,22,31,32,33,35,36,37,40,48],later:[14,26,33,34,35,37],layout:30,lcd:27,ldot:30,leeftijd:[12,35],leeftijdkat:38,leeftijdkat_mensenjar:38,leeftijdkatnaarmen:38,leesbaarder:36,leesbar:[33,36,38,41,43],leest:[18,25,33,35],left:[20,27,30],leg:[35,37,39],leidrad:32,lengt:[22,25,30,45],lengtegrad:27,length:[22,25,30,39,41,42,45,46],lening:21,leningdeel1:21,leningdeel2:21,leningdel:21,leq:19,ler:[14,34,40],les:[14,18,22,25,27,34,39,46],let:[7,13,21,26,30,32,34,37,39,46,47],letter:[24,33,34,45],lever:31,levert:[34,39],lez:[18,19,23,25,33,35],lib:[22,30],libraries:[32,48],library:36,licht:[18,22,27,38],lichtgrijz:22,liever:26,lift:32,liggend:39,light:38,ligt:[12,21,30],lijk:[39,44],lijkt:[23,35,37,47],lijnvermenigvuld:30,lijst:[21,30,31,37,42],lik:0,likely:22,lin:[22,25,27,30,32,35,37,48],linair:21,liner:30,lingo:45,link:[22,23,32,41],linkerkant:22,linksbov:48,liter:12,literal:44,localdat:4,locatie:[32,43],log:19,logaritm:13,logic:[8,15],logica:37,logisch:[0,19],lok:7,lokatie:[18,22,26,39,44],lokaties:[18,22,26],loopt:28,looptijd:21,lop:[8,15,17,23,27,31,34,37],lopend:21,los:[14,18,33],loss:21,losser:23,luchtvaart:27,lus:[20,24,41],luss:[3,19,41],lustrum:28,m:[27,34],maakt:[0,13,18,21,22,23,29,30,31,33,38,39,40,42,43,44,47],maand:[21,28],maandbedrag:21,maandelijk:21,maandlast:21,machin:[33,40,41,43],machinecod:33,macht:[13,19,20,39],mag:[25,26,27,30,32],magenta:[27,48],main:[1,13,14,18,19,21,22,23,25,27,29,31,32,33,36,39,42,46,47,48],maintainabl:0,mak:[13,14,15,16,17,18,19,20,21,22,25,27,28,29,31,34,35,36,37,39,40,42,43,44,46,47,48],makkelijk:46,mama:24,manager:48,manier:[18,23,26,29,31,32,33,34,37,38,40,41,42,44,47],map:27,mapp:27,mar:[0,13,18,19,21,22,23,24,25,26,27,28,30,31,32,33,35,36,37,38,39,40,41,42,43,44,46,47,48],marker:32,matching:[19,32],materiaal:[0,1],math:[13,19,21,25,27,29,30,37,42,43,44,46],mav:[18,48],max:27,max_width:46,maximal:[42,47],maximum:27,maxvalue:47,mayfield:0,meaningful:18,media:0,medium:[15,17],mee:[18,22,23,26,28,29,39,42,47],meeest:13,meegegev:[23,31,34,36,42,43,44,46],meegeleverd:[23,31],meegev:30,meerder:[18,21,22,23,35,36,38,39,42,43,44,47],meest:[18,21,23,26,31,32,34,38,41],meestal:[35,38,43],meestel:38,meestvoorkomendeautomerk:31,melding:47,mener:36,mens:[18,40],menu:[25,32],menukeuz:25,menuoptie:32,mer:[12,18,20,21,22,23,25,27,29,31,32,34,37,38,39,42,43,44,45,46,47],meridiaan:27,merk:[26,30,31,44],merkbar:31,merkwaard:29,messag:34,method:[8,18,20,21,22,24,26,28,29,30,31,33,34,35,38,39,40,41,42,43,46,47],methodenam:26,methodes:[25,28,29,30,31,33,35],methodiek:18,middag:34,middel:[21,23,33,38,48],middelpunt:22,middennacht:36,mijl:27,miles:27,miljoen:31,millennium:12,miller:0,millisecond:47,mimi:24,minder:[21,36],minimal:[29,47],minimum:31,minsten:12,minut:[32,36,37,39,44],mis:34,misja:[37,46],misluk:40,mislukt:32,mismatch:13,misschien:[0,13,18,19,22,25,32,34,37,39,44],missing:37,mit:30,mix:[38,46],mm:28,model:38,modern:47,modifier:[21,22,44],modul:[27,48],modulair:[26,30],modulo:34,moeilijk:[21,33,39,42],moeilijker:30,moeit:[19,37],moer:12,moest:21,moeten:[12,18,19,21,22,25,26,27,29,30,31,32,33,34,36,37,38,39,40,41,44,46],mog:44,mogelijk:[19,21,23,25,28,29,31,34,35,36,38,39,41,42,43,44,47],moment:[18,32,34,36,37,43],monster:23,mooi:[28,42],mor:15,mov:23,mr13:0,multiply:[25,26,42],mutabl:9,mutated:30,mutator:[18,44],muter:30,myhous:46,mystery:39,n3:31,n:[19,20,21,22,23,26,29,30,35,39,41,42,43],naamev:44,naarmat:[18,21,32],naast:[0,22,26,29,34,36,37,38,41,44],nadat:[18,26,39],nadel:[27,34,38,43],nader:25,nam:[13,18,22,23,27,31,32,33,34,35,36,37,42,44,46,47],namelijk:[22,25,41],names:42,nameupper:42,nan:[30,39],nana:39,napier:13,nar:[0,12,13,14,18,19,20,21,22,23,25,27,28,30,31,32,33,34,35,36,38,39,40,41,42,43,44,48],natur:[13,14,25,34],nautical:27,nauwkeur:26,nauwkeuriger:[26,36],naviger:48,necessary:18,ned:18,nederland:28,nee:[19,22,31,37,39],neemt:[0,19,30],negatief:[12,29,31,38],negatiev:[14,18,21,26,31,38],negative_infinity:30,neger:[24,32],nem:[12,21,23,25,35,36,37,38],nen:[24,35],ner:48,nested:22,nested_circles:22,nestedsquares:22,net:[23,29,43,44,45],neveneffect:21,never:18,newfixedthreadpol:47,newlin:37,next:38,nextint:[35,38,42],nextlin:35,nhet:35,niemand:39,nieuw:[14,18,19,21,23,26,30,32,34,35,37,38,40,42,43,44,46,48],nieuwjaarsdag:28,nik:37,nis:35,niveau:[22,27,30],nl:[39,42],nmogelijk:35,nodig:[18,21,25,26,27,30,31,32,35,38,42,44,46,48],noemer:[26,34],nogal:43,nogmal:[13,14],nom:35,non:29,noodzak:[21,39,44,47],nooit:44,normal:[29,40],nosuchelementexception:38,not:30,notatie:[13,40,44],now:28,nox:16,nul:[14,20,26,27,34],nullpointerexception:42,number:[13,38,41,46],number_on:40,number_three:40,number_two:40,numerator:26,numeriek:[24,26,34,35,39,41,42],numis:41,nummer:36,nuttig:[30,32,44],o:0,object:[0,9,11,18,21,25,26,30,31,33,34,35,39,44,47],objectcontext:46,objectgeorienteerd:[0,1,26],objecttyp:34,objectwaard:40,observer:13,obv:21,oefen:[13,14,15,16,17,19,22,25,27],oefenopgav:1,off:34,oftewel:[18,37],ofwel:27,oject:43,ok:[12,32,48],oktober:28,omgat:26,omgedraaid:35,omgekeerd:[27,30,37],omgezet:[18,25,33,34,42],omging:23,omlijnd:30,omreken:38,omschrev:38,omschrijv:31,omslacht:[25,38,44],omtrek:[12,30],omvang:34,omweg:29,omwill:38,omzet:[27,37],onafhank:47,onbedoeld:[42,43],onbepaald:34,onbeperkt:38,ondank:21,onderan:[32,37],onderbouw:21,onderdel:[18,19,23,25,33,34,37,38,41],onderin:32,onderl:31,onderscheid:[21,33,34,42],onderst:30,onderstaand:[21,23,28,29,31,32,39,43,46,48],ondersteun:0,ondersteund:[21,32],ondersteunt:35,onderwerp:[1,27,29,41,47],onderwijs:35,onderzoek:14,one:[30,34,38],oneind:[41,42],onev:39,ongeacht:[18,21,34,38,39,42],ongebruik:23,ongeld:[25,38,42],ongelijk:38,ongemerkt:29,ongever:[27,31,32],ongevuld:30,ongewijzigd:43,onlin:0,onmog:[23,39],onnauwkeur:26,onnod:38,onstan:29,ontbreekt:[34,37],ontdek:27,ontdekt:[14,34],onthoud:[20,27],ontstan:43,ontstat:[26,41],ontstond:12,ontvang:37,ontwerp:[5,21,30],ontwerper:[34,42],ontwikkel:[30,32],ontwikkeld:31,ontwikkelomgev:[13,32],onverander:[14,42,46],onverminderd:47,onverwacht:34,onvoldo:26,onwaarschijn:38,onwar:34,onz:[25,26,40],ooit:[38,39],oop:[1,32],oorlogj:45,oorsprong:30,oorspronk:[21,30],opav:25,opbouw:41,opbrengst:29,opbrengstperen:29,opdel:36,opdezelfd:31,opdracht:[25,30,31,32],opdrachtprompt:32,opdrachtspecificatie:27,opeenvolg:30,open:18,opent:[18,32],operand:[19,25],operatie:[25,27,33,34,39,42],operaties:33,operator:[7,23,25,35,42],opgav:[15,16,19,20,21,24,25,26,30,31,45],opgebrok:25,opgegev:[12,30],opgehaald:13,opgelost:[21,36],opgenom:[22,30],opgeruimd:43,opgeslag:[23,26,31,32,38,40,42,43],opgesplist:47,opgesteld:18,opgeteld:36,opgev:22,opgevall:18,opgevraagd:[23,39],ophal:18,oplever:[27,37,39],oplevert:[27,31],oplop:[24,27],oploss:[0,18,21,25,26,29,34,35,38,41,42],opnem:30,opnieuw:[20,26,32,33],oppervlak:[27,37],oppervlakt:36,oppervlakte_driehoek:36,opslan:[12,21,32,33,34],opslat:32,opstart:[32,37],optell:[25,26,33,34,39,44],optie:[21,22,25,32,37],opties:[21,25],optimal:31,optimalisatie:40,optimalisaties:39,optimaliser:31,optional:29,optionaldoubl:29,optionalint:4,optionallong:29,optionel:[20,27,30,37,46],optred:34,opvall:22,opvalt:25,opvolg:38,opvrag:[23,39,44],opzet:[21,32,45],opzicht:[22,29],or:22,oracl:[29,33,36,42,43],orang:27,oranj:22,ord:[22,30],ordent:32,order:[22,30],orderchecker:12,org:[18,39,42],organisaties:48,organiser:[22,30],oriented:0,origin:30,original:30,originel:42,other_lib:22,ouder:21,oudst:38,our:18,out:[1,13,14,19,21,23,26,27,28,29,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47],outlin:[22,30],output:[7,30,33],overblijft:26,overbod:[0,43],overeenkom:[31,44],overeenkomst:0,overeenkomt:12,overen:[21,27,32,39],overerft:21,overerv:[21,31],overervar:21,overflow:26,overigen:43,overkoepel:21,overload:23,overnem:21,overrid:[21,31,47],overwog:21,overzicht:[23,35,36],overzichtsmenu:32,p1:[23,43],p2:[23,43],p:[23,26,43],p_x:30,p_y:30,pack:32,packag:23,pagina:31,pak:[18,22,32],palindrom:24,panel:32,pannekoek:45,pannenkoek:45,papa:24,papier:[14,30],par:[19,26,30,44],paragraf:[16,18,25],parallell:30,param:[21,42],parameter:[19,20,22,25,26,30,39,44],parent:[21,31],parentclas:31,paris:[27,44],parker:34,parseint:[22,35,37,42,46],parteretrap:24,pas:[13,14,20,21,29,30,31,34,39,41,46],pascal:33,passend:[21,30],passing:18,past:[26,44],patron:[0,22,30,41],pattern:19,paus:47,pauz:47,pauzer:37,pay:14,payrat:14,payroll:14,pdf:0,per:[0,12,18,21,22,23,29,30,41,46],percentag:21,perfect:40,performanc:43,perl:33,permanent:13,person:[12,31,38,41,46,48],perspectief:37,php:[33,34],pi:[18,19,36,37,46],pick:22,pion:24,piping:32,pixel:37,pizza:30,plaatjes:[5,30],plaats:[14,23,34,36,38],plaatselijk:28,plaatst:34,plaatsvind:42,plaatsvindt:28,plak:14,plat:[13,21,23,26,29,31,33,35,36,38,41,42,47],player:[23,35],playernam:35,plek:[18,23],plot:[22,30],plusj:48,point1:23,point2:23,point3:23,point4:23,point5:23,point:[13,19,24,27,30,35,36,37,39,48],pointer:40,pol:[30,40],polygon:30,pom:18,pompstation:12,positie:[37,44],positief:[31,38],posities:44,positiev:[26,31],position:45,positiv:18,positive_infinity:30,potlod:[14,30],potverdorie:19,pow:[19,20,21,42],power:13,practica:48,practicum:[1,21,32],practicumdocent:[27,32],practicumpoint:23,praktijk:36,praktisch:31,precies:[14,22,23,24,28,32,37,43],preciezer:23,precisie:[14,27],prestatie:[31,47],priem:26,prijs:[12,31,34],prijz:12,prim:30,prima:[34,44],primair:27,primitief:[13,23,40,42],primitiev:[2,23,26,29,34,38,43,44],princeton:27,princip:34,print:[14,18,23,24,25,26,30,31,33,35,36,37,38,41,44,45,46],printadresdoorenvest:36,printbreakev:29,printf:[21,35,39],printinfo:31,println:[1,13,14,19,21,23,26,27,28,29,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47],printpoint:43,printstacktrac:47,printtim:37,printtwic:37,privacybeleid:32,privat:[18,21,31,44,45,46,47],prober:[13,14,20,21,23,26,31,36,40],problem:[12,13,14,15,16,17,19,20,25,26,29,33,34,36,39,41,43,48],problematisch:21,procent:12,proces:[26,32],processor:[19,47],processorkern:47,producer:27,product:[20,26,29,41],progammacod:48,program:7,programm:[7,33],programma:[12,13,14,18,19,20,22,23,26,27,28,30,34,36,37,38,39,42,47,48],programmacod:32,programmeerfout:34,programmeerhulpmiddel:32,programmeeromgev:27,programmeeropdracht:32,programmeertal:[0,27,33,34,35,36,42],programmeerur:34,programmer:[0,1,7,8,9,10,11,26,27,31,34,36],programmeur:[29,36],programmma:[22,47],project:[27,30,31,48],projectbestand:[18,22,30],projectconfiguratie:18,projectmap:[27,32],projectstructur:18,prompt:25,properties:[18,21,23,44],property:[21,22,23,25],publicer:[27,48],publiek:21,punt1:43,punt2:43,punt3:43,punt:[13,20,22,23,25,27,34,36,37,43],puntkomma:[32,33,34],pythagoras:[23,36],python:[0,7,8,9,10,11,33,34,36],q:26,quot:35,r:[18,21,26,27,37],rad:[15,16,17,30,32,37],radial:[27,30],radius:[18,19,22,37],rak:19,raket:41,rand:[12,22],randkleur:22,random:[22,42],randombit:22,rar:24,rationalcient:26,rationalclent:26,rationalclient:26,rationel:26,realiser:[21,31,38],recent:13,recht:[22,23,32,37],rechterkant:22,rechthoek:43,rechtstek:47,rechtstrek:[21,23],recompil:32,recursie:[5,22,26,30],recursief:[22,30],recursiev:[20,22,26,41],recursion:16,recursiv:[8,22,41],recusiev:5,red:[0,22,23,27,30,39,40,42,46],redder:24,redirection:32,reeel:29,refactor:0,referentie:[23,27,43],referenties:42,referer:0,regel:[13,14,22,23,26,30,31,32,33,34,35,37,43,44],regeleind:35,regelnummer:32,regulier:[21,31,36],reilly:0,reis:27,reiz:27,rek:[24,25,26,33,35,36,38,39,42],reken:[29,31,38,44],rekenkund:[33,42],rekenmachin:3,rekenmethod:25,rekenoperaties:25,rekent:12,rel:[27,29],relatie:[21,22,38],relatief:[26,44],relevant:[18,26,27,31],relevantie:0,remov:45,renam:32,rent:21,rentals_1:31,rentals_2:31,rentals_3:31,rentepercentag:21,repeat:34,replac:42,representatie:[26,44],representeert:[23,28,39,42,43],representer:[13,21,26,30,44],reserveert:13,resolutie:22,respectiev:30,rest:[21,26,34,41],rester:[12,21],resterendbedrag:21,resterendelooptijd:21,result:[19,36,43],resultat:[13,14,18,19,20,21,22,25,26,29,31,34,35,36,37,38,41,43],resulteert:21,resulter:[27,39],retourneert:[21,23],retourner:[21,29],returntyp:[26,44],returnwaard:[18,26,39],reversed:39,rgb:27,rgbtocymk:27,rho18:0,rhodes:0,riely:0,right:[18,20,27,30],rij:[41,42],rij_van_fibonacci:42,rijd:12,rijk:46,ring:12,robert:[22,27,30],robson:0,rod:[27,37],roep:[18,19,24,25,30,33,36,46,47],roept:18,rol:18,rond:[20,26],rotated:30,rotates:30,rotatie:30,rotatiepunt:30,roteert:30,round:36,rounding:14,rout:12,ruimt:[12,22,25,26,30,43],run:[14,32,47],runn:[27,32],runnabl:47,runnables:47,runt:48,rustig:32,s:[7,12,14,18,19,22,25,26,27,30,31,32,34,35,36,37,38,39,40,41,42,44,46,47],saf:43,sam:[13,18,20,27,31,32],samengesteld:21,samenwerk:25,sav:30,say:37,scaled:30,scales:30,scanner:[25,38],schaalt:30,schal:[22,27,30],scheidingstek:22,schept:21,scherm:[13,23,27,28,29,32,33,37,38],schoolnam:35,schrijf:[12,14,19,20,22,23,24,26,27,30,31,36],schrijft:[12,13],schrijv:[0,13,14,18,19,22,25,26,27,30,32,33,35,38,41,43],scientist:0,scor:[31,34,35],scroll:32,se:32,second:[31,36,37,44,47],seconden_na_middennacht:36,secondpart:34,sedgewick:[22,26,27,30],see:18,seeing:18,selecter:[32,48],separat:27,separation:25,september:28,series:18,seriestest:18,servic:47,sessie:25,set:[18,30],setcanvassiz:30,setheight:18,sethour:44,setlocation:[23,43],setpencolor:[22,30,48],setpenradius:48,setradius:18,setscal:30,setter:[23,31],setxscal:[22,30],setyscal:[22,30],sferisch:27,shortfall:13,showing:18,shutdown:47,sid:30,sierpinsky:30,signatur:[18,25,26,37,44],signed:34,simon:[35,46],simpelweg:31,simulatie:45,simuler:45,sin:[19,27,30],sind:30,sit:[0,15,16,17],sites:48,situatie:[18,21,38,43],situaties:[18,29,38],siz:45,sla:14,slaagt:[18,32],slag:18,slan:[26,27,30,32,42,44],slecht:[14,21,30,35,40],slechter:34,slep:47,slim:31,slimm:31,slimmer:37,slot:[25,30,37,41,47],sluit:32,sluitring:12,snel:26,snell:31,sneller:[0,43,47],softwar:[0,18,21],softwareproblem:0,som:[0,12,21,22,23,26,34,35,38,39,42],sommig:[18,19,29,30,32,38,39,42],soort:[18,21,22,23,33,34,39],sort:31,sorteert:31,sorter:31,sorterenaanschafprijs:31,sorterenbeschrijv:31,sorterenbeschrijvingfietsauto:31,sourc:18,spaarreken:46,spannend:32,spatie:[13,31,37],speciaal:[37,40],special:[13,32,42],specificaties:18,specificeert:27,specificer:33,specified:[22,30],specifiek:[0,18,19,21,22,23,32,33,34,36,37],specifier:35,spel:[40,45],speler:23,spiegel:30,spor:19,sprak:[21,29,31,34,38,43,47],spring:44,sqrt:[18,19,23,25,30,36,43,46],squar:46,src:[18,32],stack:41,stan:[20,23,27,30,33,36,37,38],stand:21,standaard:[21,22,23,25,28,30],standaardeditor:32,standard:[30,36],stap:[13,23,25,27,36,40,41],stapj:47,stapjes:36,stapp:[21,31],start:[14,25,32,37,39,42,47],startproject:32,stat:[12,23,30,34,35,36,37,38,39,44],statement:[14,18,25,27,30,33,34,35,36,37,39],statisch:[30,37],statusbalk:32,stddraw:[22,30,48],stdlib:[22,30,48],stdrandom:22,sted:[13,18,20,21,23,25,26,27,32,36,37,40],stel:[14,22,27,29],stell:34,stelling:[19,23],stelt:[18,19],sterk:34,stijlregel:32,stilgezet:37,stilstan:37,stip:37,stop:[25,39],stopconditie:30,stopp:[23,30,38],stopwaard:39,strak:18,stral:[18,37],strikt:[27,29,33,34],string:[1,3,8,13,14,15,16,19,22,23,25,26,27,30,31,32,33,35,36,38,43,44,45,46,47,48],string_fiv:40,string_four:40,string_on:40,string_six:40,string_three:40,string_two:40,stringbuffer:43,stringcontainsinteger:42,structur:[39,48],student:[0,30,34],studio:32,stuk:[12,29,31,36,38,48],stukj:[37,47],stur:32,subklas:21,subklass:21,submit:47,subproblem:36,substring:41,subtiel:22,subtract:[25,26],subtractiev:27,succes:25,succesvol:[13,34],such:30,suggereert:23,suggestie:29,suggesties:30,sum:26,summary:[23,28],superklas:21,superset:39,swift:[33,34],symbol:18,syntactisch:32,syntax:[0,14,18,22,32,34,37],syntaxfout:37,system:[1,13,14,19,21,23,26,27,28,29,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47],systematisch:18,t1:[31,47],t2:[31,47],t3:47,t:[18,21,29,34,35,36,37],taaitaai:24,tab:35,tabel:20,tak:[18,25,27,37],takes:[22,30],tal:[0,33,37,40],tamtam:24,tankinhoud:12,target:18,tax:14,taxrat:14,taylorrek:26,tdd:5,techniek:[18,30,34,41],technisch:[21,23,34,43],teg:[20,22,30,34,48],tegelijk:[19,27],tegelijkertijd:[0,14],tegengesteld:38,tegenkomt:34,tegenstell:[30,33,36,40,45],tek:[22,30,38],teken:[13,14,22,30,46],tekenset:39,tekent:[22,30],tekenvenster:30,tekst:[13,33,34,35,41,44],tekstboek:27,teksteditor:32,tekstrepresentatie:18,tekstuel:[39,44],tekstverwerker:14,tel:36,teleurstell:18,tell:[41,47],teller:[26,34,39,41,47],telt:[28,47],ten:[22,26,27,29,30],tenminst:[21,38,42],tenslot:[14,30],tent:24,tepass:31,ter:[0,27,31,41,43],terechtkomt:34,term:26,termijn:21,terminal:32,terug:[18,22,23,25,26,29,30,31,34,35,36,38,39,41,42,43,44,48],teruggeeft:[19,20,24,25,30,31,36,37],teruggegev:[28,31,36,39,41,42,43],teruggev:[25,31,36,37,38],terugkom:[26,34],terugvind:[1,19,24],terwijl:[27,30,32,39],test:[19,21,23,25,28,29,30,31,36,38,48],testcas:18,testcod:[29,30,48],testfibonacci:18,testing:8,testnegativeheigthconstructor:18,testpanel:18,tevor:39,text:[25,34,41,43,46],that:[18,26,30,44],the:[13,18,22,30,35,38],them:[18,30],theorie:[38,42],thes:30,theta:30,thing:18,think:0,thinkjavacode2:0,thread:[13,27,43],threadpol:47,three:38,throwfor:38,tien:34,tijd:[18,32,39,44,47],tijd_1:44,tijd_2:44,tijd_3:44,tijdelijk:36,tijden:[1,12,14,27,34],tijdschrift:27,tijdsdur:31,tijdstip:36,tijdzon:[28,44],tijdzones:44,tim:39,timeout:47,times:[13,18,26,27,30],timeunit:47,tinspring:35,tip:31,to:[0,13,18,27,31,34,39,46],todegres:27,todo:32,toe:[13,14,18,21,22,23,26,30,31,32,36,37,39,41,46,48],toegang:[18,32,44],toegek:[34,36,43],toegelicht:0,toegepast:[12,30,34,38,41,42],toegevoegd:[22,26,31,48],toegewez:47,toekend:14,toekent:43,toelicht:36,toeneemt:39,toepass:[0,18,32,38,41,44],toepast:39,toestemm:18,toetsenbord:[33,35],toevoeg:[31,32,39,40,44,47,48],toevoegt:31,toewijzingsnotatie:40,toewijzingsverklar:14,tolowercas:24,ton:[25,32],tony:26,too:13,toont:[25,39],toradian:[27,30],tostring:[18,26,28,31,42,43,46],totaalbedrag:21,totaalprijs:12,total:[12,21],totdat:[23,32],touppercas:[42,44,46],toyota:31,traditionel:47,transformaties:[30,44],translat:23,translated:30,translates:30,translatie:30,transler:30,treedt:[34,42],trek:26,triangl:30,trigonometrie:30,trigonometrisch:27,trinket:0,trust:18,turing:42,tuss:[13,21,23,25,27,30,31,33,34,35,36,37,38,39,40,42,43,47],tussenstap:33,tussentijd:36,tutor:41,tutorial:[19,37],twaalf:34,twed:[19,22,23,25,27,28,30,38,40],twee:[0,12,13,14,16,18,19,22,23,24,25,26,27,30,31,32,34,35,36,38,39,40,42,43,44,46],tweecijfer:12,tweedimensional:[25,30],tweemal:[12,25],tweetal:[25,26],twic:37,two:[22,38],typ:[5,13,14,18,20,21,22,23,25,26,27,31,32,35,36,37,40,41,42,43,45],typefout:32,typer:34,types:[7,9,13,38,43,45],typisch:[26,32],typt:32,uigevoerd:38,uitbreid:32,uitdag:[20,27,31],uitdruk:[37,39,44],uiteind:[18,30,37],uiteraard:[36,47],uitgangspunt:18,uitgebreid:[0,34,36,37,42,45],uitgebreider:[18,35,36],uitgedrukt:[19,21,44],uitgegan:32,uitgeschrev:[12,14],uitgeslot:18,uitgevoerd:[13,18,31,33,34,38,39,47],uitgewerkt:45,uitkled:37,uitkomst:[14,19,23,29,38,42],uitprint:12,uitprober:30,uitschrijv:12,uitsluit:[21,35],uitverkop:12,uitvoer:[0,13,14,18,21,23,25,26,27,28,30,32,33,34,38,41,47],uitvoerd:27,uitvoert:[13,20,30,33,40],uitwerk:[17,18,20,26,31,41,45],uitziet:[30,32],uncomment:31,unicod:[24,44],uniform:22,unique:18,unittest:18,unix:22,unknown:38,unleashed:30,unmutabl:22,unresolved:13,unzip:30,up:22,upward:30,uren:[39,44],url:0,us:18,useful:18,util:[35,38,41,45,47],uur:[36,39],v:[18,36],vaardig:19,vak:[19,21,23,28,29,30,34,36,37,38,39,41,47,48],vaker:44,vakgebied:39,valid:29,validates:18,validatie:[38,42],valley:12,valt:28,value:[13,14,18,38,46,47],valueof:42,values:25,vanaf:[34,39,41],vandag:28,vandan:37,vanuit:[30,31,32,47],vanweg:[26,40],variabel:[2,13,18,21,23,27,29,33,35,36,37,38,39,40,42,43,46],variabelenam:23,variabl:[32,37,46],variables:[7,14],variant:39,variatie:40,vast:[21,29,33,36,44,45],vastekost:29,vastgelegd:34,vastgesteld:38,veelhoek:30,veelvuld:35,veilig:27,vel:[0,13,19,21,24,25,27,31,32,33,34,35,36,37,38,40,42,44,45,47,48],veld:[18,22,26,31,44,46],venster:[22,48],ver:27,verander:[13,21,23,30,34,42,43,46,47],veranderd:[23,30,38,43],verandert:[21,22,34,42],verantwoord:[22,25,41],verberg:44,verbergt:44,verbeter:[23,31],verbeterd:26,verborg:44,verdel:34,verder:[18,25,26,31,36,47],verdubbelt:39,vereenvoud:[13,26],vereis:[27,30,36],vereist:[31,36],verenigd:12,vergelek:[23,31,40,42],vergelijk:[0,14,18,23,26,30,31,33,35,38,40,42,44],vergelijkingsoperator:27,vergelijkt:[18,31,42,44],verget:[13,27,31,39],vergrot:44,verheff:19,verhev:[13,20],verhog:[23,31,41],verhoogd:39,verhoogt:39,verhoud:26,verhuurder:31,verhuurvoertu:31,verkeerd:39,verklaart:[34,40],verklar:[13,23,34,36],verkocht:29,verkop:29,verkort:22,verlag:[21,41],verlegg:27,verlies:29,verlop:[25,34],verlor:42,vermenigvuld:[25,26,34],vermenigvuldigd:27,vermenigvuldigingsoperator:34,vermoed:39,veronderstel:12,verpakt:48,verplaats:23,verplat:[30,31],verplicht:[21,23,32,38],versa:39,verschijn:32,verschijnt:[13,32,48],verschil:[13,23,26,31,33,37,40,43],verschill:[0,14,21,22,26,27,30,31,32,33,34,36,38,40,42,43,44,47],verschilt:[13,23,34],verschuiv:30,versie:[0,13,18,20,21,23,26,32,33,34],versienummer:18,versies:14,version:32,versnell:31,verspring:[39,44],versus:39,vertal:30,vertegenwoord:37,vertell:[26,30],vertelt:46,vertex:30,vertical:36,vertices:30,vertrek:36,vervang:[31,38,39],verver:24,vervolg:[0,31],vervolgen:[13,14,18,21,22,23,27,30,31,32,34,38,39,41,47],verwacht:[18,21,23,30,37,40],verwarr:[21,40,43],verwerk:21,verwijder:[14,21,30,43],verwijderd:[31,34,43],verwijst:[13,42,44],verwijz:[0,23,34,40,42,43,44],verwoord:43,verzamel:[33,34,39],verzameld:46,verzamelt:25,via:[18,21,23,25,37,41,42,43,44,46,47],vic:39,viel:28,vier:[19,27,30,38,44],vierd:[26,39],vierkant:22,view:[22,32,37],vijf:[27,28],vind:[0,18,19,20,21,22,23,25,26,28,29,34,36,41,42,43,47,48],vindt:[0,21,40],virtual:[33,40],virtuel:[33,43],visual:32,visualisaties:0,vlak:[23,36],vluchtleid:41,voeg:[21,22,23,26,30,31,32,36,48],voeghuurvoertuigtoe:31,voegleningdeeltoe:21,voegt:[21,31,32],voel:30,voer:[12,13,14,18,21,25,26,32,38,42,44,47],voert:[27,38,47],voertuig:[6,31],voertuigsorterbeschrijv:31,voetbal:28,vol:12,voldoen:[18,33,41],voldoend:[0,28,31,44],volg:[19,22,27,30,32,44],volgen:[22,25],volgend:[12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,29,30,31,32,33,34,37,38,39,41],volgendemaand:21,volgendjar:21,volgord:[12,24,27,30,31,36,37,38,44,47],volgt:[13,18,20,21,22,25,26,31,32,33,36,38,39,42,43,47],volksmond:21,volled:[18,22,23,36,42,44,47],volstan:[28,31],voltooid:32,vooraf:[18,34],voorafgegan:35,vooral:[19,21,25],voorbeeld:[12,18,19,21,24,25,26,27,30,31,32,35,36,37,39,42,43,46],voorbeelduitvoer:27,voorbij:37,voordat:[13,18,19,22,26,28,30,36,39,47],voordel:[26,27,35],voorgaand:22,voorkeur:[21,38],voorkom:[0,14,21,24,26,36,38,42],voorkomendst:34,voorkomt:[21,24,31,42],voornaamst:23,voornam:[18,22,27],voorrang:38,voorspel:47,voort:44,voortuig:31,vooruitblik:25,vooruitgang:30,voorwaard:[26,38],voorzicht:26,voorzie:21,voorzien:0,vor:[0,1,13,14,15,16,17,19,21,23,24,25,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],vordert:32,vorig:[13,14,20,21,22,31,34,37,41],vorm:[18,26,31,32,38,41],vormt:33,vraagt:[12,25,39],vrag:[14,18,21,25,27,28,32,39],vreemd:[21,26,29,40],vrij:30,vscod:32,vuistregel:[38,43],vulkleur:22,vull:25,vulling:22,w:40,waarbij:[21,23,26,29,32,34,35,43],waard:[12,13,18,19,22,23,24,25,26,27,29,30,31,34,36,37,38,39,40,42,43,44,46,47],waardes:[35,38],waardor:[21,28,31,34],waarin:[29,30,32,33,34,43],waarmee:[28,31,44,48],waarneemt:26,waarom:[20,21,27,30,36,37,39,40],waarop:[28,34,36,38,40],waarschijn:[0,20,21,38],waarschuw:32,waarvan:[27,30,38,42,43],waarvor:33,wacht:47,wachtrij:41,wachtwoord:39,wanner:[13,14,18,19,22,26,29,32,34,37,40,43,48],war:[0,12,15,16,17,18,21,22,23,25,26,30,32,34,35,37,38,39,40,41,43,44,45,46,47,48],warm:28,wayn:[22,27,30],we:[0,14,18,22,23,26,28,30,32,33,34,35,36,37,38,39,40,41,44,46,48],webpagina:27,weekdag:28,weergav:[28,36],weergegev:[26,42,43],weergev:[19,32,33],weerlegg:39,weerszijd:22,weg:27,weglat:[32,37],weinig:12,wek:[28,31],wekker:44,wekt:29,wel:[13,18,21,23,29,30,31,33,34,36,37,38,39,42,43,44,45],welbek:46,welk:[18,21,23,28,30,31,34,38,42,46],welkom:32,welkomstscherm:32,welkomsttekst:32,wellicht:[34,46],wens:44,wenselijk:[21,29,31,38],went:19,wer:[13,25,27,29,40,41,43,45,48],werden:[12,41],wereld:[34,37,39,40,44],werk:[18,19,22,23,26,27,30,32,33,38,39,42,47],werkboek:1,werkboektekst:37,werkelijk:[21,31],werkend:[21,33,36],werkt:[13,18,19,21,23,26,30,31,36,38,39,40,42],werkwijz:[18,38],wet:[18,22,25,27,28,30,32,34,36,37,39,41],wetenschapp:13,what:35,whil:[21,23,39,41,42,47],whit:27,whos:30,width:43,wij:[18,22,32,37,41,44],wijs:14,wijz:[23,34,38,42],wijzig:[13,14,21,26,30,32,42,43],wiki:[39,42],wikipedia:[27,39,42],wild:30,wildcard:22,will:[13,19,25,32,41,44],willekeur:[18,22],wilt:[13,30,32,37,39],window:22,winkel:12,winner:31,winst:29,winstperen:29,wintertijd:44,wiskund:[13,27,30,36,38],wit:[24,27,30],witregel:33,wo:38,won:28,woonplat:[34,35],woord:[13,18,24,25,30,36,37,39,42,45],word:[0,12,13,14,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],worked:14,world:[1,34,35,37,40,44],wortel16:36,wortel:36,wp:0,wrapper:43,x1:[27,36,43],x2:[27,36,43],x:[14,19,20,21,22,23,25,27,30,38,43],x_0:30,x_1:[23,25,27,30,36],x_2:[23,25,27,30,36],x_i:30,x_smaller_than_y:38,xml:18,y1:[27,36,43],y2:[27,36,43],y2k:12,y:[22,23,25,27,30,38,43],y_0:30,y_1:[23,25,27,30,36],y_2:[23,25,27,30,36],y_i:30,yaris:31,yellow:[22,27],your:[19,35,37],yourhous:46,yyyy:28,z:[13,27,34,40,45],zeemijl:27,zeerst:30,zeevaart:27,zegg:[21,26,34,37,38,44],zegt:[24,40],zeker:[26,28,30,37,39,40],zelfd:44,zelfgelijkenis:41,zelfs:[19,22,23,32,33,39,44],zelfstand:38,zer:[0,30],zernikeplein:36,zero:34,zes:38,zet:[14,22,23,25,27,28,29,31,35,37,41,42,44,48],zeur:34,zichtbar:[13,18,21,35,37,43],zichzelf:[14,30,37,44,46],zie:[18,22,25,26,27,28,30,31,39,42,46],zien:[0,14,18,20,22,30,32,33,34,35,37,40,43,44,48],ziet:[13,18,22,30,32,37,39],zijbalk:32,zijd:[22,30],zijdelengt:22,zijlengt:30,zin:[27,42],zip:[18,22,27,30,31,32],zit:[36,40],zitplaats:31,zoal:[12,18,19,22,23,28,30,32,33,34,35,37,39,40,42,43,44,48],zodan:[14,21,29],zodat:[15,16,17,19,20,21,23,28,29,30,34,35,38,40,43,47],zodra:[18,20,23,37,43],zoek:[23,28,34,41,44],zoekt:22,zogenaamd:[23,33,46,48],zogezegd:24,zojuist:48,zolang:[26,39,41,44],zomar:44,zomer:44,zorg:[13,23,27,30,31,32,34,36,41,46],zorgt:[23,31,38,41,47],zorgvuld:[19,27,32],zoud:[14,25,38,40,44,46],zovel:12,zover:40,zowel:[1,21,22,23,26,27,31,36,38,39,40,43,46],zul:[14,19,20,34],zull:[0,18,22,25,32,34,38,39,40,44],zult:[0,19,27,30,32],zwart:[22,24,27],zwevendekommagetall:[13,19],zwevendepuntgetall:14},titles:["Literatuur","Welkom","Opgaven week 1","Opgaven week 2","Opgaven week 3","Opgaven week 4","Opgaven week 5","Week 1","Week 2","Week 3","Week 4","Week 5","Condities","Primitieve gegevenstypen","Variabelen en toekenningen","CodingBat","CodingBat","CodingBat","Klassen ontwerpen en testen","Debuggen en methoden","Grote getallen","Overervering","Geneste cirkels","Practicum: Objecten maken van klasse Point","Strings en lussen","Methoden en condities","Klassen ontwerpen","Opgaven practicum 1","Opgave Klasse LocalDate","Opgave klasse OptionalInt","Recursieve graphics","Verhuur","Hello World in Java","Inleiding","Variabelen en operatoren","Invoer en uitvoer","Methoden","Methoden","Condities en logica","Lussen en strings","The strange case of String","Recursie","Immutable objecten","Mutable objects","Klassen ontwerpen","Arrays","Context","Snelle inleiding threads","Externe bibliotheken gebruiken"],titleterms:{"1":[2,7,27,31,37],"2":[3,8,31,37],"3":[4,9,37],"4":[5,10],"5":[6,11],"\u00e9n":34,"abstract":21,"boolean":38,"break":29,"char":39,"if":38,"int":37,"null":42,"return":[36,43],"static":46,"switch":38,"this":44,De:[18,21,25,26,29,37,38,39,42,46,47],Een:[30,33,39,47],Het:[26,38,42,44],Hoe:41,Ik:32,Nog:23,Overige:34,Tot:[18,26],Van:37,aanpak:47,aantal:33,abc:24,abstractie:44,achtergrond:30,afhank:18,aflossingsvrij:21,afrondingsfout:34,algoritm:26,anatomie:37,ander:[32,34,41],annuiteit:21,argument:[36,37,42],array:[15,41,45],art:30,basisoperaties:33,begrijp:32,bereken:29,bibliografie:0,bibliothek:[30,48],biginteger:42,bijzonder:[25,39],boek:[7,10,11,14],boodschap:39,cas:40,casus:29,chaining:38,checker:12,cirkel:22,classes:42,cod:33,codingbat:[15,16,17],collecties:45,collector:43,collegejar:28,combiner:46,commandlin:42,compiler:[33,34],con:18,condities:[12,25,38],conditionel:41,configuratie:18,consol:34,constructor:[23,44],context:46,copy:30,counter:47,data:44,debug:37,debugg:19,declarer:34,definier:[36,37],del:[30,31],design:0,distanc:25,documentatie:23,doel:[25,26,27,30],doorlop:39,driehoek:30,dubbel:13,dubbelwoord:24,dynamisch:34,editor:32,eenvoud:25,eig:30,eindig:39,els:38,equal:44,equality:40,escap:35,euclides:26,even:29,explosie:13,exponentiel:13,extern:48,faculteit:20,fermat:19,floating:34,flow:25,formatter:[33,35],fout:34,foutj:23,garbag:43,gebruik:[26,29,48],gedrag:39,gegevenstyp:13,gehel:34,geheug:34,gen:29,genest:[22,39],geometrisch:30,getall:[20,26,34],getmenuoption:25,getoperand:25,getpair:25,getter:44,getypeerd:34,gevar:13,grafisch:41,graphic:30,greatcircl:27,grot:20,handel:[41,44],hello:[27,32,33],helloworld:27,hifour:27,huidig:28,hypothek:21,i:30,ii:30,iii:30,immutabl:[42,43],incrementel:36,initialiser:34,inleid:[18,21,22,25,27,33,47],installer:32,instantier:21,intellij:32,invoer:[35,38],java:[27,30,32,33,34],jouw:30,karakter:39,karaktermoord:13,kat:38,kenmerk:[33,44],kerst:28,keyword:[38,42],klas:[18,21,23,26,28,29,36,42,43,47],klass:[18,21,26,44],klein:28,korting:12,kunstwerk:30,kwadratisch:14,leeftijd:38,lengt:39,lineair:21,literal:40,literatur:0,localdat:28,logica:38,logisch:[34,38],lus:39,luss:[24,39],machtsverheff:20,main:[30,37],mak:[23,30,32],mar:34,math:36,meerder:37,mensenjar:38,method:[19,23,25,36,37,44],methodes:[21,23,36,42],millenniumbug:12,mod:37,moderner:47,mogelijk:30,morgan:38,multadd:19,multitask:47,multithread:47,mutabl:43,nar:37,nestedcircles:22,nesting:38,nieuw:36,nijpend:13,object:[23,40,42,43,46],oneind:39,ongeld:29,ongewenst:21,ontwerp:[18,26,44],ontwikkel:36,onverand:46,opdracht:[22,27],open:32,operator:[34,38,40],opgav:[2,3,4,5,6,18,22,27,28,29,32],opgaveoptionalint:29,opnieuw:14,oppervlak:18,opslan:42,optionalint:29,optionel:[7,8,9,10,11,18],order:12,ordered:27,overerver:21,parameter:[36,37,43],pattern:0,point:[23,34,43],power:25,practicum:[23,27],primitief:34,primitiev:[13,42],prinsjesdag:28,problem:[21,35],programma:[25,32,33],project:[18,32],punt:[29,30],quiz:37,random:25,rational:26,rectangl:43,recursie:[16,41],recursief:41,recursiev:30,reden:36,reeks:35,referentie:42,referenties:43,rekenkund:34,rekenmachin:25,relationel:38,requirement:30,returnwaard:[37,41],rgbtocmyk:27,rond:30,rotat:30,roter:30,runtim:34,s:33,salaris:14,scal:30,scanner:35,schaakstuk:24,scheur:12,schrijv:36,sequentieel:41,setter:44,sierpinski:30,sinterklas:28,slot:[18,26],snell:47,soortgelijk:21,standaard:35,standaarduitvoer:35,stap:[18,22],stapp:30,statement:38,statisch:[34,46],stopt:39,strang:40,string:[17,24,34,37,39,40,41,42],stringbuilder:43,substring:39,subtiel:39,syntax:39,tal:34,tank:12,tbv:42,tekort:13,terug:37,test:[18,37],testing:18,the:40,thread:47,tim:44,toekenn:[14,34],toewijz:14,tostring:[23,44],transform2d:30,transformatie:30,translat:30,twee:21,typ:[34,38,44],types:[34,42],uitvoer:[22,35],unicod:39,unit:18,user:25,valider:38,variabel:[14,34],verbeter:26,vergelijk:39,verhog:39,verhur:31,verlag:39,verschil:39,versus:34,volled:[21,33],volum:18,voorbeeld:[22,28,33,34,38,41,47],voorbereid:30,vor:[18,22],vrag:37,vs:[42,43],waard:[14,41],waardes:[29,36,43],wanner:39,wek:[2,3,4,5,6,7,8,9,10,11],welkom:1,werk:28,werkt:41,wet:38,willekeur:30,world:[27,32,33],wrapper:42}}) \ No newline at end of file diff --git a/support/install.html b/support/install.html index dde1c1a4..ec93a701 100644 --- a/support/install.html +++ b/support/install.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/1a_inleiding.html b/topics/1a_inleiding.html index c833862d..c2f92aae 100644 --- a/topics/1a_inleiding.html +++ b/topics/1a_inleiding.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/1b_variabelen_en_operatoren.html b/topics/1b_variabelen_en_operatoren.html index e7f0607f..1749917d 100644 --- a/topics/1b_variabelen_en_operatoren.html +++ b/topics/1b_variabelen_en_operatoren.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/1c_invoer_en_uitvoer.html b/topics/1c_invoer_en_uitvoer.html index 6662647c..5f389339 100644 --- a/topics/1c_invoer_en_uitvoer.html +++ b/topics/1c_invoer_en_uitvoer.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/2a1_methoden.html b/topics/2a1_methoden.html index 014711a7..6efea6f5 100644 --- a/topics/2a1_methoden.html +++ b/topics/2a1_methoden.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/2a2_methoden_en_testen.html b/topics/2a2_methoden_en_testen.html index 3fd8cdc5..2014e45f 100644 --- a/topics/2a2_methoden_en_testen.html +++ b/topics/2a2_methoden_en_testen.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/2b_condities_en_logica.html b/topics/2b_condities_en_logica.html index 3a9c4381..a8c812b0 100644 --- a/topics/2b_condities_en_logica.html +++ b/topics/2b_condities_en_logica.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/3a_lussen_en_strings.html b/topics/3a_lussen_en_strings.html index 1f377e1d..a7c55952 100644 --- a/topics/3a_lussen_en_strings.html +++ b/topics/3a_lussen_en_strings.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/3c_string_mystery.html b/topics/3c_string_mystery.html index 1c6e69c5..74267086 100644 --- a/topics/3c_string_mystery.html +++ b/topics/3c_string_mystery.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/4a_recursie.html b/topics/4a_recursie.html index fd0387b9..07509d17 100644 --- a/topics/4a_recursie.html +++ b/topics/4a_recursie.html @@ -413,6 +413,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ @@ -1126,7 +1182,7 @@

Arrays diff --git a/topics/5a_mutable_klassen_en_objecten.html b/topics/5a_mutable_klassen_en_objecten.html index 484369f4..20ef69dc 100644 --- a/topics/5a_mutable_klassen_en_objecten.html +++ b/topics/5a_mutable_klassen_en_objecten.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/5b_klassen_ontwerpen.html b/topics/5b_klassen_ontwerpen.html index 94efb0d7..432b78aa 100644 --- a/topics/5b_klassen_ontwerpen.html +++ b/topics/5b_klassen_ontwerpen.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/6a_collections.html b/topics/6a_collections.html new file mode 100644 index 00000000..82576388 --- /dev/null +++ b/topics/6a_collections.html @@ -0,0 +1,907 @@ + + + + + + + + + Arrays — Objectgeoriënteerd Programmeren + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + + + + + + + + + +
+ +
+ +
+ + + + +
+
+ + + + +
+
+ + + + + + + +
+
+ + +
+
+ Contents +
+ +
+
+
+
+ +
+

Arrays

+ +
+
+ +
+

Contents

+
+ +
+
+
+
+ +
+ +
+

Arrays#

+

Net als constanten zijn arrays ook “final”. Als de grootte eenmaal is bepaald, dan kan deze niet meer worden gewijzigd: de array kan niet meer worden uitgebreid. De elementen in de array kunnen nog wel worden gewijzigd.

+
+
+
class Lingo {
+    private char[] letters;
+    
+    public Lingo(String word) {
+        letters = new char[word.length()];
+        
+        for (int i = 0; i < letters.length; i++) {
+            letters[i] = word.charAt(i);
+        }
+    }
+    
+    public boolean guessLetter(int position, char letter) {
+        if (letters[position] == letter) {
+            return true;
+        }
+        return false;
+    }
+}
+
+
+
+
+
+
+
Lingo game = new Lingo("opzet")
+
+
+
+
+
+
+
game.guessLetter(0, 'z')
+
+
+
+
+
false
+
+
+
+
+
+
+

Collecties#

+

Arrays zijn eenvoudige types voor het beheren van een collectie elementen. Collecties zijn typen die veel flexibeler zijn, bijvoorbeeld ze groeien en weer krimpen (in tegenstelling tot arrays waar de lengte vast is).

+
+
+
import java.util.ArrayList;
+
+
+
+
+
+
+
ArrayList<String> gameWords = new ArrayList<String>();
+
+
+
+
+
+
+
gameWords.add("opzet");
+
+
+
+
+
true
+
+
+
+
+
+
+
gameWords.add("pannekoek")
+
+
+
+
+
true
+
+
+
+
+
+
+
gameWords.size()
+
+
+
+
+
2
+
+
+
+
+
+
+
gameWords.remove(1)
+
+
+
+
+
pannekoek
+
+
+
+
+
+
+
gameWords.add("pannenkoek")
+
+
+
+
+
true
+
+
+
+
+
+
+
System.out.print(gameWords)
+
+
+
+
+
[opzet, pannenkoek]
+
+
+
+
+
+
+
for (String woord: gameWords) {
+    System.out.println(woord);
+}
+
+
+
+
+
opzet
+
+
+

+
+
+
pannenkoek
+
+
+

+
+
+
+
+

Word cloud

+

In hoofdstuk 12 tot en met 13 worden kaartspellen uitgewerkt, in opgave simulatie ga je dit voor het spel oorlogje (“War”) uitwerken en het spel simuleren.

+
+ + + + +
+ +
+ +
+
+ + +
+ + +
+
+ + + + + + + \ No newline at end of file diff --git a/topics/6a_static_klassen.html b/topics/6a_static_klassen.html new file mode 100644 index 00000000..1718f968 --- /dev/null +++ b/topics/6a_static_klassen.html @@ -0,0 +1,1132 @@ + + + + + + + + + Context — Objectgeoriënteerd Programmeren + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
+ + + + + + + + + + +
+ +
+ +
+ + + + +
+
+ + + + +
+
+ + + + + + + +
+
+ + + +
+
+
+ + +
+ +
+ +
+

Context#

+

Deze les gaat over klassen en over objecten: instanties van klassen

+

Blueprint

+

Eerder is een klasse beschreven als een blauwdruk, het is de bouwtekening die vertelt wat nieuwe objecten moeten zijn. Denk aan de bouwtekening van een huis: op basis van die tekening kan één huis worden gebouwd, maar ook 100 of meer.

+
+

De object context#

+
+
+
public class House {
+    private int number;
+    private String colour;
+    
+    public House(int number) {
+        this.number = number;
+        colour = "red";
+    }
+    
+    public House(int number, String colour) {
+        this.number = number;
+        this.colour = colour;
+    }
+    
+    public String toString() {
+        return String.format("House number %d with colour %s", number, colour);
+    }
+}
+
+
+
+
+

De klasse House heeft twee constructors: één met alleen het huisnummer en een andere met zowel een huisnummer als een kleur. Dit geeft aan dat bij het maken van een huis in ieder geval een huisnummer meegegeven moet worden (maar niet welke), maar dat een kleur optioneel is. Pas bij een aanmaken van een huis (object) worden deze waarden concreet.

+
+
+
House myHouse = new House(149);
+House yourHouse = new House(150, "blue");
+
+
+
+
+
+
+
System.out.print(myHouse)
+
+
+
+
+
House number 149 with colour red
+
+
+
+
+
+
+
System.out.print(yourHouse)
+
+
+
+
+
House number 150 with colour blue
+
+
+
+
+
+
+

De statische context#

+
+
+
public class Account {
+    private String name;
+    private static double balance;
+
+    public Account(String name) {
+        this.name = name;
+        balance = 0.0;
+    }
+
+    public void deposit(int amount) {
+        balance += amount;
+    }
+
+    public double getBalance() {
+        return balance;
+    }
+    
+    public String toString() {
+        return String.format("%s's balance: %.02f", name, balance);
+    }
+}
+
+
+
+
+

Hierboven zie je een andere klasse, een spaarrekening waar geld op kan worden gestort. Let op, tot nu toe heb je methoden gezien die statisch gedefinieerd waren met het keyword static (denk aan main), maar velden kunnen ook statisch zijn. Hier is het veld balance statisch gedefinieerd. Let nu op wat er in de onderstaande code-voorbeelden gebeurt:

+
+
+
Account misja = new Account("Misja");
+Account simon = new Account("Simon");
+
+
+
+
+
+
+
misja.deposit(1500);
+
+
+
+
+
+
+
System.out.print(misja);
+
+
+
+
+
Misja's balance: 1500.00
+
+
+
+
+
+
+
simon.deposit(2500);
+
+
+
+
+
+
+
System.out.println(simon);
+
+
+
+
+
Simon's balance: 4000.00
+
+
+

+
+
+
+
+
+
+
System.out.println(misja);
+
+
+
+
+
Misja's balance: 4000.00
+
+
+

+
+
+
+
+

Dat is makkelijk rijk worden 😎. Maar wat gebeurt hier 🤔?

+
+

static#

+

Een klasse is niet alleen maar een definitie, hij kan ook waarden hebben. Dit zijn zogenaamde statische waarden, die gedefinieerd zijn voor de klasse en daardoor hetzelfde zijn voor alle objecten die van die klasse gemaakt worden.

+
+
+
public class Hello {
+    public static void main(String[] args) {
+        System.out.println("Hello, " + args[0] + "!");
+    }
+}
+
+
+
+
+

Met waarden bedoelen we hier niet alleen variabelen (data) maar ook methoden, bijvoorbeeld de welbekende methode main. Als een waarde eigen is aan de klasse dan betekent dit dat geen instantie van deze klasse nodig is om de methode aan te roepen.

+
> java HelloWorld.java Misja
+
+
+

De argumenten die via de commandline zouden worden gegeven en verzameld worden in een array van String’s.

+
+
+
String[] args = {"Misja"};
+Hello.main(args);
+
+
+
+
+
Hello, Misja!
+
+
+

+
+
+
+
+

De aanroep van de methode main via de klasse, en niet een via een instantie van de klasse.

+
+
+
+

Combineren#

+

Context mixen.

+
+
+
public class Person {
+    private String name;
+    
+    public Person(String name) {
+        this.name = name;
+    }
+    
+    public String toString() {
+        return name;
+    }
+    
+    public static void main(String[] args) {
+        Person a = new Person("Ariel");
+        Person b = new Person("Bo");
+        
+        System.out.println("Hi " + a + " and " + b + "!");
+    }
+}
+
+
+
+
+

De klasse als “client” van zichzelf.

+
> java Person.java
+
+
+
+
+
Person.main(args)
+
+
+
+
+
Hi Ariel and Bo!
+
+
+

+
+
+
+
+ + + + + + + + + + + + + + + + + +

static
(voor de hele klasse)

niet static
(per instantie)

methode

Math.sqrt()
Integer.parseInt()

name.length()
text.charAt()

veld/variabele

Math.PI

args.length
name.toUpperCase()

+

Je hebt inmiddels zowel methoden als klassen in een objectcontext én in een statische context gebruikt; je zal hier een aantal aanroepen wellicht herkennen.

+
+
+

Onverandelijkheid#

+

Door gebruik te maken van final zorg je ervoor dat een eenmaal aangemaakte variabele niet meer van waarde kan veranderen. Deze is nu final.

+
+
+
public class Square {
+    public static final int MAX_WIDTH = 100;
+}
+
+
+
+
+
+
+
Square.MAX_WIDTH;
+
+
+
+
+
100
+
+
+
+
+
+
+
Square.MAX_WIDTH = 101;
+
+
+
+
+
|   Square.MAX_WIDTH = 101;
+cannot assign a value to final variable MAX_WIDTH
+
+
+
+
+
+
+
Math.PI
+
+
+
+
+
3.141592653589793
+
+
+
+
+
+
+
Math.PI = 2 * Math.PI
+
+
+
+
+
|   Math.PI = 2 * Math.PI
+cannot assign a value to final variable PI
+
+
+
+
+

De conventie is dat final velden met hoofdletters worden geschreven. Het geeft aan dat het constanten zijn, onveranderlijke waarden.

+
+
+ + + + +
+ +
+ +
+
+ + +
+ + +
+
+ + + + + + + \ No newline at end of file diff --git a/topics/9b_threads.html b/topics/9b_threads.html index 56be8138..02d84a6d 100644 --- a/topics/9b_threads.html +++ b/topics/9b_threads.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+ diff --git a/topics/jars-importeren.html b/topics/jars-importeren.html index 0249db1b..691a1fcc 100644 --- a/topics/jars-importeren.html +++ b/topics/jars-importeren.html @@ -411,6 +411,62 @@

Objectgeoriënteerd Programmeren

+

+ + Week 5 + +

+