diff --git a/u08/.classpath b/u08/.classpath
new file mode 100644
index 0000000..55b6ffe
--- /dev/null
+++ b/u08/.classpath
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/u08/.gitignore b/u08/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/u08/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/u08/.project b/u08/.project
new file mode 100644
index 0000000..7bbf74b
--- /dev/null
+++ b/u08/.project
@@ -0,0 +1,17 @@
+
+
+ u08
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/u08/.settings/org.eclipse.jdt.core.prefs b/u08/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8c9943d
--- /dev/null
+++ b/u08/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,14 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=17
diff --git a/u08/src/de/hsh/prog/klasseline/Line.java b/u08/src/de/hsh/prog/klasseline/Line.java
new file mode 100644
index 0000000..6be7a93
--- /dev/null
+++ b/u08/src/de/hsh/prog/klasseline/Line.java
@@ -0,0 +1,83 @@
+package de.hsh.prog.klasseline;
+
+import java.awt.Graphics;
+
+
+/**
+ * Linie, bestehend aus Start- und Endpunkt
+ * @author p8q-yhw-u1
+ */
+public class Line {
+ private Loc p1;
+ private Loc p2;
+
+ /**
+ * Erstellt ein Line Objekt aus Anfangs- und Endkoordinaten
+ * @param x1 x von p1
+ * @param y1 y von p1
+ * @param x2 x von p2
+ * @param y2 y von p2
+ */
+ public Line(int x1, int y1, int x2, int y2) {
+ this.p1 = new Loc(x1, y1);
+ this.p2 = new Loc(x2, y2);
+ }
+ /**
+ * Erstellt ein Line Objekt aus Anfangs- und Endpunkt
+ * @param p1 Startpunkt
+ * @param p2 Endpunkt
+ */
+ public Line(Loc p1, Loc p2) {
+ this(p1.getX(), p1.getY(), p2.getX(), p2.getY());
+ }
+
+ /**
+ * Copy Konstruktor für ein Objekt der Line Klasse
+ * @param l das zu kopierende Line Objekt
+ * @param deep Tiefe (true) oder flache (false) Kopie
+ */
+ public Line(Line l, boolean deep) {
+ if (deep) {
+ this.p1 = new Loc(l.getP1());
+ this.p2 = new Loc(l.getP2());
+ } else {
+ this.p1 = l.getP1();
+ this.p2 = l.getP2();
+ }
+ }
+
+ /**
+ * @return Startpunkt
+ */
+ public Loc getP1() {
+ return p1;
+ }
+ /**
+ * @return Endpunkt
+ */
+ public Loc getP2() {
+ return p2;
+ }
+
+ /**
+ * Gibt das Line Objekt als String aus
+ */
+ public String toString() {
+ return "[" + p1 + ", " + p2 + "]";
+ }
+
+ /**
+ * @return Länge der Linie
+ */
+ public double getLength() {
+ return p1.distance(p2);
+ }
+
+ /**
+ * Zeichnet die Linie
+ * @param g Die Graphics die zum Zeichnen der Linie genutzt werden soll
+ */
+ public void draw(Graphics g) {
+ g.drawLine(p1.getX(), p1.getY(), p2.getX(), p2.getY());
+ }
+}