Avatar billede oprah Nybegynder
14. oktober 2004 - 20:42 Der er 5 kommentarer

Hjælp til implementation metoder.

Hejså
Jeg er ikke så god til Java. Er der nogen der kan fortælle mig, hvordan jeg implementere de manglende metode i den følgende klasse.

import java.util.*;

/**
* Visitor modellerer en besøgende, der kan
* gå rundt i rum og samle genstande op.
*
*
* @version 26 september 2004
*/
public class Visitor
{
    private String name;
    private Room location;
    private List items;

    /**
    * Konstruktør for Visitor-objekter
    * @param name Navnet på den besøgende
    * @param r Rummet, som den besøgende starter i
    */
    public Visitor(String name, Room r)
    {
       
    }

    /**
    * Returnerer rummet, hvor den besøgende befinder sig
    * @return Rummet, hvor den besøgende befinder sig
    */
    public Room getLocation()
    {
        return location;
    }

    /**
    * Flytter den besøgende i retning <code>dir</code>
    * @param dir Retningen, som den besøgende går i
    */
    public void move(int dir)
    {
       
    }

    /**
    * Den besøgende samler genstand <code>i</code> op, som bliver
    * fjernet fra det rum, som den besøgende befinder sig i
    * @param i Genstanden, som den besøgende samler op
    */
    public void pickUp(Item i)
    {
            items.add(i);     
            location.removeItem(i);
            System.out.println(name + " picks up " + i.getName());
        }
       
 
    public void leaveItem(Item i)
    {
      items.remove(i);
      location.addItem(i);
                System.out.println(name + " leaves " + i.getName());
            }
        }

Tak på forhånden
Avatar billede Slettet bruger
14. oktober 2004 - 20:54 #1
Istedet for at gi' dig løsningen vil jeg hellere give dig tilstrækkeligt inspiration, således du kan løse opgaven (og blive bedre til java) på egen hånd.

Koden som mangler i Constructor'en skal tildele parametrene variablerne name og r til variablerne name og location.

Metoden move kan jeg desværre ikke helt gennemskue hvad skal gøre med, men jeg vil gætte på at du skal manipulere (ændre værdier) i location-variablen.

Håber det hjalp dig (bare en smule).
Avatar billede oprah Nybegynder
14. oktober 2004 - 21:17 #2
Tak, Jeg har prøvet, men kan ikke få den til at virke. Kan du ikke fortælle hvordan man gør det?
Avatar billede Slettet bruger
14. oktober 2004 - 21:20 #3
Okay, men det er ikke med min goe' vilje.

/**
    * Konstruktør for Visitor-objekter
    * @param name Navnet på den besøgende
    * @param r Rummet, som den besøgende starter i
    */
    public Visitor(String name, Room r)
    {  this.name = name;
      this.location = r;
     
    }

Skal rettes til:

/**
    * Konstruktør for Visitor-objekter
    * @param name Navnet på den besøgende
    * @param r Rummet, som den besøgende starter i
    */
    public Visitor(String name, Room r)
    {
     
    }

Har du koden til Room-klassen liggende, foruden den er jeg ikke sikker på at jeg kan gøre metoden move færdig....
Avatar billede Slettet bruger
14. oktober 2004 - 21:21 #4
Oooops...

Det var lige omvendt... Men du kan nok se forskellen på de to Contructor'e
Avatar billede oprah Nybegynder
14. oktober 2004 - 22:05 #5
Endnu engang tak. Her er koden til Room-klassen

import java.util.*;
import java.util.Random;
import java.util.ArrayList;
/**
* Room modellerer et rum, der har forbindelse til en række andre rum
* og som kan indehold genstande og besøgende.
*
*
* @version 26 september 2004
*/
 
    /**
    * rooms is an list of length 4 where
    *  rooms.get(0) refers to the room in direction EAST
    *  rooms.get(1) refers to the room in direction NORTH
    *  rooms.get(2) refers to the room in direction WEST
    *  rooms.get(3) refers to the room in direction SOUTH
    */
   
public class Room

    private List rooms;
    private List items;
    private String name;
    private Random randomGenerator;

    /**
    * Konstruktør for et rum
    * @param name Navnet på rummet
    */
   
    public Room(String name)
    {
        rooms = new ArrayList();
        for (int i = 0; i < 4; i++) {
            rooms.add(i,null);
        }
        items = new ArrayList();
        randomGenerator = new Random();
       
        this.name = name;
       
       
    }

    /**
    * Forbinder dette rum til rum <code>r</code> i retning <code>dir</code>
    *  og laver også forbindelsen den anden vej
    * @param dir Retningen, som det andet rum ligger i
    * @param r Det andet rum
    */
   
    public void connectTo(int dir, Room r)
    {  //først sættes retning og navn for det pågældende rum:
        rooms.set(dir,r);
    //efter at dette er sat, sættes det modsatrettede rum for dette rum: 
    r.rooms.set(Direction.oppositeDir(dir),this);
    }

    /**
    * Returnerer om hvorvidt der er et rum i
    * retning <code>dir</code> fra dette rum
    * @param dir Retningen, hvortil vi tjekker om der er forbindelse
    * @return Om der findes et rum i retning <code>dir</code> fra dette
    */
    public boolean roomExists(int dir)
    {
        return (rooms.get(dir)!=null);
    }



      /**
    * Returner rummet forbundet til dette rum i retning <code>dir</code>
    * @param dir Retningen, som vi vil vide hvilket rum der er i
    * @return Rummet i retning <code>dir</code>
    */

public Room leadTo(int dir) {   
            return (Room) rooms.get(dir);
        }       
 


    /**
    * Tilføjer genstanden <code>i</code> til rummet
    * @param i Genstanden, der skal tilføjes til rummet
    */
    public void addItem(Item i)
    {
        items.add(i);
    }

    /**
    * Returner hvorvidt der er genstande i rummet
    * @return Om der er genstande i rummet
    */
    public boolean itemExists()
    {
        if (items.isEmpty())
        return false;
        else
        return true;
    }

 
    /**
    * Returner en tilfældig af genstandene i rummet
    * @return En tilfældig genstand fra rummet
    */

  public Item chooseItem()
    {
        int index = randomGenerator.nextInt(items.size());
        return (Item)items.get(index);
        }       
 


    public void removeItem(Item i)
    {
      items.remove(i);
    }
   

    public boolean haveItem()
    {     
        return (items.size() > 0);
    }
 
}
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