3 svar
586 visningar
gulfi52 896 – Fd. Medlem
Postad: 1 maj 2017 16:15 Redigerad: 1 maj 2017 16:18

Uppgift arv

Man har sedan en tidigare övning en klass Turtle som beskriver en sköldpadda. Nu ska man öva sig på arv och skriva en klass RaceTurtle som ska springa i en labyrint.

Man vet att RaceTurtle ärver från Turtle. Jag är osäker på vad man får och inte får skriva men eclipse reagerade åtm inte på min formulering nedan av konstruktorn.

Får man skriva så som jag gjort? :

//skapar en sköldpadda som ska skpringa i fönstret w och som har startnummer nbr. Sköldpaddan startar med pennan nere och nosen vänd åt höger.//
public class RaceTurtle extends Turtle {

public int nbr;
public int x;
public int y;
public int degrees = 0; //TÄNKER JAG ÖVERSKUGGAR DEGREES I TURTLE SÅ DETTA ÄR VAD SOM GÄLLER

public RaceTurtle(RaceWindow w, int nbr,){
super(w,x,y);//HÄR ÄR MITT PROBLEM - RACETURTLE ÄRVER FRÅN TURTLE - MEN HUR FÅR MAN SKRIVA FÖR ATT FÅ IN X OCH Y I DEN? SKA JAG SKRIVA SOM JAG GJORT PÅ FÖLJADE TVÅ RADER? ELLER SKA JAG SOM PARAMETER SKRIVA "int x = w.getStartXPos(nbr)"?
this.x = w.getStartXPos(nbr); // MAN HAR TILLGÅNG TILL EN HJÄLPKLASS I RACEWINDOW SOM BERÄKNAR EN BRA STARTPOSITION FÖR SKÖLDPADDAN UTIFRÅN STARTNUMMER//
this.y = w.getStartYPos(nbr);
}

}

---------------

Turtle konstruktorn:

/**
* Skapar en sköldpadda som ritar i ritfönstret w. Från början befinner sig
* sköldpaddan i punkten x, y med pennan lyft och huvudet pekande rakt uppåt
* i fönstret (i negativ y-riktning).
*/
public Turtle(SimpleWindow w, int x, int y) {
this.w = w;
this.x = x;
this.y = y;
degrees = 90;
isPenDown = false;
}

Porchy 21
Postad: 1 maj 2017 21:54

Du får gärna lägga ner lite mer krut på att formulera din uppgift och hålla dig undan från 'CAPS LOCK'.

Så jag ser några problem med vad du skrivit:

1. Du har ingen konstruktor i Turtle så du har inte mycket att anropa.
2. Du har ett bonuskommatecken efter nbr i RaceTurtle(RaceWindow w, int nbr,) <------- i slutet.

Det finns inte något rätt svar på din fråga, det är utefter smak, jag skulle personligen ha skapat en konstruktor i Turtle som du anropar. Om dessa variabler inte ska kunna nås från någon annan än subklasserna är det även rimligt att du ger dem scopet protected.

gulfi52 896 – Fd. Medlem
Postad: 2 maj 2017 00:51
Porchy skrev :

Du får gärna lägga ner lite mer krut på att formulera din uppgift och hålla dig undan från 'CAPS LOCK'.

Så jag ser några problem med vad du skrivit:

1. Du har ingen konstruktor i Turtle så du har inte mycket att anropa.
2. Du har ett bonuskommatecken efter nbr i RaceTurtle(RaceWindow w, int nbr,) <------- i slutet.

Det finns inte något rätt svar på din fråga, det är utefter smak, jag skulle personligen ha skapat en konstruktor i Turtle som du anropar. Om dessa variabler inte ska kunna nås från någon annan än subklasserna är det även rimligt att du ger dem scopet protected.

Suck - slarvfel av mig, glömde klistra in konstruktorn:

 

/**
* Skapar en sköldpadda som ritar i ritfönstret w. Från början befinner sig
* sköldpaddan i punkten x, y med pennan lyft och huvudet pekande rakt uppåt
* i fönstret (i negativ y-riktning).
*/
public Turtle(SimpleWindow w, int x, int y) {
this.w = w;
this.x = x;
this.y = y;
degrees = 90;
isPenDown = false;
}

 

Mitt problem är alltså hur man fåt konstruktorna i RaceTurtle att skapa en sköldpadda enligt de intruktionerna som står ovanför konstruktorn där - hur man får ihop detta med Turtle som den ärver från.

Porchy 21
Postad: 2 maj 2017 21:02

public RaceTurtle(SimpleWindow w, int nbr) {
      super(w, w.getStartXPos(nbr), w.getStartYPos(nbr));
}

Svara
Close