De structuur van ons programma is nu zo opgezet dat we een hele machine hebben draaien (movingCircle) die in staat is om unieke, bewegende cirkels te produceren (mijnCirkel). Het probleem met onze machine op dit moment is wel dat ze maar 1 soort cirkel kan produceren. Al de gemaakte cirkels zijn compleet identiek. Je kan je voorstellen dat de knoppen van de machine zijn vastgeroest. Ze is niet instelbaar.
Als we naar de code kijken komt dit omdat we bij het maken van de objecten (in de constructor) hard–coded waarden meegeven:
class MovingCircle{ int x; int y; int snelheid; MovingCircle(){ x = 20; y = 100; snelheid = 1; } ...//rest van de code
Als we kijken naar de constructor, merken we op dat MovingCircle() een functie is. In het vorige hoofdstuk hebben we geleerd hoe we parameters kunnen doorgeven, die we vervolgens in de functie kunnen gebruiken. Dat wil zeggen dat we dus bij het aanmaken van een object:
mijnCirkel = new MovingCircle();
parameters kunnen doorgeven richting constructor. De constructor staat in voor het maken van de unieke objecten. Op het moment dat de constructor wordt aangeroepen stellen we de machine in en wordt er een object geproduceerd. Als we dus variabele waarden kunnen doorgeven richting de constructor, kunnen we ook variërende objecten maken! Deze objecten zullen dan verschillend van elkaar, helemaal autonoom kunnen werken. Ze hebben als het ware hun eigen geheugen, onafhankelijk van het hoofdprogramma.
We passen dit toe in onze code door een waarde te introduceren die de snelheid van de cirkel op een variabele manier kan bepalen:
let op de flow!
Als we nu verschillende objecten aanmaken met verschillende snelheden en hun “drawBlackCircle” functie aanroepen krijgen we:
oefening
Pas bovenstaand voorbeeld zo aan, dat er bij het starten van je programma 5 cirkels verschijnen op willekeurige plaatsen, met een willekeurige snelheid.