diff --git a/sources/.classpath b/sources/.classpath index 897e11f..b50a49b 100644 --- a/sources/.classpath +++ b/sources/.classpath @@ -6,6 +6,7 @@ + diff --git a/sources/src/main/java/Crypter.java b/sources/beispieleVL/Crypter/Crypter.java similarity index 99% rename from sources/src/main/java/Crypter.java rename to sources/beispieleVL/Crypter/Crypter.java index a6cc698..1a4e1ae 100644 --- a/sources/src/main/java/Crypter.java +++ b/sources/beispieleVL/Crypter/Crypter.java @@ -1,3 +1,4 @@ +package Crypter; /** diff --git a/sources/src/main/java/CrypterImpl.java b/sources/beispieleVL/Crypter/CrypterImpl.java similarity index 99% rename from sources/src/main/java/CrypterImpl.java rename to sources/beispieleVL/Crypter/CrypterImpl.java index f4b1b23..0ad6092 100644 --- a/sources/src/main/java/CrypterImpl.java +++ b/sources/beispieleVL/Crypter/CrypterImpl.java @@ -1,3 +1,4 @@ +package Crypter; import java.util.HashMap; diff --git a/sources/src/main/java/CrypterTest.java b/sources/beispieleVL/Crypter/CrypterTest.java similarity index 99% rename from sources/src/main/java/CrypterTest.java rename to sources/beispieleVL/Crypter/CrypterTest.java index bbe327c..48cddaa 100644 --- a/sources/src/main/java/CrypterTest.java +++ b/sources/beispieleVL/Crypter/CrypterTest.java @@ -1,3 +1,4 @@ +package Crypter; import org.junit.jupiter.api.Test; diff --git a/sources/beispieleVL/enumeration/Main.java b/sources/beispieleVL/enumeration/Main.java new file mode 100644 index 0000000..6b156c9 --- /dev/null +++ b/sources/beispieleVL/enumeration/Main.java @@ -0,0 +1,21 @@ +package enumeration; + + +public class Main { + + public static void main(String[] args) { + + System.out.println(Planet.values()); + + for (Planet planet : Planet.values()) { + System.out.printf("%s -> %,.0f km/h%n", + planet.name(), + planet.bahngeschwindigkeit()); + } + + System.out.println(Planet.MERKUR.toString()); + System.out.println(Planet.MERKUR.name()); + System.out.println(Planet.JUPITER.toString()); + System.out.println(Planet.JUPITER.name()); + } +} diff --git a/sources/beispieleVL/enumeration/Operation.java b/sources/beispieleVL/enumeration/Operation.java new file mode 100644 index 0000000..fd95348 --- /dev/null +++ b/sources/beispieleVL/enumeration/Operation.java @@ -0,0 +1,22 @@ +package enumeration; + +public enum Operation { + + ADDITION { + public double anwenden(double op1, double op2) { + return op1 + op2; + } + }, + SUBTRAKTION { + public double anwenden(double op1, double op2) { + return op1 - op2; + } + }, + MULTIPLIKATION { + public double anwenden(double op1, double op2) { + return op1 * op2; + } + }; + + public abstract double anwenden(double op1, double op2); +} diff --git a/sources/beispieleVL/enumeration/Planet.java b/sources/beispieleVL/enumeration/Planet.java new file mode 100644 index 0000000..d02f106 --- /dev/null +++ b/sources/beispieleVL/enumeration/Planet.java @@ -0,0 +1,27 @@ +package enumeration; + +public enum Planet { + MERKUR(59e+6, 88), VENUS(108e+6, 225), + ERDE(150e+6, 365), MARS(228e+6, 1.9*365), + JUPITER(778e+6, 11.9*365), SATURN(1427e+6, 29.5*365), + URANUS(2870e+6, 84*365), NEPTUN(4497e+6, 165*365); + + private final double entfernungsonne; + private final double umlaufzeit; + + private Planet(double entfernungsonne, double umlaufzeit) { + this.entfernungsonne = entfernungsonne; + this.umlaufzeit = umlaufzeit; + } + + public double bahngeschwindigkeit() { + return 2 * entfernungsonne * Math.PI / umlaufzeit / 24; + } + + @Override + public String toString() { + return name() + " ist der " + (ordinal() + 1) + " Planet im Sonnensystem."; + + } + +} diff --git a/sources/beispieleVL/enumeration/Rechner.java b/sources/beispieleVL/enumeration/Rechner.java new file mode 100644 index 0000000..0038c09 --- /dev/null +++ b/sources/beispieleVL/enumeration/Rechner.java @@ -0,0 +1,18 @@ +package enumeration; + +public class Rechner { + + public double rechne(double op1, double op2, Operation operation) { + return operation.anwenden(op1, op2); + } + + public static void main(String[] args) { + Rechner r = new Rechner(); + + double summe = r.rechne(5, 5, Operation.ADDITION); + double differenz = r.rechne(6, 3, Operation.SUBTRAKTION); + double produkt = r.rechne(6, 3, Operation.MULTIPLIKATION); + + System.out.printf("%.0f, %.0f, %.0f", summe, differenz, produkt); + } +} diff --git a/sources/beispieleVL/enumeration/Wochentag.java b/sources/beispieleVL/enumeration/Wochentag.java new file mode 100644 index 0000000..e2825c0 --- /dev/null +++ b/sources/beispieleVL/enumeration/Wochentag.java @@ -0,0 +1,6 @@ +package enumeration; + +public enum Wochentag { + MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG, FREITAG, SAMSTAG, SONNTAG; + +} diff --git a/sources/beispieleVL/generics/ExtStack.java b/sources/beispieleVL/generics/ExtStack.java new file mode 100644 index 0000000..0252b7e --- /dev/null +++ b/sources/beispieleVL/generics/ExtStack.java @@ -0,0 +1,22 @@ +package generics; + +public class ExtStack extends SimpleStack { + + public ExtStack(int size) { + super(size); + } + + /* + * In dieser Methode passiert nichts anderes als die Ausgabe des zuletzt + * gesetzten Wertes (in diesem Fall ein String). Das erzeugte Array wurde + * üder den Konstruktor ExtStack angelegt, indem die Arraygröße und + * der Datentyp in dem Konstruktoraufruf (siehe Mainmethode) übergeben wurde + * und der Aufruf an die Superklasse SimpleStack weitergeleitet wurde. + */ + public T peek() { + T wert = pop(); // Hier wird der Wert mit pop() aus dem Array geholt + push(wert); // und in die Variable wert geschrieben + return wert; // danach erfolgt die Rückmeldung an den Methodenaufruf + } + +} diff --git a/sources/beispieleVL/generics/Main.java b/sources/beispieleVL/generics/Main.java new file mode 100644 index 0000000..4183dea --- /dev/null +++ b/sources/beispieleVL/generics/Main.java @@ -0,0 +1,29 @@ +package generics; + +public class Main { + + public static void main(String[] args) { + + + var simplestack1 = new SimpleStack(5); + + simplestack1.push("Hallo"); + simplestack1.push("das ist ein Beispiel für"); + simplestack1.push("einen SimpleStack."); + simplestack1.push("Logisch wird alles in "); + simplestack1.push("verkehrter Reihenfolge ausgegeben."); + + for (int i = simplestack1.getSize(); i > 0 ; i--) { + System.out.print(simplestack1.pop() + "| |"); + } + + var extstack1 = new ExtStack(2); + + extstack1.push("Hallo"); + extstack1.push("Hello"); + + System.out.println(extstack1.peek()); + + } + +} diff --git a/sources/beispieleVL/generics/SimpleStack.java b/sources/beispieleVL/generics/SimpleStack.java new file mode 100644 index 0000000..c5c0524 --- /dev/null +++ b/sources/beispieleVL/generics/SimpleStack.java @@ -0,0 +1,39 @@ +package generics; + +public class SimpleStack { + /* + * Der Einsatz eines Typ-Parameters hält diese Klasse generisch und + * ermöglicht es, dass erst in der Main der Datentyp des Arrays festgelegt + * werden kann. Somit ist die generische Klasse in ihrer Implementierung + * unabhängig von der Main-Klasse. + */ + private T[] stack; + private int pos; + + @SuppressWarnings("unchecked") + public SimpleStack(int size) { + stack = (T[]) new Object[size]; + pos = 0; + } + + public void push(T o) { + stack[pos++] = o; + } + + public T pop() { + return stack[--pos]; + + } + /* + * Dies ist ziemlich schlechter Programmierstiel, da für einen gut + * funktionierenden Stack noch weitere Methoden fehlen. + * Diese sind zum Beispiel swap(), peek() und clear(). So das es möglich + * ist Daten zu Tauschen (swap()), Daten zu löschen (clear()) oder nach + * Daten zu suchen (peek()) + */ + + public int getSize () { + // TODO Auto-generated method stub + return pos; + } +} diff --git a/sources/beispieleVL/records/Rechteck.java b/sources/beispieleVL/records/Rechteck.java new file mode 100644 index 0000000..b6be3bc --- /dev/null +++ b/sources/beispieleVL/records/Rechteck.java @@ -0,0 +1,27 @@ +package records; + + +public class Rechteck extends Exception{ + + record Rectangle(double laenge, double breite) { + public Rectangle { + if (laenge <= 0 || breite <= 0) { + throw new java.lang.IllegalArgumentException( + String.format("Keine 0 oder negative Werte erlaubt.")); + } + } + } + + public static void main(String[] args) { + + Rectangle r = new Rectangle(4.0, 3.0); + Rectangle r2 = new Rectangle(1.0, 2.0); + + System.out.println("Fläche: " + r.laenge() * r.breite()); + System.out.println("Fläche2: " + r2.laenge() * r2.breite()); + } + + + + +} diff --git a/sources/beispieleVL/records/RechteckOhneRecords.java b/sources/beispieleVL/records/RechteckOhneRecords.java new file mode 100644 index 0000000..a72a207 --- /dev/null +++ b/sources/beispieleVL/records/RechteckOhneRecords.java @@ -0,0 +1,28 @@ +package records; + +public final class RechteckOhneRecords { + + private final double laenge; + private final double breite; + + public RechteckOhneRecords(double laenge, double breite) { + this.laenge = laenge; + this.breite = breite; + } + + public static void main(String[] args) { + RechteckOhneRecords r = new RechteckOhneRecords(4, 3); + + System.out.println("Fläche = " + r.laenge() * r.breite()); + } + + private double breite() { + // TODO Auto-generated method stub + return laenge; + } + + private double laenge() { + // TODO Auto-generated method stub + return breite; + } +} diff --git a/sources/src/main/java/pr2/generics/einfach/Liste.java b/sources/src/main/java/pr2/generics/einfach/Liste.java index 86b395d..1964977 100644 --- a/sources/src/main/java/pr2/generics/einfach/Liste.java +++ b/sources/src/main/java/pr2/generics/einfach/Liste.java @@ -8,7 +8,7 @@ package pr2.generics.einfach; /** * Eine einfache, verkettete Liste. */ -public class Liste { +public class Liste { /** Referenz auf den ersten Knoten. */ private ListeNode first; @@ -19,11 +19,12 @@ public class Liste { /** * Fügt ein neues Element an das Ende der Liste an. * - * @param data das Element + * @param i das Element */ - public void add(Object data) { + public void add(String i) { - ListeNode nextNode = new ListeNode(data); + @SuppressWarnings("unchecked") + ListeNode nextNode = new ListeNode(i); if (current == null) { // Liste komplett leer @@ -42,17 +43,18 @@ public class Liste { * @param index Index, beginnend bei 0. * @return Das Element oder {@code null}, wenn es nicht gefunden wurde. */ - public Object get(int index) { + @SuppressWarnings("unchecked") + public String get(int index) { int count = 0; - ListeNode node = first; + T node = (T) first; while ((node != null) && (count < index)) { - node = node.getNext(); + node = ((ListeNode) node).getNext(); count++; } if ((count == index) && (node != null)) { - return node.data; + return ((ListeNode) node).getData(); } else { // index does not exist @@ -75,13 +77,18 @@ public class Liste { */ public int size() { int count = 0; - ListeNode node = first; + T node = (T) first; while (node != null) { - node = node.getNext(); + node = (T) ((ListeNode) node).getNext(); count++; } return count; } + + public void add(int i) { + // TODO Auto-generated method stub + + } } diff --git a/sources/src/main/java/pr2/generics/einfach/ListeNode.java b/sources/src/main/java/pr2/generics/einfach/ListeNode.java index 0336f11..8a714ae 100644 --- a/sources/src/main/java/pr2/generics/einfach/ListeNode.java +++ b/sources/src/main/java/pr2/generics/einfach/ListeNode.java @@ -3,25 +3,31 @@ package pr2.generics.einfach; /** * Interne Repräsentation der Knoten in der Liste. */ -class ListeNode { +class ListeNode { /** Daten. */ - Object data; + String data; /** Referenz auf den nächsten Knoten. */ - ListeNode next; + E next; /** * Legt einen neuen Knoten an. * * @param data daten, die gespeichert werden */ - ListeNode(Object data) { - this.data = data; + protected ListeNode(String data) { + this.setData(data); } - public ListeNode getNext() { + public E getNext() { return next; } - public void setNext(ListeNode next) { + public void setNext(E next) { this.next = next; } + public void setData(String data) { + this.data = data; + } + public String getData() { + return data; + } } diff --git a/sources/src/main/java/pr2/generics/einfach/test/ListeTest.java b/sources/src/main/java/pr2/generics/einfach/test/ListeTest.java index 673d13b..6fe8dcc 100644 --- a/sources/src/main/java/pr2/generics/einfach/test/ListeTest.java +++ b/sources/src/main/java/pr2/generics/einfach/test/ListeTest.java @@ -20,12 +20,12 @@ public class ListeTest { assertEquals(0, l.size()); - l.add("Hallo"); + l.add( "Hallo"); assertEquals(1, l.size()); - l.add(34); + l.add( ""); assertEquals(2, l.size()); - l.add("Peter"); - l.add("Alfons"); + l.add( "Peter"); + l.add( "Alfons"); assertEquals(4, l.size()); l.clear(); @@ -37,7 +37,7 @@ public class ListeTest { */ @Test void testGet() { - Liste l = new Liste(); + Liste l = new Liste(); l.add("Hallo"); l.add("Hugo"); l.add("Peter"); diff --git a/sources/src/main/java/pr2/generics/pair/Main.java b/sources/src/main/java/pr2/generics/pair/Main.java index a60a01e..083371f 100644 --- a/sources/src/main/java/pr2/generics/pair/Main.java +++ b/sources/src/main/java/pr2/generics/pair/Main.java @@ -2,17 +2,17 @@ package pr2.generics.pair; public class Main { public static void main(String[] args) { -// TODO: Einkommentieren -// var note1 = new Pair("Peter", 1); -// var note2 = new Pair("Frank", 3); -// var note3 = new Pair("Sabine", 1); -// -// var name = new Pair("Peter", "Meier"); -// -// System.out.printf("%s:%d\n", note1.getFirst(), note1.getSecond()); -// System.out.printf("%s:%d\n", note2.getFirst(), note1.getSecond()); -// System.out.printf("%s:%d\n", note3.getFirst(), note1.getSecond()); -// -// System.out.printf("%s %s\n", name.getFirst(), name.getSecond()); + + var note1 = new Pair("Peter", 1); + var note2 = new Pair("Frank", 3); + var note3 = new Pair("Sabine", 1); + + var name = new Pair("Peter", "Meier"); + + System.out.printf("%s:%d\n", note1.getFirst(), note1.getSecond()); + System.out.printf("%s:%d\n", note2.getFirst(), note1.getSecond()); + System.out.printf("%s:%d\n", note3.getFirst(), note1.getSecond()); + + System.out.printf("%s %s\n", name.getFirst(), name.getSecond()); } } diff --git a/sources/src/main/java/pr2/generics/pair/Pair.java b/sources/src/main/java/pr2/generics/pair/Pair.java index 6700e30..a033ef8 100644 --- a/sources/src/main/java/pr2/generics/pair/Pair.java +++ b/sources/src/main/java/pr2/generics/pair/Pair.java @@ -1,5 +1,21 @@ package pr2.generics.pair; - public class Pair { - + public class Pair { + + private K data1; + private V data2; + + public Pair(K data1, V data2) { + this.data1 = data1; + this.data2 = data2; + + } + + public K getFirst() { + return data1; + } + + public V getSecond() { + return data2; + } }