opgaven vragen tutoraat door nick en wessel

Author: Nick Tel en Wessel van Tamelen
Week 1
Opgave 1:
b) Je hebt hierboven twee instantievariabelen gedeclareerd. Voordat je ze zinnig zou kunnen
gebruiken moet je ze wel initialiseren. Leg uit wat de begrippen declaratie en initialisatie betekenen.
N.B. In het BlueJ boek worden declaratie en initialisatie vaak in één keer gedaan
Met initialiseren zeg je wat voor onderdelen het object heeft (bijvoorbeeld de variabelen).
definiëren geeft een waarde aan het object en wat voor type het is.
Opgave 4:
Opgave 4 – Belangrijk verschil tussen primitieve typen en objecten
Primitieve typen (zie 3.7 en bijlage B BlueJ boek) en objecten zijn twee fundamenteel verschillende
soorten typen. Het belangrijkste verschil in gedrag zie hieronder geïllustreerd aan de hand van twee
code fragmenten:
Verklaar dit verschil in gedrag. Gebruik in je uitleg de uitdrukkingen “directe opslag” en
“referentie(=verwijzing)”. In het college is hier ook aandacht aan besteed met het Classroom
voorbeeld
Objecten gebruiken worden aangeroepen doormiddel van referenties. je hebt 1 object maar
meerdere manieren om dit object aan te roepen.
Primitieve typen: worden direct opgeslagen en geef je van tevoren aan wat voor beginwaarde ze
hebben.
Week 2
Opdracht 5
a) Leg uit waarom het gebruik van een while lus in de methode verwerkRijVoorKassa() handiger is
dan een for lus.
Omdat de waarde van de Arraylist Size geen vast gegeven is. hierdoor kan je beter een while
gebruiken.
week 3
Opgave 1 – Refactoren: dubbele methodes en het gebruik van een iterator
Als je goed kijkt naar de code van de eerste versie van de kantine simulatie valt je misschien op dat er
soms methodes zijn die twee keer voorkomen. Een van de twee methodes is slechts een soort
doorgeefluik. Dit kun je efficienter oplossen.
a) Bij welke methodes in Kassa en Kantine komt dit voor?
get totaal Artikelen. uit de klasse Kassa
get totaalprijs. uit de klasse Kassa
LoopPakSluitAan uit de klasse Kantine
Opgave 2 – De klasse KantineAanbod
Je krijgt van ons de klasse KantineAanbod kado, zie Blackboard. Voeg deze klasse aan je BlueJ
project toe. Zorg dat je de code goed begrijpt!
a) Leg uit waarom het goed is om de methodes ArrayList<Artikel> getArrayList(String productnaam)
en Artikel getArtikel(ArrayList<Artikel>) private te maken.
Omdat deze methodes afhankelijk van elkaar zijn. Als je ze public maakt dan kunnen ze dus door
de eindgebruiker veranderd worden en lopen de methodes niet meer synchroon. dus dan krijg je
dat bijvoorbeeld de prijzen van kaas koppelt aan brood.
b) In welke situatie gebruik je een HashMap en wanneer een HashSet?
Een hashmap slaat een referentie en waarde op van een object . hierdoor kan je dus iets ophalen
als je de positie ervan weet.
Een hashset kan je gebruiken om een object en waarde op een specifieke plek op te slaan.
Opgave 3 – Refactoren van Kantine en KantineSimulatie
a) Leg de werking van de constructor uit.
public KantineSimulatie()
{
kantine=new Kantine(); // maakt een nieuwe kantine aan
random=new Random(); // maakt een nieuw random cijfer
int[] hoeveelheden=getRandomArray(
AANTAL_ARTIKELEN, MIN_ARTIKELEN_PER_SOORT,
MAX_ARTIKELEN_PER_SOORT); // vult de array met hoeveelheden met een random aantal.
kantineaanbod=new KantineAanbod(artikelnamen, artikelprijzen,
hoeveelheden); // hier maakt hij een nieuw kantine aanbod aan
kantine.setKantineAanbod(kantineaanbod);
}
b) Leg de implementatie van int getRandomValue(int min, int max) uit en met name waarom er +1 in
voorkomt. Gebruik de Java API. Hint: denk aan de betekenis van inclusief en exclusief.
int min geeft aan wat de minimale waarde van de random moet zijn
int max geeft de maximale waarde van het random cijfer aan
met +1 kan je dus zorgen dat de som eclusief de minimale waarde is ( deze doet hij dus +1) en
inclusief de maximale waarde.