Java Zugriff auf mehrere Instanzen einer anderen Klasse

Sn0oze

Lt. Junior Grade
Registriert
Dez. 2007
Beiträge
344
Hallo zusammen,

da ich gerade total auf dem Schlauch stehe, hoffe ich auf eure Hilfe ;)

Ich habe hier folgendes Problem.

Aufgabenstellung: Mehrere Kamele sollen einer Karavane zugeordnet werden. Eines dieser Kamele ist ein LeaderCamel, welches in unserer Karavane immer am Anfang stehen muss. Einer Karavane wird Gepäck zugewiesen, welches auf alle Kamele verteilt werden muss. Die Kamele können dabei nur jeweils unterschiedlich viel tragen.

Mein Problem ist nun, dass ich überhaupt keinen Ansatz habe wie ich die erzeugten Kamele speichern soll, sodass ich hier später auf die maximale Beladung des jeweiligen Kamels (get Methode) beim Hinzufügen von Gepäck zugreifen kann.

Fällt euch hier vielleicht ein Lösungsansatz ein?

Code:
class Camel {

    private String name = "";
    private int maxpace = 0;

    Camel(String name, int maxpace) {
        this.name = name;
        this.maxpace = maxpace;

    }

    public String getName() {
        return this.name;
    }

    public int getMaxpace() {
        return this.maxpace;
    }
}

class LeaderCamel extends Camel {

    LeaderCamel(String name, int maxpace) {
        super(name, maxpace);
    }
}

class Caravan {

    private int distance;
    private int load;
    
    Caravan(LeaderCamel leaderCamel) {

    }

    public void addCamel(Camel camel) {
        // Wo am besten hinzufügen?
    }

    public void setDistanceToTarget(int distance) {
        this.distance = distance;
    }

    public void addLoad(int load) {
        this.load = load; 
    }
}

public class Aufgabe2 {
    public static void main(String args[]) {
        LeaderCamel sandy = new LeaderCamel("Sandy", 12);
        Camel sahara = new Camel("Sahara", 18);
        Camel thunder = new Camel("Thunder", 13);
        Caravan dacar = new Caravan(sandy);
        dacar.addCamel(sahara);
        dacar.addCamel(thunder);
        dacar.setDistanceToTarget(75);
        dacar.addLoad(20);
    }
}
 
Du könntest deiner Karavane-Klasse eine Liste mit allen Kamelen hinzufügen (die Liste als Attribut dieser Klasse)
ODER einen Zeiger in jedem Kamel speicher der auf das nächste Kamel zeigt (der Zeiger des letzten Kamels zeig auf null)

Ich persönlich würde die zweite
Variante bevorzugen
 
HOF23 schrieb:
Ich persönlich würde die zweite
Variante bevorzugen
Ich nicht - im Gegenteil, ich halte die für extrem schlechtes Design.

Man muss sich immer überlegen, welche Bedeutung ein Attribut für das Objekt hat. In diesem Fall wäre ein "next"-Pointer das nächste Kamel in irgendeiner Liste von Kamelen. Ist jedes Kamel in einer Liste? Was ist mit einem Kamelpaar in einem Zoo? Wie hilft mir der next-Pointer des Kamels weiter, wenn ich die Kamel-Instanz über den Namen des Kamels in einer Hashmap nachschlage?

Antworten: Nein, keine Ahnung und gar nicht. Wenn eine Liste von Kamelen benötigt wird, benutze einen LinkedList-Container, denn genau dafür sind die Container ja da.

Edit: Man kann natürlich ein CamelItem bauen, das ein Kamel sowie einen Pointer auf das nächste CamelItem enthält. Das wäre dann eine einfach verkettete Liste. Aber damit erfindest du nur ohne Not das Rad neu.
 
Zuletzt bearbeitet:
Zurück
Oben