Opdracht 6.1

Plaats reactie
admin
Site Admin
Berichten: 39
Lid geworden op: 01-02-2017 08:45

Opdracht 6.1

Bericht door admin » 20-02-2017 11:56

INTRO
Bij het scenario van de fish kwam de addObject() voor in de klasse Waterworld (daar voegde je de FleaRed en FleaGreen een aantal keer toe). Omdat Waterworld een subklasse was van World kon je daar de addObject() methode gebruiken.

Hier zie je dat het de tuinman is die de plant-objecten gaat toevoegen (met de z-toets). De tuinman is geen subklasse van World (maar van Actor). Als je bij de tuinman dus een addObject() gaat zetten, dan wordt deze methode-aanroep niet herkend. Er moet dus een koppeling worden gelegd met de klasse World. Als die is gelegd, herkent greenfoot de methode addObject en kun je die methode dus aanroepen met addObject()

Vandaar dat je begint met World world = getWorld();
De methode getWorld() zul je aantreffen bij de klasse Actor (kijk maar eens en lees de info). Zo wordt dus de link gelegd tussen een actor en de wereld waarin die actor zich bevindt.
De tuinman, de waterstraal, de plant zijn allemaal subklassen van actor en kennen dus de aanroep getWorld();

Dus met World world = getWorld(); maak je zo'n koppeling tussen het object (bijv de tuinman) en de klasse World. Zo'n koppeling heet een objectreferentie. De objectreferentie heet hier world (kleine letters). Je mag dat ook wereld noemen of elke andere naam die je wilt, dus: World wereld = getWorld();

Als die koppeling eenmaal is gelegd, kent het object tuinman dus de methode addObject. Dan kun je die methode dus gaan aanroepen, maar niet zomaar:
addObject(new Plant(), getX(), getY()); lijkt hier goed.

Maar omdat addObject() in de klasse World zit, moet de objectreferentie er nog voor:

world.addObject(new Plant(), getX(), getY());
of als je de objectrefentie 'wereld' had genoemd:
wereld.addObject(new Plant(), getX(), getY());

Dit wordt ook uitgelegd op inf-actief en bij de volgende opgaven. Maar ik heb er ook een filmpje van gemaakt: https://youtu.be/Tby-GhiakgA


6.1 a. Dubbelklik op World en zoek in de klasse World naar addObject. Daar zie je hoeveel parameters er zijn en van welk type. Het zijn er drie: 1 van het type Actor en twee van het type Int (geheel getal)
6.1b. Bij de klasse World
6.1c addObject hoort bij de klasse World (zie 1), maar wordt aangeroepen vanuit de klasse gardener.

Plaats reactie