Kort introduktion till objektreferens som parameter
Antag följande exempel: Vi har en värld med två paddor och vi vill kontrollera om de kolliderar med varandra vilket gäller om avståndet mellan dem är mindre än eller lika med dist.
World w = new World(400, 400); Turtle t1 = new Turtle(w, 100, 100); Turtle t2 = new Turtle(w, 300, 300); int dist = 10;Deklarera och initiera några variabler if ( t1.collision(t2, dist) ) { System.out.println("Krock"); } else { System.out.println("Ingen krock"); }Skicka paddan t2 och avståndskriteriet som parametrar till metoden collision
Så här kan koden för metoden collison i klassen Turtle se ut:
public boolean collision(Turtle t, int dist) {int x1 = this.getXPos(); int y1 = this.getYPos();Tag reda på aktuellt objekts position int x2 = t.getXPos(); int y2 = t.getYPos();Tag reda på positionen för det objekt som är parameter int dx = x2-x1; int dy = y2-y1; int d = (int) ( Math.sqrt(dx*dx+dy*dy) );Beräkna avståndet med Pythagoras sats return d <= dist;Returnera true om d är mindre än dist, annars false. }
Vi ser att metoden har två formella parametrar:
Ett Turtle-objekt och en int som är avståndet.
Anropet t1.collision(t2,dist) innebär att t1 är this i metoden och den aktuella parametern t2 blir den formella parametern t i metoden.
Således this.getXPos() är x-positionen för t1 och t.getXPos() är
x-positionen för t2.
Ett annat exempel på användning av ett objekt som parameter finns redan i klassen Turtle nämligen en metod för att vrida en padda mot en annan padda med t.ex.
t1.turnToFace(t2) dvs där parametern är ett objekt.
Se vidare minilektionen om allmän parameteröverföring.