Modellierung, vererbung,

So in die Richtung sollte es dann gehen oder ?
Code:
ublic class ContainerStack {

    private Container40ft container40ft;
    private Container40ftHC container40ftHC;

    Stack<Container> stack = new Stack<>();

    public Container pick() {
        Container container = stack.pop();
        return container;
    }

    public void place(Container container) {
        stack.push(container);
    }

}
 
Muss man hier alles selber machen?

Anhang anzeigen 12884

Hier fehlen noch Methoden. Wo und welche?
Wenn ich es richtig sehe, fehlen nur die Methoden vom Kran. Darf ich fragen, wie du dieses Diagramm erstellt hast ?
Der Kran muss doch auch Zugriff auf den Stapel haben oder ? Den der Kran muss die Container ja bewegen und wie gesagt er kann das nur wenn der Container nicht schwerer als seine Traglast ist. Mit der 2. Bedingung tue ich mir schwer. Ich denke man merkt, dass ich kein Muttersprachler in der deutschen Sprache bin. Aber vielleicht kann mir wer das erläutern:

"
Ein Kran besitzt eine maximale Hubhöhe. Das ist die Höhe, die ein theoretisch vollkommen flacher Gegenstand der Höhe 0 angehoben werden könnte. Die tatsächliche Hubhöhe muss um die Höhe des angehobenen Gegenstands vermindert werden. Beträgt die maximale Hubhöhe 80 Fuß, so ergibt sich für einen 10 Fuß hohen Container eine tatsächlich erreichbare Hubhöhe von 70 Fuß. Falls die tatsächlich erreichbare Hubhöhe geringer als die Höhe des Zielstapels ist, ist es dem Kran nicht möglich, den Container auf dem Zielstapel zu platzieren. Der Container wird in diesem Fall gar nicht erst vom Ursprungsstapel entnommen. Stellen Sie die maximale Hubhöhe des Krans unveränderlich auf 160 Fuß ein. " Die Einheiten hab ich umgerechnet in cm
 
Code:
import java.util.Stack;

public class ContainerStack {

    private int containerStackID;
    private static int firstContainerID = 0;

    Stack<Container> stack = new Stack<>();

    public void createContainerStackID() {
        containerStackID = ++firstContainerID;
    }

    public int getContainerStackID() {
        return containerStackID;
    }

    public Container pick() {
        Container container = stack.pop();
        return container;
    }

    public void place(Container container) {
        stack.push(container);
    }

    public ContainerStack(Container container) {
        createContainerStackID();
        place(container);
    }
}
Ich glaube so kann die Stapel Klasse auch nicht stimmen oder ? Muss Im Konstruktor jedes Mal eine neuer stack erstellt werden oder passt es so ? Ich will ja am Ende mindestens 3 Stapel im TerminalContainer haben, auf denen man die Container ablegen kann. Also sollten es auch 3 unterschiedliche Stacks zum speichern sein, aber ich bin mir nicht sicher, ob meine Implementierung, das so gewährleistet
 
Ein Kran besitzt eine maximale Hubhöhe. Das ist die Höhe, die ein theoretisch vollkommen flacher Gegenstand der Höhe 0 angehoben werden könnte. Die tatsächliche Hubhöhe muss um die Höhe des angehobenen Gegenstands vermindert werden. Beträgt die maximale Hubhöhe 80 Fuß, so ergibt sich für einen 10 Fuß hohen Container eine tatsächlich erreichbare Hubhöhe von 70 Fuß. Falls die tatsächlich erreichbare Hubhöhe geringer als die Höhe des Zielstapels ist, ist es dem Kran nicht möglich, den Container auf dem Zielstapel zu platzieren. Der Container wird in diesem Fall gar nicht erst vom Ursprungsstapel entnommen. Stellen Sie die maximale Hubhöhe des Krans unveränderlich auf 160 Fuß ein. " Die Einheiten hab ich umgerechnet in cm
Was verstehst du denn daran nicht? Du musst halt vor dem Abladen/Absetzen prüfen, ob der Kran die Höhe des Stapels überhaupt erreichen kann.
 
