diff --git a/.$PUE3_A1.1_Aktivitaetsdiagram.drawio.bkp b/.$PUE3_A1.1_Aktivitaetsdiagram.drawio.bkp
new file mode 100644
index 0000000..36f4394
--- /dev/null
+++ b/.$PUE3_A1.1_Aktivitaetsdiagram.drawio.bkp
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/.$PUE3_A1.4_Aktivitaetsdiagram.drawio.bkp b/.$PUE3_A1.4_Aktivitaetsdiagram.drawio.bkp
new file mode 100644
index 0000000..4327711
--- /dev/null
+++ b/.$PUE3_A1.4_Aktivitaetsdiagram.drawio.bkp
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PUE3_A1.1_Aktivitaetsdiagram.drawio b/PUE3_A1.1_Aktivitaetsdiagram.drawio
new file mode 100644
index 0000000..7392d88
--- /dev/null
+++ b/PUE3_A1.1_Aktivitaetsdiagram.drawio
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PUE3_A1.4_Aktivitaetsdiagram.drawio b/PUE3_A1.4_Aktivitaetsdiagram.drawio
index 4327711..0758c20 100644
--- a/PUE3_A1.4_Aktivitaetsdiagram.drawio
+++ b/PUE3_A1.4_Aktivitaetsdiagram.drawio
@@ -1,172 +1,170 @@
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
+
+
-
-
-
-
-
-
-
+
@@ -174,21 +172,30 @@
-
+
-
+
-
+
-
+
+
+
+
-
+
+
+
+
+
+
+
diff --git a/Time.java b/Time.java
index 9c5b7a5..1fa21eb 100644
--- a/Time.java
+++ b/Time.java
@@ -1,21 +1,24 @@
-
+// Die Klasse Time überprüfft eine beliebigen String, ob es das erlaubte
+// Zeitformat "SS:MM" hat.
public class Time {
public static boolean timeCheck(String time) {
-
+ // Initialsisieren der Reglularexpression für das erlaubte Format
String regex = "([01]\\d|2[0-3]):([0-5]\\d)";
boolean formatRichtig = false;
-
+ // Überprüfung, ob der String dem Format enspricht
if (time == null) {
formatRichtig = false;
+ // schnelle Überprüfung der "Grundformats"
} else if (time.length() != 5 || time.charAt(2) != ':') {
formatRichtig = false;
} else if (time.matches(regex)) {
formatRichtig = true;
}
-
+ // Rückgabe des Ergebnis
return formatRichtig;
}
-
+ // Für eine schnellere Überprüfung des Codes, ausführlichen Untersuchung
+ // erfolgt via eigene JUnit
public static void main(String[] args) {
System.out.println(timeCheck("23:56"));
System.out.println(timeCheck("00:00"));
diff --git a/TimeTest.java b/TimeTest.java
index fa73c40..1965107 100644
--- a/TimeTest.java
+++ b/TimeTest.java
@@ -3,7 +3,7 @@ import static org.junit.jupiter.api.Assertions.*;
public class TimeTest {
-
+ // Test für richtige Zeitformate
@Test
public void testValidTimes() {
assertTrue(Time.timeCheck("00:00"));
@@ -12,7 +12,7 @@ public class TimeTest {
assertTrue(Time.timeCheck("23:59"));
assertTrue(Time.timeCheck("19:00"));
}
-
+ // Test für minimale Fehler der Zeitformate
@Test
public void testInvalidTimes() {
assertFalse(Time.timeCheck("24:00")); // Stunde zu groß
@@ -22,7 +22,7 @@ public class TimeTest {
assertFalse(Time.timeCheck("09:5")); // unvollständige Minuten
assertFalse(Time.timeCheck("09-15")); // falsches Trennzeichen
}
-
+ // Test beliebe Strings
@Test
public void testCompletelyInvalidStrings() {
assertFalse(Time.timeCheck("Hello World")); // Klar kein Zeitformat
@@ -30,6 +30,5 @@ public class TimeTest {
assertFalse(Time.timeCheck("time: 12:30")); // Präfix vor der Zeit
assertFalse(Time.timeCheck("")); // Leerer String
assertFalse(Time.timeCheck(null)); // Nullprüfung
- assertFalse(Time.timeCheck("23:56 \n abc"));
}
}
\ No newline at end of file
diff --git a/Vector.java b/Vector.java
index bab2b7f..e35c37e 100644
--- a/Vector.java
+++ b/Vector.java
@@ -1,72 +1,93 @@
+// Die nachfolgede Klasse eines Vektor besitzt folgende Methoden:
+// Scalaremultiplikation
+// 2D und 3D Kreuzprodukt
+// Vektorbetrag
+// Scalarmatrixmultiplikation
+
public class Vector {
-
+ // Scalaremultiplikation
public static void scalarMultiplication(int[] vector, int scalar) {
+ // Falls ein null vector übergeben wird, soll nichts gemacht werden,
+ // sonst würde .length ein Fehler melden
if (vector != null) {
+ // Jede Position wird mit dem Scalar multipliziert
for (int position = 0; position < vector.length; position++) {
vector[position] *= scalar;
}
}
}
-
+ // 2D und 3D kreuzprodukt
public static void vectorProduct(int[] vector1, int[] vector2) {
-
+ // Sollte eine der beiden Vektoren null sein: Nachricht an die Konsole
if (vector1 == null || vector2 == null) {
System.out.println("Wegen unterschiedlichen Dimensionen ist das Kreuzprodukt nicht erlaubt");
+ // Für 3D Kreuzprodukt müssen beide Vektoren die Dimension 3 haben
} else if (vector1.length == vector2.length && vector2.length == 3) {
int[] kreuzVektor3D = new int[3];
+ // Berechnung des 3D Kreuzprodukts
kreuzVektor3D[0] = (vector1[1] * vector2[2]) - (vector1[2] * vector2[1]);
kreuzVektor3D[1] = (vector1[2] * vector2[0]) - (vector1[0] * vector2[2]);
kreuzVektor3D[2] = (vector1[0] * vector2[1]) - (vector1[1] * vector2[0]);
- System.out.println("Ergebnis des Kreuzproduktes: [" + kreuzVektor3D[0] + ", " + kreuzVektor3D[1] + ", "
+ System.out.println("Ergebnis des 3D Kreuzproduktes: [" + kreuzVektor3D[0] + ", " + kreuzVektor3D[1] + ", "
+ kreuzVektor3D[2] + "]");
}
-
+ // Für 2D Kreuzprodukt müssen beide Vektoren die Dimension 2 haben
else if (vector1.length == vector2.length && vector2.length == 2) {
int kreuzVektor2D = 0;
+ // Berechnung des 2D Kreuzprodukts. Ergebnis ist ein Scalar
kreuzVektor2D = (vector1[0] * vector2[1]) - (vector1[1] * vector2[0]);
- System.out.println("Ergebnis des Kreuzproduktes: " + kreuzVektor2D);
+ System.out.println("Ergebnis des 2D Kreuzproduktes: " + kreuzVektor2D);
}
-
+ // Bei unterschiedlichen Dimension oder nicht 2D bzw. 3D. Meldung an die Konsole
else {
System.out.println("Wegen unterschiedlichen Dimensionen ist das Kreuzprodukt nicht erlaubt");
}
}
-
+ // Vektorbetragsbrechnung
public static double vectorLength(int[] vector) {
+ // Initialiserung von Quadradsumme und Betrag
double qSumme = 0.0;
double betrag = 0.0;
+ // Falls der Vektor null ist geht .length nicht
if (vector != null) {
+ // Brechnung der Quadratsumme
for (int i = 0; i < vector.length; i++) {
qSumme = qSumme + (vector[i] * vector[i]);
}
+ // Berechnung der Wurzel, um Betrag zu erhalten
betrag = Math.sqrt(qSumme);
}
return betrag;
}
-
+ // Scalarmatrixmultiplikation
public static int[][] matrixMultiplication(int[][] matrix, int scalar) {
+ // Initialiserung der Ausgabe
int[][] ausgabe;
-
+ // Falls die Matrix null ist wird null ausgegeben
if (matrix == null) {
ausgabe = null;
+ // Falls die Matrix 3x3 ist darf das Sclar multipliziert werden
} else if (matrix.length == 3 && matrix[0].length == 3 && matrix[1].length == 3 && matrix[2].length == 3) {
ausgabe = new int[3][3];
+ // Alle 9 Kombinationsmöglichkeiten von inneren und äußeren Position wird durchgegangen
for (int außenPos = 0; außenPos < matrix.length; außenPos++) {
for (int innenPos = 0; innenPos < matrix[außenPos].length; innenPos++) {
ausgabe[außenPos][innenPos] = matrix[außenPos][innenPos] * scalar;
}
}
- } else {
+ } else { // Sollte keine 3x3 Matrix vorliegen, wird null ausgegeben
ausgabe = null;
}
return ausgabe;
}
+ // Für eine schnellere Überprüfung des Codes, ausführlichen Untersuchung
+ // erfolgt via eigene JUnit
public static void main(String[] args) {
int[] vector = { 2, 4, 7 };
int scalar = 3;
diff --git a/VectorTest.java b/VectorTest.java
index bff0832..cd659ce 100644
--- a/VectorTest.java
+++ b/VectorTest.java
@@ -1,10 +1,11 @@
-import org.junit.jupiter.api.Test;
+// Dieser Test ist eine ausführliche Testung der Vektorklasse
+import org.junit.jupiter.api.Test;
import static org.junit.Assert.assertNull;
import static org.junit.jupiter.api.Assertions.*;
public class VectorTest {
-
+ // Testteil für die überprüfung der Scalarenmultiplikation
@Test
void testScalarMultiplicationVariants() {
int[] vector1 = { 1, -2, 3 };
@@ -27,7 +28,7 @@ public class VectorTest {
Vector.scalarMultiplication(vector5, 5);
assertArrayEquals(null, vector5);
}
-
+ // Test für den Kreuzprodukt in 2D
@Test
void testVectorProduct2DVariants() {
int ergebnis1 = -2;
@@ -39,7 +40,7 @@ public class VectorTest {
Vector.vectorProduct(new int[] { 0, 1 }, new int[] { 1, 0 });
}
-
+ // Test für den Kreuzprodukt in 3D
@Test
void testVectorProduct3DVariants() {
int[] ergebnis1 = { -3, 6, -3 };
@@ -51,20 +52,20 @@ public class VectorTest {
Vector.vectorProduct(new int[] { 0, 0, 1 }, new int[] { 0, 1, 0 });
}
-
+ // Test für den Kreuzprodukt bei unterschiedlichen Dimensionen
@Test
void testVectorProductInvalidDimensions() {
System.out.println("Erwartet: illegale Dimension");
Vector.vectorProduct(new int[] { 1, 0 }, new int[] { 0, 1, 0 });
}
-
+ // Test für den Vektorbetrag
@Test
void testVectorLengthVariants() {
assertEquals(5.0, Vector.vectorLength(new int[] { 3, 4 }), 0.001);
assertEquals(3.0, Vector.vectorLength(new int[] { 1, 2, 2 }), 0.001);
assertEquals(0.0, Vector.vectorLength(new int[] { 0, 0, 0 }), 0.001);
}
-
+ // Test für die scalare Matrixmultiplikation
@Test
void testMatrixMultiplicationVariants() {
int[][] matrix = {
@@ -91,7 +92,7 @@ public class VectorTest {
};
assertArrayEquals(expectedZero, Vector.matrixMultiplication(zeroMatrix, 0));
}
-
+ // Test von fehlerhafte Matrixen für die scalare Matrixmultiplikation
@Test
void testMatrixMultiplicationInvalidCases() {
int[][] non3DSquare = {