From 7fe3e8f765b8590cd42b6849169689ddb8baa6bb Mon Sep 17 00:00:00 2001 From: obai Date: Wed, 28 Aug 2024 19:37:08 +0200 Subject: [PATCH] Graphen --- .../src/Graphen/.~lock.Graphen.odt# | 1 + Programmierung2/src/Graphen/Graph.java | 41 ++++++++---------- Programmierung2/src/Graphen/Kanten.java | 23 ++++++---- Programmierung2/src/Graphen/Knote.java | 42 +++++++++++++------ Programmierung2/src/Graphen/Test.java | 20 +++++++++ 5 files changed, 84 insertions(+), 43 deletions(-) create mode 100644 Programmierung2/src/Graphen/.~lock.Graphen.odt# create mode 100644 Programmierung2/src/Graphen/Test.java diff --git a/Programmierung2/src/Graphen/.~lock.Graphen.odt# b/Programmierung2/src/Graphen/.~lock.Graphen.odt# new file mode 100644 index 0000000..f738477 --- /dev/null +++ b/Programmierung2/src/Graphen/.~lock.Graphen.odt# @@ -0,0 +1 @@ +,obai,obai-HP-Laptop-15-da0xxx,28.08.2024 17:18,file:///home/obai/.config/libreoffice/4; \ No newline at end of file diff --git a/Programmierung2/src/Graphen/Graph.java b/Programmierung2/src/Graphen/Graph.java index 696bf9c..279a7d9 100644 --- a/Programmierung2/src/Graphen/Graph.java +++ b/Programmierung2/src/Graphen/Graph.java @@ -3,30 +3,25 @@ package Graphen; import java.util.ArrayList; public class Graph { - ArrayList Knoten = new ArrayList<>(); + // Graph hat Viele Knoten + ArrayList KnotenGraph = new ArrayList<>(); - public void addknoten(Knote kn) { - Knoten.add(kn); + // füge Knote hinzu + public void addknoten(Knote k) { + + KnotenGraph.add(k); + } + + public Knote getKnote(String name) { + for (Knote kAusKnotenGraph: KnotenGraph) { + if (kAusKnotenGraph.getName().equalsIgnoreCase(name)) + return kAusKnotenGraph; + } + return null; } - public static void main(String[] args) { - Graph graph = new Graph(); - - Knote kn1 = new Knote(1); - Knote kn2 = new Knote(2); - Knote kn3 = new Knote(3); - - graph.addknoten(kn1); - graph.addknoten(kn2); - graph.addknoten(kn3); - - // Verbindet kn1 mit kn2 und kn1 mit kn3 - kn1.addKante(kn2, 5); // Strecke 5 Meter - kn1.addKante(kn3, 10); // Strecke 10 Meter - - - } - - - + public void printKnotenGraph() { + for (Knote a : KnotenGraph) + System.out.println(a.getName()); + } } diff --git a/Programmierung2/src/Graphen/Kanten.java b/Programmierung2/src/Graphen/Kanten.java index f9f31d0..16beb6a 100644 --- a/Programmierung2/src/Graphen/Kanten.java +++ b/Programmierung2/src/Graphen/Kanten.java @@ -2,14 +2,21 @@ package Graphen; public class Kanten { //jede Kante verbindet zwei Knoten - Knote kn1; - Knote kn2; - // eine Kante hat einen meter von einem Knote zu einer anderen Knote - int strecke; + Knote anfangsKnote; // mannheim + Knote endeKnote; // heidelberg + - public Kanten(Knote kn1, Knote kn2, int strecke) { - this.kn1 = kn1; - this.kn2 = kn2; - this.strecke = strecke; + public Kanten(Knote anfangsKnote, Knote endeKnote) { + this.anfangsKnote = anfangsKnote; + this.endeKnote = endeKnote; + anfangsKnote.addKante(this); + endeKnote.addKante(this); } + + public Knote getPartner(Knote k) { + Knote partner = (k == anfangsKnote) ? endeKnote : anfangsKnote; + + return partner; + } + } diff --git a/Programmierung2/src/Graphen/Knote.java b/Programmierung2/src/Graphen/Knote.java index 32ed63f..d6c7f7f 100644 --- a/Programmierung2/src/Graphen/Knote.java +++ b/Programmierung2/src/Graphen/Knote.java @@ -3,21 +3,39 @@ package Graphen; import java.util.ArrayList; public class Knote { - int value; - //eine Knote kann beliebig viele Kanten haben - ArrayList KantenList = new ArrayList<>(); + String name; + ArrayList kantenList = new ArrayList<>(); + - public Knote(int value) { - - this.value = value; + Knote(String name){ + this.name = name; } - // Methode, um eine Kante zwischen diesem Knoten und einem anderen Knoten - // hinzuzufügen - public void addKante(Knote zielKnote, int strecke) { - Kanten kante = new Kanten(this, zielKnote, strecke); - KantenList.add(kante); - zielKnote.KantenList.add(kante); + public void addKante(Kanten k) { + kantenList.add(k); } + public String getName() { + return name; + } + + + public ArrayList getKantenList() { + return kantenList; + } + + ArrayList verbindeteKnoten; + public void getPartner() { + ArrayList merker = getKantenList(); + if (merker == null) + return ; + + verbindeteKnoten = new ArrayList<>(); + for (Kanten m : merker) + verbindeteKnoten.add(m.getPartner(this)); + + for (Knote k: verbindeteKnoten) + System.out.println(this.name + " verbindet mit " + k.getName()); + } + } diff --git a/Programmierung2/src/Graphen/Test.java b/Programmierung2/src/Graphen/Test.java new file mode 100644 index 0000000..133bf62 --- /dev/null +++ b/Programmierung2/src/Graphen/Test.java @@ -0,0 +1,20 @@ +package Graphen; + +public class Test { + + public static void main(String[] args) { + Graph graph = new Graph(); + Knote mannheim = new Knote("Mannheim"); + Knote heidelberg = new Knote("Heidelberg"); + graph.addknoten(mannheim); + graph.addknoten(heidelberg); + + new Kanten(graph.getKnote("Mannheim"),graph.getKnote("Heidelberg")); + + mannheim.getPartner(); + heidelberg.getPartner(); + } + + + +}