package graph; import java.util.List; import java.util.Arrays; import java.util.ArrayList; /** * Die Klasse Kante beschreibt die Datenstruktur einer Kante, bestehend aus Startknoten, Gewicht und Zielknoten. * Da Kanten innerhalb von Adjazenzlisten und -Matrizen repraesentiert werden, ist diese Klasse eigentlich unnoetig! * Sie wurde zum Zweck der Vereinfachung - sozusagen als Zwischenspeicher von Kanten - eingefuehrt. * Auch soll sie das Kantengewicht verwalten und Aufschluss darueber geben, ob sie gefaerbt/geloescht ist oder nicht. * * @author Dirk Zechnall, Thomas Schaller * @version 28.02.2023 (v7.0) * v7.0: Die Kanteninformationen werden in einer Hashmap gespeichert. Daher können beliebige weitere Informationen abgelegt werden. */ public class Kante extends GraphElement { private Knoten start; private Knoten ziel; /** * Der Konstruktor erstellt eine neue Kante mit Start- und Zielknoten und Kantengewicht. * Die Kante ist zu Beginn ungefaerbt. * * @param neuerStart Der neue Startknoten * @param neuerZiel Der neue Zielknoten * @param neuesGewicht Das neue Kantengewicht */ public Kante (Knoten neuerStart, Knoten neuerZiel, double neuesGewicht) { super(); set("Gewicht",neuesGewicht); set("Markiert", false); set("Gelöscht", false); set("Farbe", -1); setSortierkriterium("Gewicht"); start = neuerStart; ziel = neuerZiel; } /** * Die Methode init initialisiert die Kantenfaerbung (auf unmarkiert) */ protected void init() { set("Markiert", false); set("Gelöscht", false); set("Farbe", -1); } /** * Liefert einen kurzen Text, der den Wert des Knotens angibt und innerhalb der Kreises * des Knotens angezeigt werden kann. * @return Array von Anzeigezeilen (dürfen max. 2 sein) */ public List getKurztext(String[] namen) { int l = Math.min(namen.length,2); List t = new ArrayList(); for(int i = 0; i getLangtext(String[] namen) { int l = namen.length; List t = new ArrayList(); String symbol = "<->"; if(g.isGerichtet()) symbol = "->"; if(!start.getInfotext().equals("") && !ziel.getInfotext().equals("")) { t.add(start.getInfotext()+" "+symbol+" "+ziel.getInfotext()); } else { t.add("Knoten Nr."+g.getNummer(start)+" "+symbol+" Knoten Nr."+g.getNummer(ziel)); } for(int i = 0; i=0 && farbe < 20) set("Farbe",farbe); } /** * Setzt die Farbe auf die Standardfarbgebung zurück */ public void setStandardFarbe() { setFarbe(-1); } /** * Die Methode ueberschreibt die Methode toString() und gibt die String-Raepraesentation einer Kante zurueck * * @return String-Raepraesentation der Kante */ @Override public String toString() { return " --("+getGewicht()+")--> "; } }