Avatar billede tryphan Nybegynder
26. november 2008 - 17:14 Der er 2 kommentarer

Kald af abstrakt metode.

Hej
Jeg er i gang med en delopgave, der en dag skal blive til et matadorspil.
Som det ser ud nu, skal en spiller lande på et felt refuge, hvor spilleren modtager en bonus.


Klassen Player indeholder spillerens navn, konto og lokation.
Derudover indeholder den metoden deposit.
Player returnere spillerNavn, spillerKonto og lokation.


Klassen Field indeholder den abstrakte metode landOnField(Player p)
Den returnere feltNavn og feltNummer.


Klassen Refuge indeholder feltNavn og feltNummer. Og oplysninger om en bonus.
Metoden landOnField(Player p) {p.deposit(Bonus)}
- Denne lægger altså Bonus til spillerens konto.
Den returnere bonus.


Klassen Test opretter en Player pl1, med et navn, en konto og en lokation.
Den skal så kalde den abstrakte metode landOnField(Player p) i klassen Field.


Koden ser således ud:
-----------------------------------------------------------------
public class Player {
   
    private String spillerNavn;
    private int spillerKonto;
    private int lokation;
   
       
    public Player (String n, int k, int l) {
           
        spillerNavn = n;
        spillerKonto = k;
        lokation = l;
           
    }
   
    public void deposit(int kr){
        spillerKonto = spillerKonto + kr;
    }
   
   
    public String toString() {
           
        String result = "Spillernavn: " + spillerNavn + " - Spillers konto: " + spillerKonto + " - Står på: " + lokation;
        return result;
           
    }
           
}

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

public abstract class Field {
   
    protected String feltNavn;
    protected int feltNummer;
   
   
    abstract public void landOnField(Player p);

    public String toString() {
       
        String result = "Feltnavn: " + feltNavn + "\nFeltnummer: " + feltNummer;
        return result;
       
    }
   
}

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

public class Refuge extends Field {

    private int Bonus = 2000;
   
    public Refuge () {
   
        feltNavn = "Refuge";
        feltNummer = 1;
   
    }
   
    public void landOnField (Player p) {
       
        p.deposit(Bonus);

    }
   
    public String toString() {
       
        String result = super.toString();
        result +="\nBonus: " + Bonus + " kr.";
        return result;
       
    }
   
}

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

public class Test {

   
    public static void main(String[] args) {
       
        Player pl1 = new Player("Jens", 10000, 1);
       
        System.out.println(pl1);   
        //Her tror jeg der skal være noget der kan kalde metoden landOnField()
        System.out.println(pl1);
       
    }

}

-----------------------------------------------------------------
Programmets output ser således ud:

Spillernavn: Jens - Spillers konto: 10000 - Står på: 1
Spillernavn: Jens - Spillers konto: 10000 - Står på: 1

Den nederste linje af outputtet skal jo så udskrive det nye beløb der står på spillerens konto.

Håber virkelig i kan hjælpe mig, har googlet op og ned i lang lang tid.
Avatar billede tryphan Nybegynder
26. november 2008 - 17:18 #1
Fik vidst ikke nævnt mit spørgsmål :P Hvordan kalder jeg metoden landOnField(Player p) i klassen Field. Det er vigtigt er det er i klassen Field, da der kommer andre felter med senere, der skal kunne kaldes gennem den metode. Også derfor den er lavet abstrakt.
Avatar billede tryphan Nybegynder
26. november 2008 - 18:04 #2
Fandt ud af det, ellers tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester