Einführung Objektorientierung

luluuxs

Aktives Mitglied
Hallo, ich habe eine Aufgabe bekommen, die gegebene Klasse System zum Laufen zu bringen.
Dabei darf ich in ihr nichts verändern, aber verschiedene Klassen hinzufügen.
Die Ausgabe soll:
/home/max/homework
/home/peter/homework
/home/peter
/home/max
sein.
Mein Problem ist, dass ich in meiner Directory-Klasse eine static-Variable erstellt habe, ich denke mal, dass das programmierstiltechnisch
nicht feinste Sahne ist, und, dass die letzten beiden Zeilen meiner Ausgabe dadurch am Ende auch noch ein "/" haben, jedoch finde ich keine Lösung, um
das Problem zu beheben.
Hat jemand einen Tipp für mich ?
LG

Mein bisheriger Code:

Java:
class System {

    public static void main(String[] args) {
        Directory root = new Directory("/");
        Directory home = new Directory(root, "home");
        Directory max = new Directory(home, "max");
        Node homework = new File(tom, "homework");
        Directory peter = new Directory(home, "peter");
        Node homework2 = new File(bob, "homework");
        Node maxNode = max;
        Out.println(homework.getPath());
        Out.println(homework2.getPath());
        Out.println(peter.getPath());
        Out.println(maxNode.getPath());
    }

}

Java:
class Node {

    String path;

    String getPath () {
        return path;
    }

}

class File extends Node {

    File (Node obj, String path) {
        this.path = obj.path + path;
    }

}


class Directory extends Node {

    static String a;

    Directory(String path) {

        this.path = path;
        a = path;

    }

    Directory(Directory objd, String path) {

        this.path = objd.path + path + a;

    }
}
 
Mein Problem ist, dass ich in meiner Directory-Klasse eine static-Variable erstellt habe, ich denke mal, dass das programmierstiltechnisch
nicht feinste Sahne ist, ...
Nein, grundsaetzlich spricht nichts gegen static Variablen. In diesem Falle aber hast du Recht, das sollte man anders loesen.

Hat jemand einen Tipp für mich ?
Du musst dir die Zustaende der Instanzen zur Laufzeit entweder vorstellen oder ansehen. Zum Beispiel:

Java:
Directory root = new Directory("/");
    // root.path == "/"
    // Directory.a == "/"

Directory home = new Directory(root, "home");
    // home.path == "/home/"
    //           root.path +  path  +  a
    //              "/"    + "home" + "/"
    // Directory.a == "home"

Directory max = new Directory(home, "max");
    // max.path == "/home/maxhome"
    //           home.path + path  +  a
    //            "/home/" + "max" + "home"
    // Directory.a == "max"

Wenn du die statische Variable einfach entfernen wuerdest, waere ja fast alles richtig, die fehlt nur das anfuegen eines Pfad-Separators beim zusammenhaengen.

Java:
this.path = objd.path + "/" + path;
 
Das würde mir fehlen, ja
aber da das "/" von root ist, glaube ich nicht, dass es Sinn macht dies einfach so hinzuzufügen
Was genau meinst du mit den Zuständen?
 
Okay, danke, ich habs jetzt glaube ich verstanden, ich füge jetzt
Java:
this.path = objd.path + "/" + path;
an, ich war mir nicht sicher, ob das vielleicht die Aufgabe "schummelt", da es vielleicht einen weg ohne static String oder "/" geben könnte mit root.path oder Ähnliches die Ausgabe zun erreichen
 
dein pfad wächst so
Java:
1. =>  "/"
2. => 1. + "home/"
3. => 2. + "..."
 

Zurück
Oben