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.