Code:
import java.util.Stack;

public class ContainerStack {

    private int containerStackID;
    private static int firstContainerID = 0;

    Stack<Container> stack = new Stack<>();

    public void createContainerStackID() {
        containerStackID = ++firstContainerID;
    }

    public int getContainerStackID() {
        return containerStackID;
    }

    public Container pick() {
        Container container = stack.pop();
        return container;
    }

    public void place(Container container) {
        stack.push(container);
    }

    public ContainerStack(Container container) {
        createContainerStackID();
        place(container);
    }
}
Ich glaube so kann die Stapel Klasse auch nicht stimmen oder ? Muss Im Konstruktor jedes Mal eine neuer stack erstellt werden oder passt es so ? Ich will ja am Ende mindestens 3 Stapel im TerminalContainer haben, auf denen man die Container ablegen kann. Also sollten es auch 3 unterschiedliche Stacks zum speichern sein, aber ich bin mir nicht sicher, ob meine Implementierung, das so gewährleistet
Und jetzt wo ich so darüber nachdenke, weiß ich auch net, ob die place methode in den Konstruktor gehört. Die Aufgabe gibt ja nicht her, ob schon stapel mit Containern vorhanden sind, aber es muss ja eigentlich so sein, denn der Kran oder das Terminal kann sie ja schließlich nicht herzaubern
 
Ich will ja am Ende mindestens 3 Stapel im TerminalContainer haben, auf denen man die Container ablegen kann.
Es ist ja nicht festgelegt, wieviele Containerstapel am ContainerTerminal stehen. Deshalb wirst du in ContainerTerminal auch eine flexible Möglichkeit benötigen mehrere Containerstapel zu haben. List<ContainerStack> würde sich da anbieten.

Da die Liste indexiert ist, könnte dieser Index auch gleich als Identifikation für die Stapel verwendet werden.
 
Was verstehst du denn daran nicht? Du musst halt vor dem Abladen/Absetzen prüfen, ob der Kran die Höhe des Stapels überhaupt erreichen kann.
Also sollte ich in der Stapel klasse eine Methode haben, die die Größe des Stapels berechnet, um es zu vereinfachen ?

Aber in der Kran Klasse versteh ich dann nicht, wie ich denn über die Stappel auf die Container zugreifen kann
Java:
ublic class Crane {

    private static final int maxHeight = 2438; // 160 Fuß entsprechen 2438,4 cm
    private static final int maxloadCapacity = 30; // in Tonnen
    private ContainerStack containerstack;

    public static int getMaxheight() {
        return maxHeight;
    }

    public static int getMaxloadcapacity() {
        return maxloadCapacity;
    }

    public static void transportContainer(ContainerStack origin, ContainerStack destination) {
        if (Crane.getMaxloadcapacity() > origin.getContainer???? { // Wie greife ich auf die Container zu
            Container origin = origin.destination.push(origin);
        }
    }

}
Edit : Ich weiß inzwischen wie ich darauf zugreife, aber ich weiß nicht wie ich die Höhe vom Stappel bestimmen soll. Eigentlich hätte ich ja stack.size * Höhe gesagt, aber die Container haben keine einheitliche Höhe

Edit : Ich bin dumm und die Container haben eine einheitliche Größe. habs verwechselt mit der Länge
 
Zuletzt bearbeitet:
Aber in der Kran Klasse versteh ich dann nicht, wie ich denn über die Stappel auf die Container zugreifen kann
origin.pick() nimmt den obersten Container des Ursprungsstapels...

Edit: Allerdings hast du hier das Problem, dass du vor dem Nehmen prüfen musst, ob du den Container überhaupt nehmen kannst. Wir kennen die Aufgabe nicht. Gibt es genauere Angaben, welche Methoden der Stapel hat und wie sie benannt sind?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben