Hallo,
ich muss mich momentan mit Graphenalgorithmen beschäftigen. Eine Aufgabe ist unter anderem das Zeichnen von planaren Graphen.
Zur grundlegenden Modellierung eines Graphen benutze ich
und
Für einen normalen Graphen reicht dies erst einmal aus.
Meine Modellierung für einen zeichenbaren Graphen erweitert die Knoten um Bildschirmpositionen, damit ich nicht noch großartig mit Maps auf Canvas-Objekte arbeiten muss:
Auch dies funktioniert nach meinem Verständnis ganz gut.
Designprobleme bekomme ich bei der Modellierung der zeichenbaren Kanten.
Prinzipiell würde ich ganz gerne folgendes machen:
So würde ich am wenigsten redundante Informationen speichern. Allerdings habe ich solch ein Design bis jetzt noch in keinem Projekt gesehen. Und zudem schmeißt mir der Compiler auch einen Fehler um die Ohren, dass ich (natürlich) für den Konstruktor der Oberklasse auch in dieser Klasse einen mit der Signatur
benötige.
Eine andere Möglichkeit wäre, der Klasse GraphicalNode statt den GraphicalNodes lediglich normale Nodes zu übergeben und dazu dann noch die Positionen der Nodes zusätzlich zu speichern.
Das wäre aber meiner Meinung nach alles andere als schön und überaus redundant.
Kann mir jemand helfen?
Grüße, Naryxus
ich muss mich momentan mit Graphenalgorithmen beschäftigen. Eine Aufgabe ist unter anderem das Zeichnen von planaren Graphen.
Zur grundlegenden Modellierung eines Graphen benutze ich
Java:
public class Node {
private String label;
}
und
Java:
public class Edge {
private Node node0;
private Node node1;
}
Für einen normalen Graphen reicht dies erst einmal aus.
Meine Modellierung für einen zeichenbaren Graphen erweitert die Knoten um Bildschirmpositionen, damit ich nicht noch großartig mit Maps auf Canvas-Objekte arbeiten muss:
Java:
public class GraphicalNode extends Node {
private int x;
private int y;
}
Auch dies funktioniert nach meinem Verständnis ganz gut.
Designprobleme bekomme ich bei der Modellierung der zeichenbaren Kanten.
Prinzipiell würde ich ganz gerne folgendes machen:
Java:
public class GraphicalEdge extends Edge {
GraphicalNode node0;
GraphicalNode node1;
}
So würde ich am wenigsten redundante Informationen speichern. Allerdings habe ich solch ein Design bis jetzt noch in keinem Projekt gesehen. Und zudem schmeißt mir der Compiler auch einen Fehler um die Ohren, dass ich (natürlich) für den Konstruktor der Oberklasse auch in dieser Klasse einen mit der Signatur
Java:
public GraphicalNode(Node node0, Node node1)
Eine andere Möglichkeit wäre, der Klasse GraphicalNode statt den GraphicalNodes lediglich normale Nodes zu übergeben und dazu dann noch die Positionen der Nodes zusätzlich zu speichern.
Das wäre aber meiner Meinung nach alles andere als schön und überaus redundant.
Kann mir jemand helfen?
Grüße, Naryxus