richtig
parent
0f0b5d4ab0
commit
f560c17a38
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-22">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="module" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="module" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="output" path="bin"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1 @@
|
||||||
|
/bin/
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>Programmierung2</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
encoding/<project>=UTF-8
|
|
@ -0,0 +1,14 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=22
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=22
|
||||||
|
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=22
|
|
@ -0,0 +1,126 @@
|
||||||
|
package Algorithmus;
|
||||||
|
|
||||||
|
public class Algorithmus {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
int[] arr = { 4,34,2,6,8,12,21};
|
||||||
|
int[] sortedArray =insertionSort(arr) ;
|
||||||
|
|
||||||
|
for (int i : sortedArray)
|
||||||
|
System.out.print(i + " ");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int[] mergeSort(int[] arr) {
|
||||||
|
/*
|
||||||
|
* Big-O: O(n log n)
|
||||||
|
*/
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int[] insertionSort(int[] arr) {
|
||||||
|
/*
|
||||||
|
* Big-O: O(n²)
|
||||||
|
* indexes: 0 1 2 3 4 5 6
|
||||||
|
* Beispiel array = int[] arr = { 4,34,2,6,8,10,21};
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (int i = 1; i < arr.length; i++) {
|
||||||
|
// speicher den Wert an i Index nehmen an dass i = 2;
|
||||||
|
// also z.b: Key = 2;
|
||||||
|
int key = arr[i];
|
||||||
|
// speicher das vorhägie Index
|
||||||
|
int j = i - 1;
|
||||||
|
/*
|
||||||
|
* Also die While Loop Konzept ist:
|
||||||
|
* - betrachtet wird die 2 an Index 2
|
||||||
|
* - j = 1 also >= 0
|
||||||
|
* - arr[i] ist in dem Fall = 34
|
||||||
|
* - ist die 34 > 2, weil key = 2;
|
||||||
|
* - ja
|
||||||
|
*/
|
||||||
|
while (j >= 0 && arr[j] > key) {
|
||||||
|
//also ersetzen 34 druch die 2
|
||||||
|
// aber die 2 wurde erst in var key abgespeichert
|
||||||
|
arr[j + 1] = arr[j];
|
||||||
|
// index j -1
|
||||||
|
j = j - 1;
|
||||||
|
}
|
||||||
|
// hier ersetzen wir die 34 durch die 2
|
||||||
|
arr[j + 1] = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr; // Rückgabe des sortierten Arrays
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static int[] selectionSort(int[] arr) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Big-O: O(n²)
|
||||||
|
* indexes: 0 1 2 3 4 5 6
|
||||||
|
* Beispiel array = int[] arr = { 4,34,2,6,8,10,21};
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//Äueßere Schleife beginnt bei Index(0) bis zu index (6)
|
||||||
|
// Beispiel wert
|
||||||
|
for (int i = 0; i < arr.length - 1; i++) { // i = index (4)
|
||||||
|
int minIndex = i;// minIndex = index (4)
|
||||||
|
|
||||||
|
// überprüft ob die 4 < andere Element im array
|
||||||
|
// es soll ab i + 1 überprüft werden
|
||||||
|
for (int j = i + 1; j < arr.length; j++) {
|
||||||
|
//ja, die 2 < 4
|
||||||
|
if (arr[j] < arr[minIndex]) {
|
||||||
|
// also minIndex = index (2) also gleich 2
|
||||||
|
minIndex = j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// falls minIndex anderes Index bekommen hat?
|
||||||
|
if (minIndex != i) {
|
||||||
|
//speichere erst die 4 hier
|
||||||
|
int temp = arr[i];
|
||||||
|
// ersetzte die 2 durch die 4
|
||||||
|
arr[i] = arr[minIndex];
|
||||||
|
//ersetze die 4 durch die 2
|
||||||
|
arr[minIndex] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr; // Rückgabe des sortierten Arrays
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int[] bubbleSort(int[] arr) {
|
||||||
|
// Big-O: O(n²)
|
||||||
|
for (int i = 0; i < arr.length; i++)
|
||||||
|
for(int j = 0; j < arr.length; j++)
|
||||||
|
if (arr[i] < arr[j]) {
|
||||||
|
int temp = arr[i];
|
||||||
|
arr[i] = arr[j];
|
||||||
|
arr[j] = temp;
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int binarySearch(int[] arr, int value) {
|
||||||
|
int erst = 0; // Initialisierung des Startindexes auf den ersten Index des Arrays
|
||||||
|
int last = arr.length - 1; // Initialisierung des Endindexes auf den letzten Index des Arrays
|
||||||
|
|
||||||
|
while (erst <= last) { // Schleife läuft, solange der Startindex kleiner oder gleich dem Endindex ist
|
||||||
|
int mittel = (erst + last) / 2; // Berechnung des mittleren Indexes durch Addition von Start und Ende, dann Division durch 2
|
||||||
|
|
||||||
|
if (arr[mittel] == value) // Überprüfung, ob der Wert im Array an der mittleren Position dem gesuchten Wert entspricht
|
||||||
|
return mittel; // Wenn ja, wird der mittlere Index als Ergebnis zurückgegeben
|
||||||
|
else if (arr[mittel] < value) // Überprüfung, ob der Wert im Array an der mittleren Position kleiner als der gesuchte Wert ist
|
||||||
|
erst = mittel + 1; // Wenn ja, wird der Startindex auf die Position nach der Mitte gesetzt
|
||||||
|
|
||||||
|
else // Wenn der Wert im Array an der mittleren Position größer als der gesuchte Wert ist
|
||||||
|
last = mittel - 1; // Setzt den Endindex auf die Position vor der Mitte
|
||||||
|
}
|
||||||
|
return -1; // Wenn der Wert nicht gefunden wird, wird -1 zurückgegeben
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package Algorithmus;
|
||||||
|
public class Array {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Erstellt ein Array für 5 Elemente vom Typ int
|
||||||
|
int[] array = new int[5];
|
||||||
|
|
||||||
|
// Erstellt und initialisiert das Array mit Werten
|
||||||
|
int[] array2 = {1, 2, 3, 4, 5};
|
||||||
|
|
||||||
|
// Zugriff auf das erste Element
|
||||||
|
int firstElement = array[0];
|
||||||
|
|
||||||
|
// Zugriff auf das letzte Element (bei einem Array der Größe 5)
|
||||||
|
int lastElement = array[4];
|
||||||
|
|
||||||
|
// Setzt das dritte Element des Arrays auf 10
|
||||||
|
array2[2] = 10;
|
||||||
|
|
||||||
|
//for schleife mit einem Array
|
||||||
|
for(int i = 0; i < array.length; i++)
|
||||||
|
System.out.println(array[i]);
|
||||||
|
|
||||||
|
//foreach Schleife
|
||||||
|
for(int element : array)
|
||||||
|
System.out.println(element);
|
||||||
|
|
||||||
|
|
||||||
|
// Erstellt ein 3x3-Array (Matrix
|
||||||
|
int[][] array_21d = new int[3][3];
|
||||||
|
|
||||||
|
//Initialisieren eines 2D-Arrays:
|
||||||
|
int[][] array_2d = {
|
||||||
|
{1, 2, 3},
|
||||||
|
{4, 5, 6},
|
||||||
|
{7, 8, 9}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Greift auf das Element in der zweiten Zeile und dritten Spalte zu
|
||||||
|
int element = array_2d[1][2];
|
||||||
|
|
||||||
|
|
||||||
|
//Array mit Objekten, hier sollte eine Klass mit Name Person erstellt werden
|
||||||
|
/*
|
||||||
|
* Person[] persons = new Person[2]; // Erstellt ein Array für 2 Person-Objekte
|
||||||
|
persons[0] = new Person("Alice", 30);
|
||||||
|
persons[1] = new Person("Bob", 25);
|
||||||
|
System.out.println(persons[0].name); // Ausgabe: Alice
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,52 @@
|
||||||
|
package Algorithmus;
|
||||||
|
|
||||||
|
public class Logischen_Operatoren {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
/* Bitweises UND (&):
|
||||||
|
* - Funktion: Der & Operator prüft beide Operanden und gibt true zurück, wenn beide Operanden true sind.
|
||||||
|
* - Merkmal: Beide Bedingungen (a und b) werden immer ausgewertet, unabhängig davon, ob die erste Bedingung false ergibt.
|
||||||
|
* - Das Prinzip gilt auch für die anderen Logischen_Operatoren
|
||||||
|
*/
|
||||||
|
|
||||||
|
//Beispiel:
|
||||||
|
boolean x = true;
|
||||||
|
boolean y = false;
|
||||||
|
// Z ist false, weil y false ist, aber y wird dennoch ausgewertet.
|
||||||
|
boolean z = x & y;
|
||||||
|
|
||||||
|
//Praktischer Einsatz:
|
||||||
|
int a = 5;
|
||||||
|
int b = 0;
|
||||||
|
|
||||||
|
//Beide Bedingungen werden überprüft, b wird erhöht, auch wenn a false ist!
|
||||||
|
if ( a > 5 & (b++ < 10))
|
||||||
|
System.out.println(a);
|
||||||
|
|
||||||
|
System.out.println(b);// b = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Logisches UND (&&):
|
||||||
|
* - Funktion: Der && Operator prüft ebenfalls beide Operanden und gibt true zurück, wenn beide true sind.
|
||||||
|
* - Merkmal: Wenn der erste Operand false ist, wird der zweite Operand nicht mehr ausgewertet. Dies spart Rechenzeit und kann in bestimmten Fällen Fehler vermeiden.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//Praktischer Einsatz:
|
||||||
|
int a2 = 5;
|
||||||
|
int b2 = 0;
|
||||||
|
|
||||||
|
// Beide Bedingungen werden überprüft, b wird nicht erhöht, da a false ist!
|
||||||
|
if (a2 > 5 && (b2++ < 10))
|
||||||
|
System.out.println(a2);
|
||||||
|
|
||||||
|
System.out.println(b2);// b = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package BankSystemGUI;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
|
||||||
|
public class BankController {
|
||||||
|
private File file;
|
||||||
|
BankController(){
|
||||||
|
file = new File("C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\BankSystemGUI\\Kunde.txt");
|
||||||
|
if (!file.exists()) {
|
||||||
|
try {
|
||||||
|
if (file.createNewFile()) // createNewFile() gibt boolean zurück,ob der File ergolgreich erstellt wurde
|
||||||
|
// oder nicht
|
||||||
|
System.out.println("Datei erstellt: " + file.getName()); // der File muss im Pfad nicht existieren,
|
||||||
|
// damit es erstellt wurde
|
||||||
|
} catch (IOException d) {
|
||||||
|
d.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public BankSystem addKunde(String name,String vorname,String password,String email) {
|
||||||
|
BankSystem b1 = new BankSystem(name,vorname,password,email);
|
||||||
|
saveKunde(b1);
|
||||||
|
return b1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void saveKunde(BankSystem b1) {
|
||||||
|
try (PrintWriter write = new PrintWriter(new FileWriter(file))) {
|
||||||
|
write.println("ID: " + b1.getId());
|
||||||
|
write.println("Vorname: " + b1.getVorname());
|
||||||
|
write.println("Nachname: " + b1.getName());
|
||||||
|
write.println("Password: " + b1.getPassword());
|
||||||
|
write.println("Email: " + b1.getEmail());
|
||||||
|
write.println("kontoStand " + b1.getKontoStand());
|
||||||
|
write.println(); // Leere Zeile zwischen Einträgen
|
||||||
|
write.flush();
|
||||||
|
write.close();
|
||||||
|
System.out.println(b1.toString());
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
package BankSystemGUI;
|
||||||
|
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.FlowLayout;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
// Recourses Klasse (Model)
|
||||||
|
public class BankSystem {
|
||||||
|
private String name;
|
||||||
|
private String vorname;
|
||||||
|
private String password;
|
||||||
|
private String email;
|
||||||
|
private double kontoStand;
|
||||||
|
private int Id;
|
||||||
|
private static int IDCounter = 0;
|
||||||
|
|
||||||
|
BankSystem(){}
|
||||||
|
BankSystem(String name,String vorname,String password,String email){
|
||||||
|
this.name = name;
|
||||||
|
this.vorname = vorname;
|
||||||
|
this.password = password;
|
||||||
|
this.email = email;
|
||||||
|
this.kontoStand = 0;
|
||||||
|
this.Id = ++IDCounter;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public double einzahlung(double wert) {
|
||||||
|
|
||||||
|
return this.kontoStand += wert;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public int loadIDCounter() {
|
||||||
|
return Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEmail() {
|
||||||
|
return email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmail(String email) {
|
||||||
|
this.email = email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVorname() {
|
||||||
|
return vorname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVorname(String vorname) {
|
||||||
|
this.vorname = vorname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public double getKontoStand() {
|
||||||
|
return kontoStand;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "BankSystem [name=" + name + ", vorname=" + vorname + ", password=" + password + ", kontoStand="
|
||||||
|
+ kontoStand + ", Id=" + Id + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package BankSystemGUI;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class BankSystemTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEinzahlung() {
|
||||||
|
BankSystem test = new BankSystem();
|
||||||
|
double x = test.einzahlung(100);
|
||||||
|
assertEquals(100, x, 0.001); // Hier wird überprüft, ob der Kontostand 100.0 ist
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
package BankSystemGUI;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
|
||||||
|
public class Hauptfenster extends BankSystem {
|
||||||
|
private Window fenster;
|
||||||
|
private Scanner scan;
|
||||||
|
|
||||||
|
Hauptfenster() throws FileNotFoundException{
|
||||||
|
File fr = new File("C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\BankSystemGUI\\Kunde.txt");
|
||||||
|
scan = new Scanner(fr);
|
||||||
|
String vorname = null;
|
||||||
|
String name = null;
|
||||||
|
double kontoStand = 0.0;
|
||||||
|
while (scan.hasNextLine()) {
|
||||||
|
String line = scan.nextLine();
|
||||||
|
// Prüfen, ob die Zeile den "Vorname" enthält
|
||||||
|
if (line.startsWith("Vorname:"))
|
||||||
|
vorname = line.split(":")[1].trim(); // Den Namen extrahieren
|
||||||
|
|
||||||
|
if (line.startsWith("Nachname: "))
|
||||||
|
name = line.split(":")[1].trim();
|
||||||
|
|
||||||
|
if (line.startsWith("kontoStand ")) {
|
||||||
|
String value = line.split(" ")[1].trim();
|
||||||
|
kontoStand = Double.parseDouble(value);
|
||||||
|
break; // Wir haben den Namen gefunden, also beenden wir die Schleife
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fenster = new Window();
|
||||||
|
fenster.setTitle("Haupseite");
|
||||||
|
|
||||||
|
JLabel willkommennachricht = new JLabel("Willkommen " + vorname + " " + name);
|
||||||
|
willkommennachricht.setBounds(10, 10, 200, 40);
|
||||||
|
|
||||||
|
|
||||||
|
JLabel konotstand = new JLabel("Deine Aktuelle Kontostand: " + kontoStand);
|
||||||
|
konotstand.setBounds(10,50 ,200 ,40 );
|
||||||
|
|
||||||
|
|
||||||
|
fenster.add(konotstand);
|
||||||
|
fenster.add(willkommennachricht);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) throws FileNotFoundException {
|
||||||
|
Hauptfenster test = new Hauptfenster();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
ID: 1
|
||||||
|
Vorname: obai
|
||||||
|
Nachname: albek
|
||||||
|
Password: 12345
|
||||||
|
Email: obay@gmail.com
|
||||||
|
kontoStand 0.0
|
||||||
|
|
|
@ -0,0 +1,125 @@
|
||||||
|
package BankSystemGUI;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.GridLayout;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
|
||||||
|
public class LogIn extends JFrame implements ActionListener {
|
||||||
|
private JButton submit;
|
||||||
|
private File file;
|
||||||
|
private PrintWriter write;
|
||||||
|
private JTextField eingabeVorname;
|
||||||
|
private JTextField eingabenNachname;
|
||||||
|
private JTextField eingabenPassword;
|
||||||
|
private JTextField eingabeEmail;
|
||||||
|
private BankController controller;
|
||||||
|
private Window fenster;
|
||||||
|
|
||||||
|
LogIn() {
|
||||||
|
controller = new BankController();
|
||||||
|
fenster = new Window();
|
||||||
|
fenster.setTitle("log in Seite");
|
||||||
|
|
||||||
|
JLabel überschrift = new JLabel("loggen Sie sich ein: ");
|
||||||
|
überschrift.setBounds(10, 2, 120, 40);
|
||||||
|
|
||||||
|
JLabel vorname = new JLabel("Vorname: ");
|
||||||
|
vorname.setBounds(10, 50, 60, 10);
|
||||||
|
eingabeVorname = new JTextField();
|
||||||
|
eingabeVorname.setBounds(80, 50, 100, 20);
|
||||||
|
|
||||||
|
// setBounds(int x, int y, int width, int height)
|
||||||
|
JLabel nachname = new JLabel("nachname: ");
|
||||||
|
nachname.setBounds(10, 90, 100, 20);
|
||||||
|
|
||||||
|
eingabenNachname = new JTextField();
|
||||||
|
eingabenNachname.setBounds(80, 90, 100, 20);
|
||||||
|
|
||||||
|
JLabel password = new JLabel("password: ");
|
||||||
|
password.setBounds(10, 130, 100, 20);
|
||||||
|
|
||||||
|
eingabenPassword = new JTextField();
|
||||||
|
eingabenPassword.setBounds(80, 130, 100, 20);
|
||||||
|
|
||||||
|
JLabel email = new JLabel("Email: ");
|
||||||
|
email.setBounds(10, 170, 100, 20);
|
||||||
|
|
||||||
|
eingabeEmail = new JTextField();
|
||||||
|
eingabeEmail.setBounds(80, 170, 100, 20);
|
||||||
|
|
||||||
|
submit = new JButton("Submit");
|
||||||
|
submit.setBounds(10, 210, 100, 20);
|
||||||
|
|
||||||
|
submit.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
try {
|
||||||
|
logUser();
|
||||||
|
} catch (IOException e1) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
fenster.add(überschrift);
|
||||||
|
fenster.add(vorname);
|
||||||
|
fenster.add(eingabeVorname);
|
||||||
|
fenster.add(nachname);
|
||||||
|
fenster.add(eingabenNachname);
|
||||||
|
fenster.add(password);
|
||||||
|
fenster.add(eingabenPassword);
|
||||||
|
fenster.add(email);
|
||||||
|
fenster.add(eingabeEmail);
|
||||||
|
fenster.add(submit);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void logUser() throws IOException {
|
||||||
|
if (eingabeVorname.getText().isEmpty() || eingabenNachname.getText().isEmpty()
|
||||||
|
|| eingabenPassword.getText().isEmpty() || eingabeEmail.getText().isEmpty())
|
||||||
|
JOptionPane.showMessageDialog(null, "Alle Felder sind erforderlich", "Fehler", JOptionPane.ERROR_MESSAGE);
|
||||||
|
else {
|
||||||
|
String vorname = eingabeVorname.getText();
|
||||||
|
String nachname = eingabenNachname.getText();
|
||||||
|
String password = eingabenPassword.getText();
|
||||||
|
String email = eingabeEmail.getText();
|
||||||
|
|
||||||
|
BankSystem kunde = controller.addKunde(nachname, vorname, password, email);
|
||||||
|
//JOptionPane.showMessageDialog(null, "Erfolgreich eingeloggt!", "Info", JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
fenster.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
package BankSystemGUI;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class Test {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
BankSystem b1 = new BankSystem("obai","albek","12345","obay@gmail.com");
|
||||||
|
System.out.println(b1.toString());
|
||||||
|
b1.einzahlung(100);
|
||||||
|
System.out.println(b1.getKontoStand());
|
||||||
|
System.out.println(b1.toString());
|
||||||
|
//
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package BankSystemGUI;
|
||||||
|
|
||||||
|
import java.awt.FlowLayout;
|
||||||
|
import java.awt.GridLayout;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
|
public class Window extends JFrame {
|
||||||
|
|
||||||
|
public JFrame window;
|
||||||
|
|
||||||
|
Window(){
|
||||||
|
|
||||||
|
setSize(700, 700);
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
setLayout(null);
|
||||||
|
setVisible(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,453 @@
|
||||||
|
package BinaryTree;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.Queue;
|
||||||
|
|
||||||
|
public class BinaryBaumList {
|
||||||
|
Node root;
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------
|
||||||
|
private int findTreeHeightRekursiv(Node temp) {
|
||||||
|
if (temp == null)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
int left_subTree = findTreeHeightRekursiv(temp.left);
|
||||||
|
int right_subTree = findTreeHeightRekursiv(temp.right);
|
||||||
|
|
||||||
|
if (left_subTree > right_subTree)
|
||||||
|
return 1 + left_subTree;
|
||||||
|
|
||||||
|
return 1 + right_subTree;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHeight() {
|
||||||
|
return findTreeHeightRekursiv(root);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------
|
||||||
|
private void additerativ(int value) {
|
||||||
|
// erzeuge eine neue knote
|
||||||
|
Node newNode = new Node();
|
||||||
|
// setze in knote einen Wert
|
||||||
|
newNode.value = value;
|
||||||
|
// ersetze left Knote auf Null
|
||||||
|
newNode.left = null;
|
||||||
|
// ersetze rechte Knote auf Null
|
||||||
|
newNode.right = null;
|
||||||
|
|
||||||
|
// wenn meine Liste leer ist
|
||||||
|
if (root == null) {
|
||||||
|
this.root = newNode;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Wenn sie nicht leer!
|
||||||
|
|
||||||
|
// temp root, um einfacher zu suchen
|
||||||
|
Node temp = root;
|
||||||
|
// da mein Temp bis null Knote läuft,
|
||||||
|
// speichere ich seinen vorhängieren Wert
|
||||||
|
Node merker = temp;
|
||||||
|
while (temp != null) {
|
||||||
|
// speichere temp vorhängieren Wert
|
||||||
|
merker = temp;
|
||||||
|
// wenn soll ich die linke Seite betrachten
|
||||||
|
if (value < temp.value)
|
||||||
|
temp = temp.left;
|
||||||
|
|
||||||
|
// wenn nein soll ich die rechte Seite betrachten
|
||||||
|
else
|
||||||
|
temp = temp.right;
|
||||||
|
}
|
||||||
|
// so wenn ich ganz unten bin, soll ich sehen, ob ich die Knote rechts oder
|
||||||
|
// linke einsetzen soll
|
||||||
|
// Wenn ja, Knote auf der Linke Seite einsetzen
|
||||||
|
if (value < merker.value)
|
||||||
|
merker.left = newNode;
|
||||||
|
// Wenn nein, Knote auf der rechte Seite einsetzen
|
||||||
|
else
|
||||||
|
merker.right = newNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addRekursiv(Node temp, int value) {
|
||||||
|
|
||||||
|
// erzeuge eine neue knote
|
||||||
|
Node newNode = new Node();
|
||||||
|
// setze in knote einen Wert
|
||||||
|
newNode.value = value;
|
||||||
|
// ersetze left Knote auf Null
|
||||||
|
newNode.left = null;
|
||||||
|
// ersetze rechte Knote auf Null
|
||||||
|
newNode.right = null;
|
||||||
|
// falls die Liste leer ist!
|
||||||
|
if (temp == null) {
|
||||||
|
root = newNode;
|
||||||
|
System.out.println("Die Root: " + root.value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Wenn ja die Linke Seite betrachten
|
||||||
|
if (value < temp.value) {
|
||||||
|
// Wenn mein temp die die Knote null erreicht
|
||||||
|
if (temp.left == null) {
|
||||||
|
// erstze die Knote
|
||||||
|
temp.left = newNode;
|
||||||
|
System.out.println("Linke Knote: " + temp.left.value);
|
||||||
|
}
|
||||||
|
// wenn mein Temp die Knote null nicht erreicht hat
|
||||||
|
else {
|
||||||
|
// laufe weiter
|
||||||
|
addRekursiv(temp.left, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// wenn die Value größer als die Root
|
||||||
|
// also die rechte Seite betrachten
|
||||||
|
else {
|
||||||
|
if (temp.right == null) {
|
||||||
|
// erstze die Knote
|
||||||
|
temp.right = newNode;
|
||||||
|
System.out.println("Rechte Knote: " + temp.right.value);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// laufe Weiter
|
||||||
|
addRekursiv(temp.right, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addElement(int value) {
|
||||||
|
// additerativ(value);
|
||||||
|
addRekursiv(root, value);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------
|
||||||
|
private int findMinRekursiv(Node temp) {
|
||||||
|
|
||||||
|
if (temp.left == null)
|
||||||
|
return temp.value;
|
||||||
|
|
||||||
|
return findMinRekursiv(temp.left);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int findMinIterativ(Node temp) {
|
||||||
|
|
||||||
|
while (temp.left != null)
|
||||||
|
temp = temp.left;
|
||||||
|
|
||||||
|
return temp.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int findMin() {
|
||||||
|
return findMinRekursiv(root);
|
||||||
|
// return findMinIterativ(root);
|
||||||
|
}
|
||||||
|
// -----------------------------------------------------------------
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------
|
||||||
|
private int findMaxRekursiv(Node temp) {
|
||||||
|
// // Wenn es kein rechtes Kind gibt, ist dies das Maximum
|
||||||
|
if (temp.right == null)
|
||||||
|
return temp.value;
|
||||||
|
|
||||||
|
// Rekursiv weiter nach rechts gehen
|
||||||
|
return findMaxRekursiv(temp.right);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int findMaxIterativ(Node temp) {
|
||||||
|
while (temp.right != null)
|
||||||
|
temp = temp.right;
|
||||||
|
|
||||||
|
return temp.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int findMax() {
|
||||||
|
// Es gibt keine Elemente
|
||||||
|
if (root == null)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
// Wenn ja, dann hat root den Max Wert
|
||||||
|
if (root.right == null)
|
||||||
|
return root.value;
|
||||||
|
|
||||||
|
// return findMaxRekursiv(root);
|
||||||
|
return findMaxIterativ(root);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------
|
||||||
|
private void printPreorder(Node temp) {// [root][left][right]
|
||||||
|
if (temp == null)
|
||||||
|
return;
|
||||||
|
System.out.print(temp.value + " ");
|
||||||
|
printPreorder(temp.left);
|
||||||
|
printPreorder(temp.right);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void printInorder(Node temp) {// [left][root][right]
|
||||||
|
if (temp == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printInorder(temp.left);
|
||||||
|
System.out.print(temp.value + " ");
|
||||||
|
printInorder(temp.right);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void printPostoder(Node temp) {// [left][right][root]
|
||||||
|
if (temp == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
printPreorder(temp.left);
|
||||||
|
printPreorder(temp.right);
|
||||||
|
System.out.print(temp.value + " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BreadthFirst() {
|
||||||
|
// Erstelle eine Queue (Warteschlange) vom Typ LinkedList, um die Knoten für die
|
||||||
|
// Level-Order Traversal zu speichern.
|
||||||
|
Queue<Node> q1 = new LinkedList<>();
|
||||||
|
|
||||||
|
// Füge den Wurzelknoten des Baums in die Warteschlange ein.
|
||||||
|
// Dies ist der Startpunkt für die Breadth-First Traversal.
|
||||||
|
q1.add(root);
|
||||||
|
|
||||||
|
// Solange die Warteschlange nicht leer ist, gibt es noch Knoten zu besuchen.
|
||||||
|
while (!q1.isEmpty()) {
|
||||||
|
// Schau dir das erste Element in der Warteschlange an, ohne es zu entfernen.
|
||||||
|
// Dies gibt dir den aktuellen Knoten, den du verarbeiten willst.
|
||||||
|
Node temp = q1.peek();
|
||||||
|
|
||||||
|
// Entferne das Element (den Knoten), das gerade verarbeitet wird, aus der
|
||||||
|
// Warteschlange.
|
||||||
|
// Dies verschiebt die Warteschlange und macht den nächsten Knoten zum
|
||||||
|
// "Front"-Element.
|
||||||
|
q1.remove();
|
||||||
|
|
||||||
|
// Gib den Wert des aktuellen Knotens aus, den du gerade bearbeitest.
|
||||||
|
// Dies ist der eigentliche Schritt, bei dem du die Traversal-Ergebnisse
|
||||||
|
// ausgibst.
|
||||||
|
System.out.print(temp.value + " ");
|
||||||
|
|
||||||
|
// Wenn der linke Kindknoten existiert, füge ihn zur Warteschlange hinzu.
|
||||||
|
// Dies stellt sicher, dass der linke Kindknoten später in der richtigen
|
||||||
|
// Reihenfolge bearbeitet wird.
|
||||||
|
if (temp.left != null)
|
||||||
|
q1.add(temp.left);
|
||||||
|
|
||||||
|
// Wenn der rechte Kindknoten existiert, füge ihn ebenfalls zur Warteschlange
|
||||||
|
// hinzu.
|
||||||
|
// Dies stellt sicher, dass der rechte Kindknoten nach dem linken Kindknoten
|
||||||
|
// bearbeitet wird.
|
||||||
|
if (temp.right != null)
|
||||||
|
q1.add(temp.right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printDepth() {
|
||||||
|
// printPreorder(root);
|
||||||
|
// printInorder(root);
|
||||||
|
BreadthFirst();
|
||||||
|
}
|
||||||
|
// -----------------------------------------------------------------
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Löschen von Knoten:
|
||||||
|
* - wenn eine Knote gelöscht werden soll, sollen erst 4 wichtige Eigenschaften betrachtet werden:
|
||||||
|
* 1. ob die Knote überhaupt igrendwo im Baum liegt (suchen)
|
||||||
|
* 2. ob die Knote ein Blatt (leaf Node) ist,das heißt die Knote hat weder rechte Knote noch linke Knote
|
||||||
|
* 3. ob die Knote nur ein einziges Kind hat
|
||||||
|
* 4. ob die Knote zwei Kinder hat
|
||||||
|
* 4.1 hier entscheidt man, was er nehmen möchte:
|
||||||
|
* . Inorder-Vorgänger: Suche nach dem größten Knoten im linken Teilbaum
|
||||||
|
* . Inorder-Nachfolger: Suche nach dem kleinsten Knoten im rechten Teilbaum.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 1. Suchen
|
||||||
|
private boolean searchNummberIterativ(int value) {
|
||||||
|
if (root == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
Node temp = root;
|
||||||
|
while (temp.value != value) {
|
||||||
|
if (value < temp.value && temp.left != null)
|
||||||
|
temp = temp.left;
|
||||||
|
|
||||||
|
else if (value >= temp.value && temp.right != null)
|
||||||
|
temp = temp.right;
|
||||||
|
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (temp.value == value)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean searchNummberRekursiv(Node temp , int value) {
|
||||||
|
if (temp == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (temp.value == value)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
else if(value < temp.value)
|
||||||
|
return searchNummberRekursiv(temp.left , value);
|
||||||
|
|
||||||
|
else
|
||||||
|
return searchNummberRekursiv(temp.right , value);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void searchNummber(int value) {
|
||||||
|
|
||||||
|
if(searchNummberRekursiv(root,value))
|
||||||
|
System.out.println("Ist gefunden: " + value);
|
||||||
|
else
|
||||||
|
System.out.println("Ist nicht gefunden!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//2. löschen als leaf Node
|
||||||
|
private void removeleafNode(int value) {
|
||||||
|
if (!searchNummberIterativ(value)) {
|
||||||
|
System.out.println("Die zahl befindet sich nicht im Baum!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Node temp = root;
|
||||||
|
Node merker = null;
|
||||||
|
while( temp.value != value) {
|
||||||
|
merker = temp;
|
||||||
|
if (value < temp.value)
|
||||||
|
temp = temp.left;
|
||||||
|
|
||||||
|
else if (value >= temp.value)
|
||||||
|
temp = temp.right;
|
||||||
|
}
|
||||||
|
if (temp.value < merker.value)
|
||||||
|
merker.left = null;
|
||||||
|
|
||||||
|
else
|
||||||
|
merker.right = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//3. lösche eine Knote mit einem einzigen Kind
|
||||||
|
private void removeWithOneChild(int value) {
|
||||||
|
if (!searchNummberIterativ(value)) {
|
||||||
|
System.out.println("Die zahl befindet sich nicht im Baum!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Node temp = root;
|
||||||
|
Node merker = null;
|
||||||
|
while( temp.value != value) {
|
||||||
|
merker = temp;
|
||||||
|
if (value < temp.value)
|
||||||
|
temp = temp.left;
|
||||||
|
|
||||||
|
else if (value >= temp.value)
|
||||||
|
temp = temp.right;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (temp.left != null)
|
||||||
|
merker.left = temp.left;
|
||||||
|
else
|
||||||
|
merker.right = temp.right;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//4. lösche eine Knote mit zwei Kindern
|
||||||
|
private void removeWithTwoChildern(int value) {
|
||||||
|
if (!searchNummberIterativ(value)) {
|
||||||
|
System.out.println("Die zahl befindet sich nicht im Baum!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Node temp = root;
|
||||||
|
Node merker = null;
|
||||||
|
while( temp.value != value) {
|
||||||
|
if (value < temp.value)
|
||||||
|
temp = temp.left;
|
||||||
|
|
||||||
|
else if (value >= temp.value)
|
||||||
|
temp = temp.right;
|
||||||
|
|
||||||
|
merker = temp;
|
||||||
|
}
|
||||||
|
temp = temp.left;
|
||||||
|
Node merker2 = temp;
|
||||||
|
while(temp.right != null) {
|
||||||
|
merker2 = temp;
|
||||||
|
temp = temp.right;
|
||||||
|
}
|
||||||
|
merker.value = temp.value;
|
||||||
|
merker2.right = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//2,3,4 Cases
|
||||||
|
private void removWithAllCases(int value) {
|
||||||
|
if (!searchNummberIterativ(value)) {
|
||||||
|
System.out.println("Die zahl befindet sich nicht im Baum!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Node temp = root;
|
||||||
|
Node merker = null;
|
||||||
|
while (temp.value != value) {
|
||||||
|
merker = temp;
|
||||||
|
if (value < temp.value)
|
||||||
|
temp = temp.left;
|
||||||
|
|
||||||
|
else if (value >= temp.value)
|
||||||
|
temp = temp.right;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Die knote ist ein Blatt (leaf Node)
|
||||||
|
if (temp.left == null && temp.right == null) {
|
||||||
|
if (merker == null)
|
||||||
|
root =null;
|
||||||
|
else if (merker.left == temp)
|
||||||
|
merker.left = null;
|
||||||
|
else
|
||||||
|
merker.right = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Die Knote hat genau ein Kind entweder links oder rechts
|
||||||
|
if (temp.left == null || temp.right == null) {
|
||||||
|
if (temp.left != null && temp.right == null)
|
||||||
|
merker.left = temp.left;
|
||||||
|
|
||||||
|
else
|
||||||
|
merker.right = temp.right;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Die Knote hat zwei Kinder
|
||||||
|
else {
|
||||||
|
merker = temp;
|
||||||
|
// weg(1): nach links gehen und ganz nach unten rechts gehen
|
||||||
|
temp = temp.left;
|
||||||
|
Node merker2 = temp;
|
||||||
|
while (temp.right != null) {
|
||||||
|
merker2 = temp;
|
||||||
|
temp = temp.right;
|
||||||
|
}
|
||||||
|
merker.value = temp.value;
|
||||||
|
merker2.right = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
public void removNode(int value) {
|
||||||
|
// removeleafNode(value);
|
||||||
|
//removeWithOneChild(value);
|
||||||
|
//removeWithTwoChildern(value);
|
||||||
|
removWithAllCases(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,23 @@
|
||||||
|
package BinaryTree;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class JuintTeste {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test() {
|
||||||
|
BinaryBaumList b1 = new BinaryBaumList();
|
||||||
|
b1.addElement(15);
|
||||||
|
b1.addElement(6);
|
||||||
|
b1.addElement(3);
|
||||||
|
b1.addElement(9);
|
||||||
|
b1.addElement(8);
|
||||||
|
b1.addElement(20);
|
||||||
|
b1.addElement(25);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package BinaryTree;
|
||||||
|
|
||||||
|
public class Node {
|
||||||
|
int value;
|
||||||
|
Node left;
|
||||||
|
Node right;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
package BinaryTree;
|
||||||
|
|
||||||
|
public class Test {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
BinaryBaumList b1 = new BinaryBaumList();
|
||||||
|
b1.addElement(50);
|
||||||
|
b1.addElement(30);
|
||||||
|
b1.addElement(70);
|
||||||
|
b1.addElement(20);
|
||||||
|
b1.addElement(40);
|
||||||
|
b1.addElement(60);
|
||||||
|
b1.addElement(80);
|
||||||
|
b1.addElement(15);
|
||||||
|
b1.addElement(22);
|
||||||
|
b1.addElement(35);
|
||||||
|
b1.addElement(45);
|
||||||
|
b1.addElement(21);
|
||||||
|
b1.addElement(25);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.out.print("[");
|
||||||
|
b1.printDepth();
|
||||||
|
System.out.print("]");
|
||||||
|
System.out.println();
|
||||||
|
b1.removNode(30);
|
||||||
|
System.out.print("[");
|
||||||
|
b1.printDepth();
|
||||||
|
System.out.print("]");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,10 @@
|
||||||
|
package Collection;
|
||||||
|
public class Collections {
|
||||||
|
|
||||||
|
/* Collections: eine Sammlung von Werten, die vom gleichen Datentyp sein können oder auch nicht.
|
||||||
|
* 1. Array:
|
||||||
|
* - ist änderbar, hat fixed Size und indexed
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package Collection;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Stack;
|
||||||
|
import java.util.Vector;
|
||||||
|
|
||||||
|
public class Lists {
|
||||||
|
/*
|
||||||
|
* - Duplikate von Elementen ist zulassen
|
||||||
|
* - die Methoden alle KlassenLists sind ähnlich zueinander
|
||||||
|
* - Stack Prinzip : LIFO (Last In, First Out)
|
||||||
|
* - indexded Lists
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Die vier Lists sind dynamischen Lists
|
||||||
|
ArrayList<String> arrayList = new ArrayList<>();
|
||||||
|
|
||||||
|
LinkedList<String> linkedList = new LinkedList<>();
|
||||||
|
|
||||||
|
List<String> vector = new Vector<>();
|
||||||
|
// stack erbt von Vector
|
||||||
|
Stack<String> stack = new Stack<>();
|
||||||
|
|
||||||
|
arrayList.add("arrayList");
|
||||||
|
linkedList.add("LinkedList");
|
||||||
|
vector.add("Vektor");
|
||||||
|
stack.add("Stack");
|
||||||
|
System.out.println(arrayList);
|
||||||
|
System.out.println(linkedList);
|
||||||
|
System.out.println(vector);
|
||||||
|
System.out.println(stack);
|
||||||
|
stack.push("pushed String");
|
||||||
|
System.out.println(stack);
|
||||||
|
stack.pop();
|
||||||
|
System.out.println(stack);
|
||||||
|
// gibt das oberste Element zurück
|
||||||
|
stack.peek();
|
||||||
|
System.out.println(stack);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
package Collection;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.PriorityQueue;
|
||||||
|
import java.util.Queue;
|
||||||
|
import java.util.Deque;
|
||||||
|
import java.util.ArrayDeque;
|
||||||
|
|
||||||
|
public class Queueslist {
|
||||||
|
/*
|
||||||
|
* - Queue Prinzip: FIFO (First In, First Out)
|
||||||
|
* - dynamische nicht indexed lists
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Queue<String> queue = new LinkedList<>();
|
||||||
|
|
||||||
|
//füge ein Element am Ende hinzu
|
||||||
|
queue.add("1");
|
||||||
|
System.out.println(queue);
|
||||||
|
// füge ein Element am Ende hinzu
|
||||||
|
queue.add("2");
|
||||||
|
System.out.println(queue);
|
||||||
|
|
||||||
|
// füge ein Element am Ende hinzu, gibt false zurück, wenn die Queue full ist
|
||||||
|
queue.offer("3");
|
||||||
|
System.out.println(queue);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Entfernt das erste Element in der Queue und gibt es zurück.
|
||||||
|
queue.remove();
|
||||||
|
//Entfernt das erste Element in der Queue und gibt es zurück. Gibt null zurück, wenn die Queue leer ist,
|
||||||
|
queue.poll();
|
||||||
|
|
||||||
|
|
||||||
|
/* Spezielle Queue-Typen:
|
||||||
|
*
|
||||||
|
* 1. PriorityQueue: ordnet ihre Elemente in einer natürlichen Ordnung oder nach einem angegebenen Comparator.
|
||||||
|
*/
|
||||||
|
|
||||||
|
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
|
||||||
|
priorityQueue.add(10);
|
||||||
|
priorityQueue.add(20);
|
||||||
|
priorityQueue.add(7);
|
||||||
|
|
||||||
|
System.out.println(priorityQueue.poll()); // Ausgabe: 7 (niedrigster Wert zuerst)
|
||||||
|
System.out.println(priorityQueue.poll()); // Ausgabe: 10 zweite niedrigster Wert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Spezielle Queue-Typen:
|
||||||
|
*
|
||||||
|
* 1. Deque (Double-Ended Queue): erlaubt das Hinzufügen und Entfernen von Elementen an beiden Enden der Queue.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Deque<String> deque = new ArrayDeque<>();
|
||||||
|
|
||||||
|
deque.addFirst("First");
|
||||||
|
deque.addLast("Last");
|
||||||
|
deque.addFirst("New First");
|
||||||
|
|
||||||
|
System.out.println(deque.removeFirst()); // New First
|
||||||
|
System.out.println(deque.removeLast()); // Last
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package Collection;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
|
public class Setlists {
|
||||||
|
/* - nicht indexed lists
|
||||||
|
* - erlaubt keine doppelten Elemente
|
||||||
|
* - HashSet, LinkedHashSet und TreeSet
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. HashSet:
|
||||||
|
* - Verwendet eine HashMap intern, um die Elemente zu speichern
|
||||||
|
* - Bietet konstante Zeit für die grundlegenden Operationen (add, remove, contains), solange die Hash-Funktion effizient ist.
|
||||||
|
* - Die Reihenfolge der Elemente ist nicht garantiert.
|
||||||
|
*/
|
||||||
|
Set<String> hashSet = new HashSet<>();
|
||||||
|
hashSet.add("Apple");
|
||||||
|
hashSet.add("Banana");
|
||||||
|
hashSet.add("Apple"); // wird ignoriert, da "Apple" bereits existiert
|
||||||
|
|
||||||
|
System.out.println(hashSet); // Ausgabe: Apple,Banana
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 2. LinkedHashSet:
|
||||||
|
* - Verwendet eine verknüpfte Liste (LinkedList) zusammen mit einer HashMap, um die Elemente zu speichern.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Set<String> linkedHashSet = new LinkedHashSet<>();
|
||||||
|
linkedHashSet.add("Apple");
|
||||||
|
linkedHashSet.add("Banana");
|
||||||
|
linkedHashSet.add("Apple");
|
||||||
|
System.out.println(linkedHashSet);// wird ignoriert, da "Apple" bereits existiert
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 3. TreeSet:
|
||||||
|
* - Verwendet eine selbstbalancierende Baumstruktur (Red-Black Tree), um die Elemente zu speichern.
|
||||||
|
* - Elemente werden in natürlicher Ordnung (oder durch einen Comparator, falls angegeben) sortiert gespeichert.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Set<String> treeSet = new TreeSet<>();
|
||||||
|
treeSet.add("Banana");
|
||||||
|
treeSet.add("Apple");
|
||||||
|
treeSet.add("Apple");
|
||||||
|
|
||||||
|
// die zweite Apple wird ignorieret und die Reihnfolge wird automatisch sortiert
|
||||||
|
System.out.println(treeSet);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,68 @@
|
||||||
|
package FassadenKlasse;
|
||||||
|
/*In Allgemein: Also zu verstehe ist, das Fassade-Muster hilft dabei
|
||||||
|
* , die Komplexität eines Systems zu verbergen und es für den Benutzer einfacher zu machen
|
||||||
|
* , mit dem System zu interagieren.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Subsystem-Klasse für Speicherverwaltung
|
||||||
|
class Speicher {
|
||||||
|
public void initialisiereSpeicher() {
|
||||||
|
System.out.println("Speicher wird initialisiert...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subsystem-Klasse für Prozessorverwaltung
|
||||||
|
class Prozessor {
|
||||||
|
public void initialisiereProzessor() {
|
||||||
|
System.out.println("Prozessor wird initialisiert...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subsystem-Klasse für Eingabegeräteverwaltung
|
||||||
|
class Eingabegeräte {
|
||||||
|
public void initialisiereEingabegeräte() {
|
||||||
|
System.out.println("Eingabegeräte werden initialisiert...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subsystem-Klasse für Netzwerkverwaltung
|
||||||
|
class Netzwerk {
|
||||||
|
public void initialisiereNetzwerk() {
|
||||||
|
System.out.println("Netzwerk wird initialisiert...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fassade-Klasse, die eine einfache Schnittstelle bereitstellt
|
||||||
|
class ComputersystemFassade {
|
||||||
|
private Speicher speicher;
|
||||||
|
private Prozessor prozessor;
|
||||||
|
private Eingabegeräte eingabegeräte;
|
||||||
|
private Netzwerk netzwerk;
|
||||||
|
|
||||||
|
public ComputersystemFassade() {
|
||||||
|
this.speicher = new Speicher();
|
||||||
|
this.prozessor = new Prozessor();
|
||||||
|
this.eingabegeräte = new Eingabegeräte();
|
||||||
|
this.netzwerk = new Netzwerk();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Die Fassade-Methode, die das System startet
|
||||||
|
public void systemStarten() {
|
||||||
|
System.out.println("Systemstart wird vorbereitet...");
|
||||||
|
speicher.initialisiereSpeicher();
|
||||||
|
prozessor.initialisiereProzessor();
|
||||||
|
eingabegeräte.initialisiereEingabegeräte();
|
||||||
|
netzwerk.initialisiereNetzwerk();
|
||||||
|
System.out.println("System erfolgreich gestartet!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Client-Code, der die Fassade verwendet
|
||||||
|
public class Fassadenklasse {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Der Client verwendet die Fassade, um das System zu starten
|
||||||
|
ComputersystemFassade fassade = new ComputersystemFassade();
|
||||||
|
fassade.systemStarten();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.Timer;
|
||||||
|
|
||||||
|
public class BewegePanle extends JPanel {
|
||||||
|
private int yPosition = 0; // Startposition des Panels oben
|
||||||
|
private final int speed = 1; // Geschwindigkeit der Bewegung
|
||||||
|
private final int panelWidth = 100;
|
||||||
|
private final int panelHeight = 100;
|
||||||
|
|
||||||
|
public BewegePanle() {
|
||||||
|
// Setze die Hintergrundfarbe des Panels
|
||||||
|
setBackground(Color.red);
|
||||||
|
|
||||||
|
// Timer initialisieren und starten
|
||||||
|
//(int delay, ActionListener listener)
|
||||||
|
Timer timer = new Timer(10, new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
// Aktualisiere die y-Position
|
||||||
|
yPosition += speed;
|
||||||
|
|
||||||
|
// Wenn das Panel unten angekommen ist, starte wieder von oben
|
||||||
|
if (yPosition > 750 - panelHeight) {
|
||||||
|
yPosition = 0; // Zurück an den oberen Rand
|
||||||
|
}
|
||||||
|
|
||||||
|
// Erzwinge das Neuzeichnen des Panels
|
||||||
|
setBounds(0, yPosition, panelWidth, panelHeight);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
timer.start(); // Timer starten
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Erstelle das Hauptfenster
|
||||||
|
JFrame frame = new JFrame();
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.setSize(750, 750);
|
||||||
|
frame.setLayout(null); // Deaktiviere das Layout-Management
|
||||||
|
|
||||||
|
// Erstelle eine Instanz von Jpanel und füge sie dem Fenster hinzu
|
||||||
|
BewegePanle panel = new BewegePanle();
|
||||||
|
panel.setBounds(0, 0, 100, 100); // Initiale Position und Größe
|
||||||
|
frame.add(panel);
|
||||||
|
|
||||||
|
// Mache das Fenster sichtbar
|
||||||
|
frame.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
public class Borderlayout {
|
||||||
|
/*
|
||||||
|
* steuert die Positionierung von Komponenten in einem Container
|
||||||
|
* Z.B:
|
||||||
|
* NORTH (oben)
|
||||||
|
SOUTH (unten)
|
||||||
|
EAST (rechts)
|
||||||
|
WEST (links)
|
||||||
|
CENTER (Mitte)
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Erstelle ein Fenster (JFrame-Objekt)
|
||||||
|
JFrame frame = new JFrame();
|
||||||
|
|
||||||
|
// Setzt das Layout des Rahmens auf BorderLayout mit einem Abstand von 10 Pixeln zwischen den Komponenten
|
||||||
|
frame.setLayout(new BorderLayout(10,10));
|
||||||
|
|
||||||
|
// Legt die Größe des Fensters fest (Breite: 750 Pixel, Höhe: 750 Pixel)
|
||||||
|
frame.setSize(750, 750);
|
||||||
|
|
||||||
|
// Stellt sicher, dass das Programm beendet wird, wenn das Fenster geschlossen wird
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
// Setzt den Titel des Fensters
|
||||||
|
frame.setTitle("Mein erstes Fenster");
|
||||||
|
|
||||||
|
// Macht das Fenster sichtbar
|
||||||
|
frame.setVisible(true);
|
||||||
|
|
||||||
|
// Erstelle fünf JPanel-Objekte, die als Container für andere Komponenten dienen können
|
||||||
|
JPanel panel1 = new JPanel();
|
||||||
|
JPanel panel2 = new JPanel();
|
||||||
|
JPanel panel3 = new JPanel();
|
||||||
|
JPanel panel4 = new JPanel();
|
||||||
|
JPanel panel5 = new JPanel();
|
||||||
|
|
||||||
|
// Setzt den Hintergrund von panel1 auf Rot
|
||||||
|
panel1.setBackground(Color.red);
|
||||||
|
// Setzt den Hintergrund von panel2 auf Grün
|
||||||
|
panel2.setBackground(Color.green);
|
||||||
|
// Setzt den Hintergrund von panel3 auf Gelb
|
||||||
|
panel3.setBackground(Color.yellow);
|
||||||
|
// Setzt den Hintergrund von panel4 auf Magenta
|
||||||
|
panel4.setBackground(Color.magenta);
|
||||||
|
// Setzt den Hintergrund von panel5 auf Blau
|
||||||
|
panel5.setBackground(Color.blue);
|
||||||
|
|
||||||
|
// Legt die bevorzugte Größe von panel1 fest (100x100 Pixel)
|
||||||
|
panel1.setPreferredSize(new Dimension(100,100));
|
||||||
|
// Legt die bevorzugte Größe von panel2 fest (100x100 Pixel)
|
||||||
|
panel2.setPreferredSize(new Dimension(100,100));
|
||||||
|
// Legt die bevorzugte Größe von panel3 fest (100x100 Pixel)
|
||||||
|
panel3.setPreferredSize(new Dimension(100,100));
|
||||||
|
// Legt die bevorzugte Größe von panel4 fest (100x100 Pixel)
|
||||||
|
panel4.setPreferredSize(new Dimension(100,100));
|
||||||
|
// Legt die bevorzugte Größe von panel5 fest (100x100 Pixel)
|
||||||
|
panel5.setPreferredSize(new Dimension(100,100));
|
||||||
|
|
||||||
|
// Fügt panel1 im Bereich NORTH des BorderLayouts hinzu
|
||||||
|
frame.add(panel1, BorderLayout.NORTH);
|
||||||
|
// Fügt panel2 im Bereich WEST des BorderLayouts hinzu
|
||||||
|
frame.add(panel2, BorderLayout.WEST);
|
||||||
|
// Fügt panel3 im Bereich EAST des BorderLayouts hinzu
|
||||||
|
frame.add(panel3, BorderLayout.EAST);
|
||||||
|
// Fügt panel4 im Bereich SOUTH des BorderLayouts hinzu
|
||||||
|
frame.add(panel4, BorderLayout.SOUTH);
|
||||||
|
// Fügt panel5 im Bereich CENTER des BorderLayouts hinzu
|
||||||
|
frame.add(panel5, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.FlowLayout;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
public class Flowlayout {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* - Ordent die Komponenten innerhalb eines Containers in einer einzigen Zeile
|
||||||
|
* - Ausrichtung: Die Komponenten können linksbündig (LEFT), zentriert (CENTER), oder rechtsbündig (RIGHT) ausgerichtet werden.
|
||||||
|
* - hier wird auch angezeigt, wie man button auf Panel paltziert
|
||||||
|
* Hinweis: FlowLayout bietet keine Möglichkeit, eine einzelne Komponente manuell zu platzieren.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Erstelle ein JFrame-Fenster
|
||||||
|
JFrame fenster = new JFrame();
|
||||||
|
|
||||||
|
// Beendet das Programm beim Schließen des Fensters
|
||||||
|
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
// Legt die Größe des Fensters auf 500x500 Pixel fest
|
||||||
|
fenster.setSize(500, 500);
|
||||||
|
|
||||||
|
// Setzt das Layout des Fensters auf FlowLayout mit zentrierter Ausrichtung und
|
||||||
|
// Abständen von 10 Pixeln
|
||||||
|
fenster.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
|
||||||
|
|
||||||
|
// Erstelle ein JPanel mit vordefinierter Größe 250x250 Pixel und hellgrauem
|
||||||
|
// Hintergrund
|
||||||
|
JPanel panel1 = new JPanel();
|
||||||
|
panel1.setPreferredSize(new Dimension(250, 250));
|
||||||
|
panel1.setBackground(Color.lightGray);
|
||||||
|
|
||||||
|
// Setzt das Layout von panel1 ebenfalls auf FlowLayout
|
||||||
|
panel1.setLayout(new FlowLayout());
|
||||||
|
|
||||||
|
// Füge dem Panel 9 Buttons hinzu, die in einer Zeile oder mehreren Zeilen
|
||||||
|
// angeordnet werden
|
||||||
|
panel1.add(new JButton("1"));
|
||||||
|
panel1.add(new JButton("2"));
|
||||||
|
panel1.add(new JButton("3"));
|
||||||
|
panel1.add(new JButton("4"));
|
||||||
|
panel1.add(new JButton("5"));
|
||||||
|
panel1.add(new JButton("6"));
|
||||||
|
panel1.add(new JButton("7"));
|
||||||
|
panel1.add(new JButton("8"));
|
||||||
|
panel1.add(new JButton("9"));
|
||||||
|
|
||||||
|
// Füge das Panel dem JFrame hinzu
|
||||||
|
fenster.add(panel1);
|
||||||
|
|
||||||
|
// Macht das Fenster sichtbar
|
||||||
|
fenster.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.FlowLayout;
|
||||||
|
import java.awt.GridLayout;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
public class GridBagLayoutExample {
|
||||||
|
/*- manuell positionien von Elementen
|
||||||
|
* - in viel flexibleres Layout-Manager, bei dem du die Position,
|
||||||
|
* Größe und Ausdehnung (über mehrere Zeilen/Spalten) der einzelnen Komponenten präzise steuern kannst.
|
||||||
|
* - Du kannst einzelne Komponenten unterschiedlich groß machen, sie über mehrere Zellen spannen und Abstände festlegen.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
JFrame frame = new JFrame("GridBagLayout Example");
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.setLayout(null);
|
||||||
|
JButton button1 = new JButton("Button1");
|
||||||
|
frame.add(button1);
|
||||||
|
|
||||||
|
button1.setBounds(0, 0, 120, 30);
|
||||||
|
frame.setSize(800, 800);
|
||||||
|
frame.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.FlowLayout;
|
||||||
|
import java.awt.GridLayout;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
public class Gridlayout {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Erstelle ein JFrame-Fenster
|
||||||
|
JFrame fenster = new JFrame();
|
||||||
|
|
||||||
|
// Beendet das Programm beim Schließen des Fensters
|
||||||
|
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
// Legt die Größe des Fensters auf 500x500 Pixel fest
|
||||||
|
fenster.setSize(500, 500);
|
||||||
|
fenster.setLayout(new GridLayout(4,3,10,4));
|
||||||
|
|
||||||
|
fenster.add(new JButton("1"));
|
||||||
|
fenster.add(new JButton("2"));
|
||||||
|
fenster.add(new JButton("3"));
|
||||||
|
fenster.add(new JButton("4"));
|
||||||
|
fenster.add(new JButton("5"));
|
||||||
|
fenster.add(new JButton("6"));
|
||||||
|
fenster.add(new JButton("7"));
|
||||||
|
fenster.add(new JButton("8"));
|
||||||
|
fenster.add(new JButton("9"));
|
||||||
|
|
||||||
|
fenster.setVisible(true);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
|
public class Jframe {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* - mit der Klasse(JFrame) erzeugen wir ein Fenster
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Erstelle ein Fenster
|
||||||
|
JFrame frame = new JFrame();
|
||||||
|
|
||||||
|
//setVisible(boolean): gibt an, ob mein Fenster sichtbar ist oder nicht
|
||||||
|
frame.setVisible(true);
|
||||||
|
|
||||||
|
//setSize(width, height)
|
||||||
|
frame.setSize(420, 500);
|
||||||
|
|
||||||
|
// setzte einen Überschrift für mein Fenster
|
||||||
|
frame.setTitle("Mein erstes Fenster");
|
||||||
|
|
||||||
|
// Schließe das Fenster richtig zu
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
// Mein Fenster kann ab jetzt nicht mehr vergößert oder verkleinert werden
|
||||||
|
frame.setResizable(false);
|
||||||
|
|
||||||
|
//gib das Fenster eine Farbe
|
||||||
|
frame.getContentPane().setBackground(Color.green);
|
||||||
|
//oder rgb Farbe
|
||||||
|
frame.getContentPane().setBackground(new Color(0,0,100));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Font;
|
||||||
|
|
||||||
|
import javax.swing.BorderFactory;
|
||||||
|
import javax.swing.ImageIcon;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.border.Border;
|
||||||
|
|
||||||
|
// mit Jpanel kann man alle grafischen Bauelemente einsetzen
|
||||||
|
public class Jpanel {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
JPanel panel = new JPanel();
|
||||||
|
panel.setBackground(Color.red);
|
||||||
|
// setze eine Grafisches Bauelement (int x, int y, int width, int height)
|
||||||
|
panel.setBounds(100, 100, 10, 10);
|
||||||
|
|
||||||
|
|
||||||
|
JFrame frame = new JFrame();
|
||||||
|
|
||||||
|
//stellt sicher, dass keine automatische Positionierung und Größenanpassung erhalten
|
||||||
|
frame.setLayout(null);
|
||||||
|
|
||||||
|
// setSize(width, height)
|
||||||
|
frame.setSize(750, 750);
|
||||||
|
|
||||||
|
// setzte einen Überschrift für mein Fenster
|
||||||
|
frame.setTitle("Mein erstes Fenster");
|
||||||
|
|
||||||
|
//setVisible(boolean): gibt an, ob mein Fenster sichtbar ist oder nicht
|
||||||
|
frame.setVisible(true);
|
||||||
|
|
||||||
|
frame.add(panel);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
|
||||||
|
public class KeyBindingsExample extends JFrame {
|
||||||
|
public KeyBindingsExample() {
|
||||||
|
setTitle("KeyBindings Beispiel");
|
||||||
|
setSize(300, 200);
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
// Panel erstellen
|
||||||
|
JPanel panel = new JPanel();
|
||||||
|
add(panel);
|
||||||
|
|
||||||
|
// KeyBinding hinzufügen: 'A' Taste
|
||||||
|
panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("A"), "keyA");
|
||||||
|
panel.getActionMap().put("keyA", new AbstractAction() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
System.out.println("Taste 'A' wurde gedrückt (KeyBindings).");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new KeyBindingsExample();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Font;
|
||||||
|
|
||||||
|
import javax.swing.BorderFactory;
|
||||||
|
import javax.swing.ImageIcon;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.border.Border;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* JLabel = ist ein GUI Anzeiger für hinzufügen von Texten und Bildern
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class Labels {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Erstelle eine Label
|
||||||
|
JLabel label = new JLabel();
|
||||||
|
|
||||||
|
// Erstelle einen Border für das Fenster
|
||||||
|
Border b1 = BorderFactory.createLineBorder(Color.GREEN,5);
|
||||||
|
|
||||||
|
// füge den Text auf dem Fenster hinzu
|
||||||
|
label.setText("Hall Welt");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* - Mit diesen zwei Methode positioniere ich den Text auf dem Bild
|
||||||
|
* 1. setHorizontalTextPosition(JLabel.CENTER); set Text LEFT,CENTER,RIGHT auf dem Bild
|
||||||
|
* 2. label.setVerticalTextPosition(JLabel.TOP);set Text TOP,CENTER, DOWN auf dem Bild
|
||||||
|
* - man kann auch integer Werte eingeben
|
||||||
|
*/
|
||||||
|
label.setHorizontalTextPosition(JLabel.CENTER); // Horozional
|
||||||
|
label.setVerticalTextPosition(JLabel.TOP); // vertikal
|
||||||
|
|
||||||
|
// gib für den Schrifft eine Farbe aus der Klasse Color ein
|
||||||
|
// entweder:
|
||||||
|
label.setForeground(Color.GREEN);
|
||||||
|
// oder:
|
||||||
|
label.setForeground(new Color(0,0,100));
|
||||||
|
|
||||||
|
//gib Schriftart aus der Klasse Font ein
|
||||||
|
label.setFont(new Font("MV Boli",Font.PLAIN,20));
|
||||||
|
|
||||||
|
// verschiebe den Text nach beliebg Position
|
||||||
|
label.setIconTextGap(20);
|
||||||
|
|
||||||
|
// setze eine Farbe für Background
|
||||||
|
label.setBackground(Color.black);
|
||||||
|
label.setOpaque(true);
|
||||||
|
|
||||||
|
//zeige den Border auf dem Fenster
|
||||||
|
label.setBorder(b1);
|
||||||
|
|
||||||
|
|
||||||
|
//füge ein Bild hinzu
|
||||||
|
ImageIcon image = new ImageIcon("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\GUIAnwendungen\\Test.jpg");
|
||||||
|
label.setIcon(image);
|
||||||
|
|
||||||
|
|
||||||
|
// Erstelle ein Fenster
|
||||||
|
JFrame frame = new JFrame();
|
||||||
|
// setSize(width, height)
|
||||||
|
frame.setSize(500, 500);
|
||||||
|
|
||||||
|
// setzte einen Überschrift für mein Fenster
|
||||||
|
frame.setTitle("Mein erstes Fenster");
|
||||||
|
|
||||||
|
//setVisible(boolean): gibt an, ob mein Fenster sichtbar ist oder nicht
|
||||||
|
frame.setVisible(true);
|
||||||
|
|
||||||
|
// zeige den Text auf dem Fenster
|
||||||
|
frame.add(label);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
|
public class ShowMessage {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* - erstellt einfache Dialogfenster (Pop-up-Fenster)
|
||||||
|
* - können verwendet werden, um Nachrichten anzuzeigen, Eingaben vom Benutzer zu erfassen oder den Benutzer vor bestimmten Aktionen zu warnen.
|
||||||
|
* - durch null kann man viele sachen ersetzen:
|
||||||
|
* . Fenster
|
||||||
|
* . Jpanel
|
||||||
|
* . public MeinFenster() {
|
||||||
|
super("Mein Fenster");
|
||||||
|
JOptionPane.showMessageDialog(this, "Beispiel.", "Titel", JOptionPane.WARNING_MESSAGE);
|
||||||
|
|
||||||
|
. etc...
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Erstelle ein JFrame-Fenster mit dem Titel "Mein Fenster"
|
||||||
|
JFrame fenster = new JFrame("Mein Fenster");
|
||||||
|
|
||||||
|
// Zeige eine Fehlermeldung in einem Dialog an, zentriert relativ zu 'fenster'
|
||||||
|
JOptionPane.showMessageDialog(fenster, "Beispiel.", "title", JOptionPane.ERROR_MESSAGE);
|
||||||
|
|
||||||
|
// Zeige eine Informationsmeldung in einem Dialog an, zentriert auf dem Bildschirm
|
||||||
|
JOptionPane.showMessageDialog(null, "Beispiel..", "title", JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
|
||||||
|
// Zeige eine Frage in einem Dialog an, zentriert auf dem Bildschirm
|
||||||
|
JOptionPane.showMessageDialog(null, "Beispiel.", "title", JOptionPane.QUESTION_MESSAGE);
|
||||||
|
|
||||||
|
// Zeige eine Warnung in einem Dialog an, zentriert auf dem Bildschirm
|
||||||
|
JOptionPane.showMessageDialog(null, "Beispiel.", "title", JOptionPane.WARNING_MESSAGE);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Zeige einen Bestätigungsdialog an, um den Benutzer zu fragen,
|
||||||
|
* ob er fortfahren möchte (Ja/Nein/Abbrechen).
|
||||||
|
* Antwort wird in 'antwort' gespeichert.
|
||||||
|
*/
|
||||||
|
int antwort = JOptionPane.showConfirmDialog(null, "Möchten Sie fortfahren?");
|
||||||
|
if (antwort == JOptionPane.YES_OPTION) {
|
||||||
|
// Benutzer hat 'Ja' gewählt
|
||||||
|
System.out.println("Benutzer hat 'Ja' gewählt.");
|
||||||
|
} else if (antwort == JOptionPane.NO_OPTION) {
|
||||||
|
// Benutzer hat 'Nein' gewählt
|
||||||
|
System.out.println("Benutzer hat 'Nein' gewählt.");
|
||||||
|
} else if (antwort == JOptionPane.CANCEL_OPTION) {
|
||||||
|
// Benutzer hat 'Abbrechen' gewählt
|
||||||
|
System.out.println("Benutzer hat 'Cancel' gewählt.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Zeige einen Eingabedialog an, um den Benutzer nach seinem Namen zu fragen
|
||||||
|
String eingabe = JOptionPane.showInputDialog("Geben Sie Ihren Namen ein:");
|
||||||
|
// Gib den eingegebenen Namen in der Konsole aus
|
||||||
|
System.out.println("Benutzername: " + eingabe);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
|
@ -0,0 +1,58 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.FlowLayout;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
|
||||||
|
/*Beschreibung das Problem:
|
||||||
|
* Instanzvariablen sollten verwendet werden, wenn du sicherstellen möchtest, dass Variablen wie JButton und JTextField in der gesamten Klasse (und in actionPerformed) sichtbar sind.
|
||||||
|
Der Konstruktor der Klasse wird verwendet, um die GUI-Komponenten zu initialisieren und das Fenster aufzubauen.
|
||||||
|
Die main-Methode ist static und dient dazu, die Anwendung zu starten, indem sie eine Instanz der Klasse erstellt.
|
||||||
|
Anonyme innere Klassen sind eine praktische Möglichkeit, wenn du einfache Event-Handling-Logik direkt in der main-Methode implementieren möchtest, ohne eine zusätzliche Klasse oder Instanzmethoden zu erstellen.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class TextEingaben extends JFrame implements ActionListener {
|
||||||
|
// Instanzvariablen
|
||||||
|
private JTextField textField;
|
||||||
|
private JButton button1;
|
||||||
|
|
||||||
|
// Konstruktor
|
||||||
|
public TextEingaben() {
|
||||||
|
// Initialisiere das Textfeld und den Button
|
||||||
|
textField = new JTextField();
|
||||||
|
textField.setPreferredSize(new Dimension(240, 40));
|
||||||
|
|
||||||
|
button1 = new JButton("Submit");
|
||||||
|
button1.setPreferredSize(new Dimension(240, 40));
|
||||||
|
button1.addActionListener(this); // `this` verweist auf das aktuelle Objekt der Klasse
|
||||||
|
|
||||||
|
// Setze das Layout und füge die Komponenten hinzu
|
||||||
|
setLayout(new FlowLayout());
|
||||||
|
add(textField);
|
||||||
|
add(button1);
|
||||||
|
|
||||||
|
// Konfiguriere das JFrame
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
setSize(500, 500);
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Die Methode wird aufgerufen, wenn der Button gedrückt wird
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (e.getSource() == button1) {
|
||||||
|
System.out.println("Hallo " + textField.getText());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Erstelle eine Instanz der Klasse, wodurch der Konstruktor aufgerufen wird
|
||||||
|
new TextEingaben();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
package GUIAnwendungen;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Font;
|
||||||
|
|
||||||
|
import javax.swing.BorderFactory;
|
||||||
|
import javax.swing.ImageIcon;
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.border.Border;
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* - ActionListener ist ein (marker)Interface Klasse,
|
||||||
|
* die nur eine abstrakte Methode hat, die mit drücken auf Button reagiert
|
||||||
|
*
|
||||||
|
* Also Das Kochrezept:
|
||||||
|
* 1. Button erstellen: JButton button = new JButton("Text");
|
||||||
|
* 2. ActionListener implementieren: Implementiere ActionListener, um die Funktionalität zu definieren.
|
||||||
|
* 3. ActionListener zum Button hinzufügen:
|
||||||
|
* 3.1 button.addActionListener(new ActionListener() { ... });
|
||||||
|
* 3.2 oder mit separater Methode: button.addActionListener(e -> deineMethode());
|
||||||
|
*/
|
||||||
|
public class jbutton implements ActionListener {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
//1.
|
||||||
|
JButton button = new JButton();
|
||||||
|
// x y width height
|
||||||
|
button.setBounds(100,100,200, 50);
|
||||||
|
button.setText("Click me");
|
||||||
|
button.addActionListener(null);
|
||||||
|
|
||||||
|
// 2. Hinzufügen des ActionListeners zum Button
|
||||||
|
JLabel label = new JLabel();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Position und Größe des Labels eingeben warum?
|
||||||
|
* weil ich frame.setLayout(null); aktiviert habe
|
||||||
|
*/
|
||||||
|
label.setBounds(150, 50, 100, 50);
|
||||||
|
/*
|
||||||
|
* new ActionListener() ist nicht das Erzeugen einer Instanz des Interfaces selbst,
|
||||||
|
* sondern das Erstellen einer Instanz einer anonymen Klasse, die das ActionListener-Interface implementiert.
|
||||||
|
*/
|
||||||
|
button.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
// Dies ist die Aktion, die ausgeführt wird, wenn der Button geklickt wird
|
||||||
|
clicked(label);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Erstelle ein Fenster
|
||||||
|
JFrame frame = new JFrame();
|
||||||
|
|
||||||
|
//stellt sicher, dass keine automatische Positionierung und Größenanpassung erhalten
|
||||||
|
frame.setLayout(null);
|
||||||
|
|
||||||
|
// setSize(width, height)
|
||||||
|
frame.setSize(750, 750);
|
||||||
|
|
||||||
|
// setzte einen Überschrift für mein Fenster
|
||||||
|
frame.setTitle("Mein erstes Fenster");
|
||||||
|
|
||||||
|
//setVisible(boolean): gibt an, ob mein Fenster sichtbar ist oder nicht
|
||||||
|
frame.setVisible(true);
|
||||||
|
frame.add(label);
|
||||||
|
frame.add(button);
|
||||||
|
// andere Möglichkeit, button auf Fenster zu zeigen
|
||||||
|
// frame.add(new JButton("name"))
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void clicked(JLabel label) {
|
||||||
|
label.setText("Hall Welt");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package JunitTest;
|
||||||
|
|
||||||
|
public class Einführung {
|
||||||
|
/*White-Box && Black-Box was ist das?
|
||||||
|
* - Black-Box-Test: Du prüfst nur die Eingaben und Ausgaben, ohne den Code zu sehen oder zu verstehen. Es geht nur darum, ob die Software das Richtige tut.
|
||||||
|
* - White-Box-Test: Du schaust dir den Code genau an und prüfst, ob jede Zeile und jedes Detail korrekt funktioniert. Hier verstehst du den Code und testest ihn gezielt.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public int add(int a, int b) {
|
||||||
|
return a+b;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package JunitTest;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class EinführungTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAdd() {
|
||||||
|
Einführung e1 = new Einführung();
|
||||||
|
assertEquals(4, e1.add(2, 2));
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,82 @@
|
||||||
|
package Linked_List;
|
||||||
|
|
||||||
|
public class ElementList {
|
||||||
|
Node head;
|
||||||
|
|
||||||
|
// ADD Methoden
|
||||||
|
public void addAtIndex(int value, int index) {
|
||||||
|
// Erstelle eine neue Knote
|
||||||
|
Node newNode = new Node();
|
||||||
|
// setze drin einen Wert
|
||||||
|
newNode.value = value;
|
||||||
|
// falls meine Liste leer ist!
|
||||||
|
if (head == null) {
|
||||||
|
head = newNode;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (index == 0) {
|
||||||
|
newNode.next = head;
|
||||||
|
head = newNode;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Node temp = head;
|
||||||
|
for (int i = 0; i < index - 1 && temp.next != null ; i++)
|
||||||
|
temp = temp.next;
|
||||||
|
|
||||||
|
newNode.next = temp.next;
|
||||||
|
temp.next = newNode;
|
||||||
|
}
|
||||||
|
public void addLast(int value) {
|
||||||
|
// Erstelle eine neue Knote
|
||||||
|
Node newNode = new Node();
|
||||||
|
// setze drin einen Wert
|
||||||
|
newNode.value = value;
|
||||||
|
// falls meine Liste leer ist!
|
||||||
|
if (head == null) {
|
||||||
|
head = newNode;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// falls nicht!
|
||||||
|
Node temp = head;
|
||||||
|
while (temp.next != null)
|
||||||
|
temp = temp.next;
|
||||||
|
|
||||||
|
temp.next = newNode;
|
||||||
|
}
|
||||||
|
public void addFirst(int value) {
|
||||||
|
// Erstelle eine neue Knote
|
||||||
|
Node newNode = new Node();
|
||||||
|
// setze drin einen Wert
|
||||||
|
newNode.value = value;
|
||||||
|
|
||||||
|
if (head == null)
|
||||||
|
head = newNode;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* newNode.next = null, aber ist jetzt nicht mehr null,
|
||||||
|
* weil es jetzt gleich head;
|
||||||
|
*/
|
||||||
|
newNode.next = head;
|
||||||
|
head = newNode;
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
public void printList() {
|
||||||
|
if (head == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Node temp =head;
|
||||||
|
System.out.print("[");
|
||||||
|
while(temp != null) {
|
||||||
|
System.out.print(temp.value + " ");
|
||||||
|
temp = temp.next;
|
||||||
|
}
|
||||||
|
System.out.print("]");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package Linked_List;
|
||||||
|
|
||||||
|
public class Node {
|
||||||
|
int value;
|
||||||
|
Node next;
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package Linked_List;
|
||||||
|
|
||||||
|
public class Test {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
ElementList e1 = new ElementList();
|
||||||
|
e1.addLast(1);
|
||||||
|
e1.addLast(2);
|
||||||
|
e1.addLast(3);
|
||||||
|
e1.addLast(5);
|
||||||
|
e1.addAtIndex(10,2);
|
||||||
|
e1.printList();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
|
@ -0,0 +1,91 @@
|
||||||
|
package MVC_Desighn;
|
||||||
|
|
||||||
|
// Modell, oder domain
|
||||||
|
public class Person_Daten {
|
||||||
|
private String name;
|
||||||
|
private int alter;
|
||||||
|
|
||||||
|
public Person_Daten(String name, int alter) {
|
||||||
|
this.name = name;
|
||||||
|
setAlter(alter);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
public int getAlter() {
|
||||||
|
return alter;
|
||||||
|
}
|
||||||
|
public void setAlter(int alter) {
|
||||||
|
if (alter > 18)
|
||||||
|
this.alter = alter;
|
||||||
|
else
|
||||||
|
System.out.println("Sie sind sehr jung");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Person_Daten [name=" + name + ", alter=" + alter + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
Person_Daten p1 = new Person_Daten("obai" , 22);
|
||||||
|
GUI_DatenView v1 = new GUI_DatenView();
|
||||||
|
|
||||||
|
Controller_DatenPerson c1 = new Controller_DatenPerson(p1,v1);
|
||||||
|
|
||||||
|
c1.updateView();
|
||||||
|
c1.setPersonName("omar");
|
||||||
|
c1.updateView();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//View oder GUI
|
||||||
|
class GUI_DatenView {
|
||||||
|
|
||||||
|
public void printDatenPerson(String name, int alter) {
|
||||||
|
System.out.println("GUI_DatenView [name=" + name + ", alter=" + alter + "]");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Controller
|
||||||
|
class Controller_DatenPerson{
|
||||||
|
Person_Daten modell;
|
||||||
|
GUI_DatenView view;
|
||||||
|
|
||||||
|
public Controller_DatenPerson(Person_Daten modell, GUI_DatenView view) {
|
||||||
|
this.modell = modell;
|
||||||
|
this.view = view;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPersonName() {
|
||||||
|
return this.modell.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPersonName(String name) {
|
||||||
|
modell.setName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPersonAlter() {
|
||||||
|
return this.modell.getAlter();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateView() {
|
||||||
|
|
||||||
|
view.printDatenPerson(modell.getName(),modell.getAlter());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,156 @@
|
||||||
|
package MVC_Desighn;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
|
||||||
|
// modell
|
||||||
|
class Person {
|
||||||
|
private String name;
|
||||||
|
private int age;
|
||||||
|
|
||||||
|
// Konstruktor
|
||||||
|
public Person(String name, int age) throws IllegalArgumentException {
|
||||||
|
this.setName(name);
|
||||||
|
this.setAge(age);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getter für Name
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setter für Name
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getter für Alter
|
||||||
|
public int getAge() {
|
||||||
|
return age;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setter für Alter
|
||||||
|
public void setAge(int age) throws IllegalArgumentException {
|
||||||
|
if (age <= 18) {
|
||||||
|
throw new IllegalArgumentException("Das Alter muss größer als 18 sein.");
|
||||||
|
}
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//view
|
||||||
|
public class Person_GUI {
|
||||||
|
private JFrame frame;
|
||||||
|
private JTextField nameTextField;
|
||||||
|
private JButton updateButton;
|
||||||
|
private JLabel nameLabel;
|
||||||
|
private JLabel ageLabel;
|
||||||
|
|
||||||
|
public Person_GUI() {
|
||||||
|
// Setup des Frames
|
||||||
|
frame = new JFrame("Person Details");
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.setSize(300, 200);
|
||||||
|
frame.setLayout(null);
|
||||||
|
|
||||||
|
// Name Label
|
||||||
|
nameLabel = new JLabel("Name:");
|
||||||
|
nameLabel.setBounds(10, 20, 80, 25);
|
||||||
|
frame.add(nameLabel);
|
||||||
|
|
||||||
|
// Age Label
|
||||||
|
ageLabel = new JLabel("Alter:");
|
||||||
|
ageLabel.setBounds(10, 50, 80, 25);
|
||||||
|
frame.add(ageLabel);
|
||||||
|
|
||||||
|
// Name Textfeld
|
||||||
|
nameTextField = new JTextField(20);
|
||||||
|
nameTextField.setBounds(100, 20, 165, 25);
|
||||||
|
frame.add(nameTextField);
|
||||||
|
|
||||||
|
// Update Button
|
||||||
|
updateButton = new JButton("Name ändern");
|
||||||
|
updateButton.setBounds(100, 80, 165, 25);
|
||||||
|
frame.add(updateButton);
|
||||||
|
|
||||||
|
// Frame sichtbar machen
|
||||||
|
frame.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNameInput() {
|
||||||
|
return nameTextField.getText();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPersonDetails(String name, int age) {
|
||||||
|
nameLabel.setText("Name: " + name);
|
||||||
|
ageLabel.setText("Alter: " + age);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addUpdateButtonListener(ActionListener listener) {
|
||||||
|
updateButton.addActionListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Erstellen des Modells
|
||||||
|
Person model = new Person("Max Mustermann", 20);
|
||||||
|
|
||||||
|
// Erstellen der Ansicht
|
||||||
|
Person_GUI view = new MVC_Desighn.Person_GUI();
|
||||||
|
|
||||||
|
// Erstellen des Controllers
|
||||||
|
PersonController controller = new PersonController(model, view);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class PersonController {
|
||||||
|
private Person model;
|
||||||
|
private Person_GUI view;
|
||||||
|
|
||||||
|
public PersonController(Person model, Person_GUI view) {
|
||||||
|
this.model = model;
|
||||||
|
this.view = view;
|
||||||
|
|
||||||
|
// Initialisieren der View mit den aktuellen Modelldaten
|
||||||
|
this.view.setPersonDetails(model.getName(), model.getAge());
|
||||||
|
|
||||||
|
// Hinzufügen eines ActionListeners zum Button
|
||||||
|
this.view.addUpdateButtonListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
String newName = view.getNameInput();
|
||||||
|
setPersonName(newName);
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPersonName(String name) {
|
||||||
|
model.setName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPersonName() {
|
||||||
|
return model.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPersonAge(int age) {
|
||||||
|
model.setAge(age);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPersonAge() {
|
||||||
|
return model.getAge();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateView() {
|
||||||
|
view.setPersonDetails(model.getName(), model.getAge());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package Teste;
|
||||||
|
|
||||||
|
public class kopieArray {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
/*
|
||||||
|
* das ein falsches Verfahren, um ein Array in einem anderen Array
|
||||||
|
* zu koopieren, in dem Fall kopieArray ist ein RefrenzVariable, die auf das selbe Array zeigt
|
||||||
|
* also wir haben nur ein Array und auf diese Array zeigen zwei RefrenzVariable
|
||||||
|
*/
|
||||||
|
int[] orgArray = {1,2,3,4,5};
|
||||||
|
int[] kopieArray = orgArray;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Richtige Kopie von Array
|
||||||
|
*/
|
||||||
|
int[] richtigeKopieArray = new int[orgArray.length];
|
||||||
|
for (int i = 0; i <orgArray.length; i++)
|
||||||
|
richtigeKopieArray[i] = orgArray[i];
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
module Programmierung2 {
|
||||||
|
requires java.desktop;
|
||||||
|
requires org.junit.jupiter.api;
|
||||||
|
requires junit;
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
package oop.Abstraction;
|
||||||
|
|
||||||
|
public abstract class Abstraction {
|
||||||
|
|
||||||
|
/*Was ist abstraction:Das Verbergen der internen Implementierung der (Methode, Funktion)
|
||||||
|
* und das Zeigen nur der Funktionalität für die Benutzer.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* wie errecihen wir die Abstraktion?
|
||||||
|
*
|
||||||
|
* 1. Abstract Class => not fully Abstraction
|
||||||
|
* 2. Interface => fully Abstraction
|
||||||
|
*
|
||||||
|
* -----------------------------------------
|
||||||
|
*
|
||||||
|
* Die abstrakte Klasse:
|
||||||
|
*
|
||||||
|
* Deklaration als abstract: Eine abstrakte Klasse muss mit dem Schlüsselwort abstract deklariert werden
|
||||||
|
* abstrakte Klassen in Java müssen vererbt werden, damit ihre abstrakten Methoden implementiert werden können
|
||||||
|
* Da abstrakte Klassen nicht instanziiert werden können (man kann also keine Objekte direkt von ihnen erstellen)
|
||||||
|
* Die Abstrakte klasse kann eine Abstrakte methode haben aber soll nicht
|
||||||
|
* Die Abstrakte klasse können final methods haben
|
||||||
|
* Die Abstrakte klasse können constructors und static methods haben
|
||||||
|
* Setter und getter sind gültig
|
||||||
|
*
|
||||||
|
* - Die Unterklasse:
|
||||||
|
* die nicht abstrakte Unterklassen muss alle abstrakte methoden implementieren!
|
||||||
|
* die abstrakte Unterklassen muss nicht alle abstrakte methoden implementieren!
|
||||||
|
*----------------------------------------
|
||||||
|
*
|
||||||
|
*Die abstrakte Methode:
|
||||||
|
*warum Abstrakte Methods? damit jede Unterklasse diese Methoden implementiert
|
||||||
|
*wenn wir eine abstrakte Methode erzeugen, soll ihre Klasse auch Abstrakt sein.
|
||||||
|
*Abstrakte Methoden können von der abstrakten Klasse nicht implemntiert werden.
|
||||||
|
*Abstrakte Methoden können nur von Unterklassen mit @Override implementiert werden.
|
||||||
|
*Abstrakte Methoden können ohne und mit Rückabe wert sein.
|
||||||
|
*Statiche und private Methodes können nicht abstrakt sein warum?
|
||||||
|
*weil satatic und private gehören nur der Klasse
|
||||||
|
*/
|
||||||
|
|
||||||
|
protected abstract void fahre();
|
||||||
|
public abstract int count();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package oop.Abstraction;
|
||||||
|
|
||||||
|
public abstract class Auto {
|
||||||
|
|
||||||
|
double höhe;
|
||||||
|
double gewicht;
|
||||||
|
int anzahlDerRäder;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Auto(double höhe, double gewicht, int anzahlDerRäder) {
|
||||||
|
this.höhe = höhe;
|
||||||
|
this.gewicht = gewicht;
|
||||||
|
this.anzahlDerRäder = anzahlDerRäder;
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract void autopilot(); // automatischen Fahren
|
||||||
|
|
||||||
|
abstract void streamingService();
|
||||||
|
|
||||||
|
abstract void parkingSensors();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package oop.Abstraction;
|
||||||
|
|
||||||
|
|
||||||
|
public class Auto2 {
|
||||||
|
|
||||||
|
class Test{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface Test2{
|
||||||
|
int berechne(int a, int b);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package oop.Abstraction;
|
||||||
|
|
||||||
|
public class Hatchback extends Auto {
|
||||||
|
|
||||||
|
|
||||||
|
public Hatchback(double höhe, double gewicht, int anzahlDerRäder) {
|
||||||
|
super(höhe, gewicht, anzahlDerRäder);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void autopilot() {
|
||||||
|
System.out.println(" Hatchback : autopilot");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void streamingService() {
|
||||||
|
System.out.println("Hatchback : streamingService");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void parkingSensors() {
|
||||||
|
System.out.println(" Hatchback : parkingSensors");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package oop.Abstraction;
|
||||||
|
|
||||||
|
public class MarkerInterface {
|
||||||
|
// Keine Methoden oder Konstanten
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package oop.Abstraction;
|
||||||
|
|
||||||
|
public interface NestedInterface {
|
||||||
|
void test();
|
||||||
|
|
||||||
|
interface InnerInterface {
|
||||||
|
default void test2() {
|
||||||
|
|
||||||
|
System.out.print("Innerinterface");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package oop.Abstraction;
|
||||||
|
|
||||||
|
public class SUV extends Auto {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public SUV(double höhe, double gewicht, int anzahlDerRäder) {
|
||||||
|
super(höhe, gewicht, anzahlDerRäder);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void autopilot() {
|
||||||
|
System.out.println(" SUV : autopilot");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void streamingService() {
|
||||||
|
System.out.println(" SUV : streamingService");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void parkingSensors() {
|
||||||
|
System.out.println("SUV : parkingSensors");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
package oop.Abstraction;
|
||||||
|
|
||||||
|
public class Test {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Auto SUV1 = new Auto(); Verboten da die Auto Klasse Abstrakt ist!
|
||||||
|
// Auto SUV1 = new SUV(); das ist gültig
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package oop.AnonymousInnerClass;
|
||||||
|
|
||||||
|
public class AnonymousInnerClass {
|
||||||
|
/*
|
||||||
|
* - ist ohne Name definiert und werden direkt in der Instanziierung (manin Methode) erstellt.
|
||||||
|
* - Verwendung: Sie werden verwendet,um Schnittstellen oder abstrakte Klassen zu implementieren
|
||||||
|
* und deren Methoden zu überschreiben, ohne eine separate, benannte Klasse zu erstellen.
|
||||||
|
* - kann entweder extends klasse oder implements interface aber (nicht beids gleichzeitig)
|
||||||
|
* - ist für methoden und Konstruktoren
|
||||||
|
* - Anonymous Inner Class können kein Konstruktoren haben, weil sie ohne Name sind!
|
||||||
|
* - Anonymous kann mehreren Methoden überschreiben
|
||||||
|
* - können über definiert werden, wo Klasseninstanzen benötigt werden
|
||||||
|
* - die Methoden und die Variablen innerhalb der Anonymous sind nur innerhalb Anonymous sichtbar
|
||||||
|
* oder ich muss z.b anstatt (Konstruktor test = new Konstruktor()) => var test = new Konstruktor()
|
||||||
|
* das ermöglicht mir die methoden und die Variable die in Anonymous in außen zu verweden
|
||||||
|
* - anonyme innere Klassen können verschachtelt werden also in anonyme ein anonyme
|
||||||
|
* - können keine statischen Variablen oder Methoden haben, das sie keinen Name haben
|
||||||
|
* - Private Elemente sind erlaubt aber sind nur innerhalb der anonyme innere Klassen sichtbar
|
||||||
|
*
|
||||||
|
* Warum benötigen wir sowas?
|
||||||
|
* für Einmalige Verwendung: Sie sind ideal für einmalige Implementierungen,
|
||||||
|
* wie z.B. Event-Handler, Callbacks oder Threads.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package oop.AnonymousInnerClass;
|
||||||
|
|
||||||
|
public class Interface {
|
||||||
|
|
||||||
|
public interface Showable{
|
||||||
|
|
||||||
|
void print();
|
||||||
|
}
|
||||||
|
|
||||||
|
// methode übernimmt ein Interface
|
||||||
|
static void display(Showable s) {
|
||||||
|
|
||||||
|
s.print();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main (String[] args) {
|
||||||
|
// Anonymous Inner Class mit methode
|
||||||
|
display(new Showable() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void print() {
|
||||||
|
System.out.print("von der Methode");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Anonymous Inner Class mit interface
|
||||||
|
Showable showable = new Showable() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void print() {
|
||||||
|
|
||||||
|
System.out.println("Hallo welt");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
showable.print();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
package oop.AnonymousInnerClass;
|
||||||
|
|
||||||
|
public class Konstruktor {
|
||||||
|
|
||||||
|
public Konstruktor() {
|
||||||
|
System.out.println("das ist Konstruktor");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Methode enthält Anonymous Inner Class
|
||||||
|
public static void main() {
|
||||||
|
new Konstruktor() {
|
||||||
|
|
||||||
|
public static void print() {
|
||||||
|
System.out.println("main methode");
|
||||||
|
}
|
||||||
|
|
||||||
|
int x = 5;
|
||||||
|
@Override
|
||||||
|
public void testMethod() {
|
||||||
|
|
||||||
|
System.out.println("main methode");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMethod() {
|
||||||
|
|
||||||
|
System.out.println("Das ist in der klasse");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int x = 2;
|
||||||
|
|
||||||
|
public static void main(String[] str) {
|
||||||
|
|
||||||
|
// Konstruktor wird aufgerufen und aussgegeben
|
||||||
|
Konstruktor test = new Konstruktor() {
|
||||||
|
|
||||||
|
public void print() {
|
||||||
|
System.out.println("extra methode");
|
||||||
|
//x = 3; Änderung ist verboten
|
||||||
|
}
|
||||||
|
|
||||||
|
int x = 5;
|
||||||
|
@Override
|
||||||
|
public void testMethod() {
|
||||||
|
|
||||||
|
System.out.println("Das ist in der main" + x);
|
||||||
|
print();// innere Methode
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
test.testMethod();
|
||||||
|
|
||||||
|
// Konstruktor wird aufgerufen und aussgegeben
|
||||||
|
var test2 = new Konstruktor() {
|
||||||
|
|
||||||
|
public static void print() {
|
||||||
|
System.out.println("extra methode");
|
||||||
|
}
|
||||||
|
|
||||||
|
int x = 5;
|
||||||
|
@Override
|
||||||
|
public void testMethod() {
|
||||||
|
|
||||||
|
System.out.println("Das ist in der main" + x);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
// aufruf der innere methode
|
||||||
|
//test2.print();
|
||||||
|
test2.main();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package oop.AnonymousInnerClass;
|
||||||
|
|
||||||
|
public class RewardClass {
|
||||||
|
public void rewardMethode() {
|
||||||
|
|
||||||
|
System.out.println("Deine Belohnung ist 10€.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package oop.AnonymousInnerClass;
|
||||||
|
|
||||||
|
public class Test {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
RewardClass mietarebiter1 = new RewardClass();
|
||||||
|
RewardClass mietarebiter2 = new RewardClass();
|
||||||
|
RewardClass mietarebiter3 = new RewardClass()
|
||||||
|
// Anonymous Inner Class
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void rewardMethode() {
|
||||||
|
|
||||||
|
System.out.println("Deine Belohnung ist 20€.");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mietarebiter1.rewardMethode();//Belohnung ist 10€
|
||||||
|
mietarebiter2.rewardMethode();//Belohnung ist 10€
|
||||||
|
|
||||||
|
mietarebiter3.rewardMethode();//Belohnung ist 20€
|
||||||
|
|
||||||
|
/* wenn ich für den dritten mietarebiter3 20€ statt 10€ geben möchte!
|
||||||
|
* dann habe ich 2 möglichkeiten
|
||||||
|
*
|
||||||
|
* 1. erben: ich kann eine Klasse erstellen die meine (RewardClass) erbt
|
||||||
|
* und ihre Methode mit 20€ überschreibt!
|
||||||
|
*
|
||||||
|
* 2.Anonymous Inner Class
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
package oop.Aufgaben;
|
||||||
|
|
||||||
|
public class BankKonto {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private double amount;
|
||||||
|
private int kontoNummer;
|
||||||
|
private static int counter = 1;
|
||||||
|
|
||||||
|
public BankKonto() {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public BankKonto( String name,double amount) {
|
||||||
|
this.kontoNummer = counter;
|
||||||
|
this.name = name;
|
||||||
|
this.amount = amount;
|
||||||
|
counter++;
|
||||||
|
bounus();
|
||||||
|
willkommen(this.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void willkommen(String n) {
|
||||||
|
|
||||||
|
BankKonto b1 = new BankKonto();
|
||||||
|
b1.name = n;
|
||||||
|
System.out.println("Willkommen: " + b1.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public double bounus() {
|
||||||
|
|
||||||
|
|
||||||
|
return this.amount += 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void einzahlung(double wert) {
|
||||||
|
|
||||||
|
this.amount += wert;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void auszahlung(double wert) {
|
||||||
|
|
||||||
|
if (wert <= this.amount)
|
||||||
|
this.amount -= wert;
|
||||||
|
else
|
||||||
|
System.out.println("Das Geld reicht nicht aus!");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkKonto() {
|
||||||
|
|
||||||
|
System.out.println("Ihre Stand ist: " + this.amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
|
||||||
|
return "Kontoname = " + this.name + " nummer = " + kontoNummer + " Satand = " + this.amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
package oop.Aufgaben;
|
||||||
|
|
||||||
|
public class Kreis {
|
||||||
|
|
||||||
|
private double radius;
|
||||||
|
private String color;
|
||||||
|
|
||||||
|
|
||||||
|
// Konstruktor mit zwei Parametern
|
||||||
|
public Kreis(double radius, String color) {
|
||||||
|
this.radius = radius;
|
||||||
|
this.color = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Konstruktor mit einem Parameter (radius), Standardfarbe wird zugewiesen
|
||||||
|
public Kreis(double radius) {
|
||||||
|
this.radius = radius; // Standardfarbe ist "weiß"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setRadius(double radius) {
|
||||||
|
|
||||||
|
this.radius =radius ;//this (unterscheidet zwishcne Parameter und Attribute)
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getRadius() {
|
||||||
|
|
||||||
|
return radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColor(String color) {
|
||||||
|
|
||||||
|
this.color = color; // this (unterscheidet zwishcne Parameter und Attribute)
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getColor() {
|
||||||
|
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public double getFlaeche() {
|
||||||
|
|
||||||
|
return radius * radius * Math.PI;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getUmfang() {
|
||||||
|
|
||||||
|
return 2 * radius * Math.PI;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
|
||||||
|
return "Kreis:" + getFlaeche() + " " + getUmfang() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package oop.Aufgaben;
|
||||||
|
|
||||||
|
public class Mitarbeiter {
|
||||||
|
|
||||||
|
|
||||||
|
private static int id = 0;
|
||||||
|
protected int idMitarbeiter;
|
||||||
|
protected String name;
|
||||||
|
|
||||||
|
|
||||||
|
public Mitarbeiter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Mitarbeiter(String name) {
|
||||||
|
this.idMitarbeiter = ++id;
|
||||||
|
this.name = name;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
|
||||||
|
return "ID: " + id + " Name: " + this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package oop.Aufgaben;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class Personalverwaltung {
|
||||||
|
|
||||||
|
ArrayList<Mitarbeiter> mitarbeiterliste = new ArrayList<Mitarbeiter>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void add(Mitarbeiter mitarbeiter) {
|
||||||
|
|
||||||
|
mitarbeiterliste.add(mitarbeiter);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void remove(Mitarbeiter mitarbeiter) {
|
||||||
|
|
||||||
|
mitarbeiterliste.remove(mitarbeiter);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void listMitarbeiter(){
|
||||||
|
|
||||||
|
for (Mitarbeiter mitarbeiter : mitarbeiterliste) {
|
||||||
|
System.out.println(mitarbeiter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package oop.Einführung;
|
||||||
|
|
||||||
|
public class Einführung {
|
||||||
|
|
||||||
|
String name;
|
||||||
|
int maxSpeed;
|
||||||
|
double price;
|
||||||
|
int model;
|
||||||
|
|
||||||
|
|
||||||
|
void setName(String n) {
|
||||||
|
name = n;
|
||||||
|
}
|
||||||
|
|
||||||
|
String getName() {
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setModel(int mod) {
|
||||||
|
if (mod >= 2016)
|
||||||
|
model = mod;
|
||||||
|
else
|
||||||
|
System.out.println("Nei geht nicht!");
|
||||||
|
}
|
||||||
|
|
||||||
|
int getModel() {
|
||||||
|
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
package oop.Enumeration;
|
||||||
|
import java.util.EnumSet;
|
||||||
|
|
||||||
|
public enum EnumMethods {
|
||||||
|
MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG, FREITAG, SAMSTAG, SONNTAG;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// gibt mir die Index meiner Konstante zurück
|
||||||
|
System.out.println(EnumMethods.DIENSTAG.ordinal());
|
||||||
|
|
||||||
|
//vergleicht zwei enum-Konstanten basierend auf ihrer Reihenfolge
|
||||||
|
System.out.println(EnumMethods.DIENSTAG.compareTo(EnumMethods.DONNERSTAG));
|
||||||
|
|
||||||
|
// gibt true oder false zurück
|
||||||
|
System.out.println(EnumMethods.DIENSTAG.toString() == "DIENSTAG");
|
||||||
|
|
||||||
|
// gibt true oder false zurück
|
||||||
|
System.out.println(EnumMethods.DIENSTAG.name() == "DIENSTAG");
|
||||||
|
|
||||||
|
// gibt der Name der Kosntant zurück
|
||||||
|
System.out.println(EnumMethods.valueOf("DONNERSTAG"));
|
||||||
|
|
||||||
|
// gibt mir alle Konstante zurück
|
||||||
|
for (EnumMethods test: EnumMethods.values()) {
|
||||||
|
System.out.print(test + " ");
|
||||||
|
if (test == EnumMethods.DIENSTAG)
|
||||||
|
System.out.print(EnumMethods.values() + " ");
|
||||||
|
}
|
||||||
|
System.out.println(EnumMethods.values()[0] + "Einzelene Konstant");
|
||||||
|
|
||||||
|
System.out.println();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enumset::
|
||||||
|
*/
|
||||||
|
|
||||||
|
// gibt alle Werte die enums aus
|
||||||
|
EnumSet<EnumMethods> days = EnumSet.allOf(EnumMethods.class);
|
||||||
|
System.out.println(days);
|
||||||
|
|
||||||
|
// gibt nur Werte ,die ich eingebe
|
||||||
|
EnumSet<EnumMethods> day = EnumSet.of(EnumMethods.DIENSTAG, EnumMethods.FREITAG);
|
||||||
|
System.out.println(day);
|
||||||
|
|
||||||
|
// gibt nur einmal Diesntag aus!
|
||||||
|
EnumSet<EnumMethods> day1 = EnumSet.of(EnumMethods.DIENSTAG, EnumMethods.DIENSTAG);
|
||||||
|
System.out.println(day);
|
||||||
|
|
||||||
|
// gibt mir von Konstante to Kosntnate zurück!
|
||||||
|
EnumSet<EnumMethods> range = EnumSet.range(EnumMethods.DIENSTAG, EnumMethods.FREITAG);
|
||||||
|
System.out.println(range);
|
||||||
|
|
||||||
|
|
||||||
|
EnumSet<EnumMethods> noneOf = EnumSet.noneOf(EnumMethods.class);
|
||||||
|
noneOf.add(DIENSTAG);
|
||||||
|
noneOf.addAll(noneOf);
|
||||||
|
noneOf.remove(DIENSTAG);
|
||||||
|
noneOf.removeAll(noneOf);
|
||||||
|
System.out.println(noneOf);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package oop.Enumeration;
|
||||||
|
|
||||||
|
public class Enumeration {
|
||||||
|
|
||||||
|
/*Enum was ist?
|
||||||
|
* - repräsentiert eine Gruppe von Konstanten
|
||||||
|
* ,die public, static und final sind und die immer großegeschrieben werden sollen
|
||||||
|
* - Deklariert mit dem Schlüsselwort enum z.b(public enum klassenname)
|
||||||
|
* - Jede Konstante wird durch Kommas getrennt und am Ende optional mit einem Semikolon abgeschlossen.
|
||||||
|
* - kann als Datentyp verwendet werden
|
||||||
|
* - Kann in switch-Anweisungen verwendet werden.
|
||||||
|
* - kann Felder, Konstruktoren (ohne public) und Methoden enthalten.
|
||||||
|
* - Konstruktoren sind immer privat oder paketprivat (d.h. sie können nicht public sein)
|
||||||
|
* ,die Dienen zur Initialisierung der Felder.
|
||||||
|
* - Enums können abstrakte Methoden enthalten, aber es sollen alle Kosntanten sie implementieren (siehe Wochentage class).
|
||||||
|
* - Enums können Interfaces implementieren.
|
||||||
|
* - Enums können eigene Methoden und Überschreibungen von toString(), equals(), hashCode(), etc. enthalten.
|
||||||
|
* - Enums können keine anderen Klassen erweitern und auch nicht von anderen Klassen erben
|
||||||
|
* - Enums können interface implementieren
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package oop.Enumeration;
|
||||||
|
|
||||||
|
public enum Numbers{
|
||||||
|
|
||||||
|
ONE,TWO,THREE; // Semikolon ist optional
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ONE TOW THREE sind Objekte in die unten stehenden Klassen
|
||||||
|
* Konstante ONE wir präsentiert durch:
|
||||||
|
* Class Numbers{
|
||||||
|
* public static final Numbers ONE = new Numbers();
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* und TWO auch so..
|
||||||
|
* Class Numbers{
|
||||||
|
* public static final Numbers TWO = new Numbers();
|
||||||
|
* }
|
||||||
|
* und THREE auch so..
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
public void print() {
|
||||||
|
|
||||||
|
System.out.println("dasd");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package oop.Enumeration;
|
||||||
|
|
||||||
|
public class Order {
|
||||||
|
|
||||||
|
public enum OrderStatus{
|
||||||
|
|
||||||
|
PENDING,
|
||||||
|
PREPARING,
|
||||||
|
COMPLETED,
|
||||||
|
DELIVERING,
|
||||||
|
CANCELED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Attribute mit enum Objekt
|
||||||
|
private OrderStatus status;
|
||||||
|
|
||||||
|
public boolean check() {
|
||||||
|
|
||||||
|
if (getStatus() == status.COMPLETED)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrderStatus getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(OrderStatus status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package oop.Enumeration;
|
||||||
|
|
||||||
|
public class OrderTest {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
//ordinal globale methode gibt mir die Index meiner enum Konstanten
|
||||||
|
System.out.println(Order.OrderStatus.CANCELED.ordinal());
|
||||||
|
|
||||||
|
Order order1 = new Order();
|
||||||
|
order1.setStatus(Order.OrderStatus.DELIVERING);
|
||||||
|
System.out.println(order1.check());
|
||||||
|
// z.b für Tracking der bestellung
|
||||||
|
System.out.print(order1.getStatus());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package oop.Enumeration;
|
||||||
|
|
||||||
|
public class Test {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Numbers val1 = new Numbers(); verboten da enum Konstruktoren private ist
|
||||||
|
// und ONE automatisch static ist
|
||||||
|
Numbers val1 = Numbers.ONE; // TWO ist ein Objekt
|
||||||
|
|
||||||
|
switch (val1) {
|
||||||
|
|
||||||
|
case ONE: System.out.println("1");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TWO: System.out.println("2");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case THREE: System.out.println("3");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
val1.print();
|
||||||
|
|
||||||
|
System.out.println(Wochentage.MONTAG.getStatus());
|
||||||
|
Wochentage.MONTAG.testmethode();
|
||||||
|
System.out.println(Wochentage.DIENSTAG.getStatus());
|
||||||
|
Wochentage.DIENSTAG.testmethode();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package oop.Enumeration;
|
||||||
|
|
||||||
|
public enum Wochentage {// erbt von abstract class (enum)
|
||||||
|
// wenn eine Konstante einen Konstruktor hat, dann sollen Alle Konstaten sollen einen Konstruktor haben
|
||||||
|
/*
|
||||||
|
* MONTAG("Arbeitstag"),
|
||||||
|
* DIENSTAG("Arbeitstag");
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Alle Konstanten sollen die abstrakte Methoden implementieren
|
||||||
|
MONTAG ("Konstruktor: Montag") {
|
||||||
|
@Override
|
||||||
|
public void testmethode() {
|
||||||
|
System.out.println("Montag");
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
DIENSTAG ("Konstruktor: Diesnstag"){
|
||||||
|
@Override
|
||||||
|
public void testmethode() {
|
||||||
|
System.out.println("Diesnstag");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
String status;
|
||||||
|
|
||||||
|
Wochentage(String status){
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(String status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void testmethode();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 270 KiB |
Binary file not shown.
After Width: | Height: | Size: 305 KiB |
|
@ -0,0 +1,78 @@
|
||||||
|
package oop.ExceptionHandling;
|
||||||
|
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class CheckedException {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
readFile("D:\\Test.txt");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void readFile(String filePath) {
|
||||||
|
FileReader reader = null;
|
||||||
|
// hier der Compiler zeigt mir eine Error und zwingt micht eine try-catch Block zu erstellen
|
||||||
|
try {
|
||||||
|
reader = new FileReader(filePath);// resource
|
||||||
|
System.out.println("File Inhalt: ");
|
||||||
|
|
||||||
|
int r = 0;
|
||||||
|
while((r = reader.read()) != -1) {
|
||||||
|
System.out.print((char) r);
|
||||||
|
}
|
||||||
|
}catch(FileNotFoundException e) {
|
||||||
|
|
||||||
|
System.out.println(e);
|
||||||
|
|
||||||
|
}catch(IOException e) {
|
||||||
|
System.out.println(e);
|
||||||
|
}finally {
|
||||||
|
try {
|
||||||
|
reader.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// try() mit resources, hier benötigt man finally block nicht
|
||||||
|
static void readFile2(String filePath) {
|
||||||
|
try (FileReader reader = new FileReader(filePath);) {
|
||||||
|
System.out.println("File Inhalt: ");
|
||||||
|
|
||||||
|
int r = 0;
|
||||||
|
while((r = reader.read()) != -1) {
|
||||||
|
System.out.print((char) r);
|
||||||
|
}
|
||||||
|
}catch(FileNotFoundException e) {
|
||||||
|
|
||||||
|
System.out.println(e);
|
||||||
|
|
||||||
|
}catch(IOException e) {
|
||||||
|
System.out.println(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// try() mit mehrere resources, hier benötigt man auch finally block nicht
|
||||||
|
static void readFile3(String filePath) {
|
||||||
|
try (FileReader reader = new FileReader(filePath); FileReader reader2 = new FileReader(filePath)) {
|
||||||
|
System.out.println("File Inhalt: ");
|
||||||
|
|
||||||
|
int r = 0;
|
||||||
|
while((r = reader.read()) != -1) {
|
||||||
|
System.out.print((char) r);
|
||||||
|
}
|
||||||
|
}catch(FileNotFoundException e) {
|
||||||
|
|
||||||
|
System.out.println(e);
|
||||||
|
|
||||||
|
}catch(IOException e) {
|
||||||
|
System.out.println(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,102 @@
|
||||||
|
package oop.ExceptionHandling;
|
||||||
|
|
||||||
|
public class ExceptionHandling {
|
||||||
|
|
||||||
|
/*Was ist das?
|
||||||
|
* - Hauptidee ist, dass falls der Programmer oder der User einen Fehler gemacht hat, läuft das Programm trotzdem weiter!
|
||||||
|
* - An exception ist ein unerwünschtes oder unerwartetes Ereignis
|
||||||
|
* ,das während der Ausführung eines Programms zur Laufzeit auftritt.
|
||||||
|
*
|
||||||
|
* - wenn man nicht weiß, was der Fehler ist, kann man dan die Basis Klasse aufrufen (Exception)
|
||||||
|
* aber das wird langsamer als wenn ich den Fehler direkt schreibe
|
||||||
|
*
|
||||||
|
* - unterstützt keine Methoden und Klasse
|
||||||
|
* - kann nicht als Parameter innerhalb einer Methode verwendet werden
|
||||||
|
* - kann aber innerhalb ale arten von Methoden geschrieben werden
|
||||||
|
*
|
||||||
|
* was sid die checked und unchecked Exceptions?
|
||||||
|
* - checked: Compiler zwingt mich ein try-catch Block zu erstellen und Sie erben von der Klasse Exception, aber nicht von RuntimeException.
|
||||||
|
* wie z.b(IOException, SQLException, FileNotFoundException)
|
||||||
|
* - unchecked: Compiler zwingt mich nicht try-catch Block zu erstllen und Sie erben nur von RuntimeException.
|
||||||
|
* wie z.b (ullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException)
|
||||||
|
*
|
||||||
|
* welche Arten haben wir?
|
||||||
|
* 1. NullPointerException: Zugriff auf null-Referenz.
|
||||||
|
* 2. ArrayIndexOutOfBoundsException: Ungültiger Array-Indexzugriff.
|
||||||
|
* 3. ClassCastException: Ungültige Typumwandlung
|
||||||
|
* 4. ArithmeticException: Fehler in arithmetischer Operation (z.B. Division durch null).
|
||||||
|
* 5. NumberFormatException: Fehlerhafte Zahlumwandlung.
|
||||||
|
* 6. IOException: Eingabe-/Ausgabefehler.
|
||||||
|
* 7. FileNotFoundException: Datei nicht gefunden.
|
||||||
|
* 8. SQLException: Fehler in der Datenbankoperation.
|
||||||
|
* 9. IllegalArgumentException: Ungültiges Argument übergeben.
|
||||||
|
* etc...
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Try-catch block:
|
||||||
|
*
|
||||||
|
* try{
|
||||||
|
* - m try-Block wird der Code geschrieben,
|
||||||
|
* der möglicherweise einen Fehler verursachen könnte.
|
||||||
|
*
|
||||||
|
* }catch(Exception e){
|
||||||
|
* - Was passieren soll, wenn ein Fehler auftritt?
|
||||||
|
* - Exception:ist die Basisklasse für alle Ausnahmen, die das Programm möglicherweise behandeln sollte.
|
||||||
|
* wie z.b(IOException),SQLException,NullPointerException sind unterklasse von Exception
|
||||||
|
* - e: ist ist ein belibeger Name eines Objektes
|
||||||
|
*
|
||||||
|
* - man kann try in ein try erzeugen
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
//Try-catch block beispiel
|
||||||
|
try {
|
||||||
|
int[] arr = new int[] {1,2,3};
|
||||||
|
System.out.println(arr[4]);
|
||||||
|
}catch(Exception e) {
|
||||||
|
//entweder
|
||||||
|
System.out.println("das ist ungültig");
|
||||||
|
//oder
|
||||||
|
System.out.println(e);
|
||||||
|
//oder
|
||||||
|
System.out.println(e + "das ist ungültig");
|
||||||
|
}
|
||||||
|
// trotz des Fehlers läuft das Programm weiter, da ich try catch habe
|
||||||
|
System.out.println("1");
|
||||||
|
|
||||||
|
|
||||||
|
//Try-catch block mit NullPointerException (ist eine klasse) beispiel
|
||||||
|
//also Objekt ist leer!
|
||||||
|
try {
|
||||||
|
int[] arr = null;
|
||||||
|
System.out.println(arr[4]);
|
||||||
|
}catch(Exception e) {
|
||||||
|
|
||||||
|
System.out.println(e.toString());
|
||||||
|
}
|
||||||
|
// trotz des Fehlers läuft das Programm weiter, da ich try catch habe
|
||||||
|
System.out.println("1");
|
||||||
|
|
||||||
|
|
||||||
|
//Try-catch block mit NumberForamtEception (ist eine klasse) beispiel
|
||||||
|
try {
|
||||||
|
System.out.println("haöö");// die wird ausgegeben
|
||||||
|
int val = Integer.parseInt("String23");
|
||||||
|
System.out.println(val);
|
||||||
|
System.out.println("haöö");// die wird nicht ausgegeben
|
||||||
|
}catch(Exception e) {
|
||||||
|
|
||||||
|
System.out.println(e.toString());
|
||||||
|
}
|
||||||
|
// trotz des Fehlers läuft das Programm weiter, da ich try catch habe
|
||||||
|
System.out.println("1");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
package oop.ExceptionHandling;
|
||||||
|
|
||||||
|
public class Finally {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
/*
|
||||||
|
* Wenn ein Programmfehler auftaucht, springe in catch Block gib den Fehler aus und laufe nicht weiter
|
||||||
|
* und am Ende gib finally Block aus!
|
||||||
|
*/
|
||||||
|
try {
|
||||||
|
int arr[] = new int[5];
|
||||||
|
arr[7] = 5;
|
||||||
|
|
||||||
|
}catch(Exception e) {
|
||||||
|
|
||||||
|
System.out.println(e);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}finally {
|
||||||
|
System.out.println("finally");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* wegen System.exit in catch wird finally Block nicht ausgegenen
|
||||||
|
*/
|
||||||
|
try {
|
||||||
|
int arr[] = new int[5];
|
||||||
|
arr[7] = 5;
|
||||||
|
|
||||||
|
}catch(Exception e) {
|
||||||
|
|
||||||
|
System.out.println(e);
|
||||||
|
System.exit(0);
|
||||||
|
|
||||||
|
}finally {
|
||||||
|
System.out.println("finally");
|
||||||
|
}
|
||||||
|
//System.out.println(getNumber(3));
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// hier wir die 3 ausgegben, weil finally soll ausgegeben werden
|
||||||
|
public static int getNumber(int x) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (x == 3)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
}catch (Exception e){
|
||||||
|
return 2;
|
||||||
|
|
||||||
|
}finally {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package oop.ExceptionHandling;
|
||||||
|
|
||||||
|
public class MultiCatchBlocks {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try {
|
||||||
|
int arr[] = new int[5];
|
||||||
|
arr[10] = 7/0;
|
||||||
|
}
|
||||||
|
catch(ArrayIndexOutOfBoundsException|java.lang.ArithmeticException ex) {
|
||||||
|
System.out.println(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package oop.ExceptionHandling;
|
||||||
|
|
||||||
|
public class Throwkeyword {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// hier try und catch sind optional
|
||||||
|
try {
|
||||||
|
number(-1);
|
||||||
|
}catch (Exception e){
|
||||||
|
System.out.println("die Zahl ist negativ");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* in diesem try verfachen hier, wird das Block finally
|
||||||
|
* erst ausgeführt, before das Block catch mit throw
|
||||||
|
*/
|
||||||
|
try {
|
||||||
|
int x = 5/0;
|
||||||
|
|
||||||
|
}catch(Exception e) {
|
||||||
|
throw new ArithmeticException("neu throw");
|
||||||
|
|
||||||
|
}finally{
|
||||||
|
System.out.println("finally Block");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//throws Exception ist hier optional
|
||||||
|
static void number(int number) throws Exception {
|
||||||
|
|
||||||
|
if (number <= 0) {
|
||||||
|
//throw new ArithmeticException();Oder
|
||||||
|
//throw new ArithmeticException("das geht nicht");oder
|
||||||
|
ArithmeticException message = new ArithmeticException("die Zahl geht nicht");
|
||||||
|
throw message;
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
System.out.println("Die Zahl ist richtig");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
package oop.ExceptionHandling;
|
||||||
|
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class ThrowsKeyword {
|
||||||
|
/*
|
||||||
|
* - Wenn der Programmiere weiß, wie er mit den Fehlern umgehen kann.
|
||||||
|
* - zwingt jeder, der solche Methoden implementiert, throws zu behandeln
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
/*
|
||||||
|
* da ich in readFile Methode throws verwendet habe
|
||||||
|
* ,soll ich hier z.b try catch erzeugen
|
||||||
|
*/
|
||||||
|
try {
|
||||||
|
readFile("D:\\Test.txt");
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void readFile(String File) throws FileNotFoundException, IOException{
|
||||||
|
FileReader reader = new FileReader(File);// resource
|
||||||
|
System.out.println("File Inhalt: ");
|
||||||
|
|
||||||
|
int r = 0;
|
||||||
|
while((r = reader.read()) != -1) {
|
||||||
|
System.out.print((char) r);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package oop.ExceptionHandling;
|
||||||
|
|
||||||
|
public class UnCheckedException {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
/*
|
||||||
|
* - Solche Errors kann man nicht mit try und Catch behandeln also sie sind keine gute Praxis
|
||||||
|
* - try und catch werden den Error nicht lösen
|
||||||
|
*/
|
||||||
|
try {
|
||||||
|
f();
|
||||||
|
}catch (Error e) {
|
||||||
|
System.out.println(e);//java.lang.StackOverflowError
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Die Methode ruft sich bis unendlich
|
||||||
|
static void f() {
|
||||||
|
System.out.println("f()");
|
||||||
|
f();
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 299 KiB |
|
@ -0,0 +1,57 @@
|
||||||
|
package oop.FileHandling.ByteKlassen;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
//also ich habe daten auf meinm File und ich will diese Datein lesen oder importieren
|
||||||
|
// man kann heir mit Text bearbeiten aber es ist nicht dafür richtig alternative Möglichkeit (die abstrakte klasse reader und Writer)
|
||||||
|
public class Fileinputstream {
|
||||||
|
|
||||||
|
/*read() Methode:
|
||||||
|
* - fis.read liest aus dem File nur ein Byte aus und gibt ein Integer zurück
|
||||||
|
* - z.b a liest als (97) lösung als (char) casting
|
||||||
|
* - wenn die Methode keinen Byte lesen kann, gibt -1 zurück
|
||||||
|
*
|
||||||
|
*read(byte [] b) Method:
|
||||||
|
* - die übernimmt array vom type byte
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
FileInputStream fis = null;
|
||||||
|
fis = new FileInputStream("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\Test");
|
||||||
|
{
|
||||||
|
// das ist falsch, weil ich die Aufruf der Methode ist falsch
|
||||||
|
while (fis.read() != -1)
|
||||||
|
System.out.print((char)fis.read());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//richtig!!
|
||||||
|
int data;
|
||||||
|
while((data = fis.read()) != -1)// wenn kein mehr chars gibt, ist -1
|
||||||
|
System.out.print((char)data);
|
||||||
|
|
||||||
|
{
|
||||||
|
// read() übernimmt ein byte array
|
||||||
|
byte[] b = new byte[3]; // byte array
|
||||||
|
fis.read(b);// methode übernimmt byte array
|
||||||
|
String s = new String(b);//mit diesem Konstruktor gebe ich alle Inhalt aus ohne Loop
|
||||||
|
System.out.println(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
// read() übernimmt ein byte array mit dynamischen size für array
|
||||||
|
File f = new File("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\Test");
|
||||||
|
FileInputStream f2 = new FileInputStream(f);
|
||||||
|
byte[] b = new byte[(int) f.length()]; //Methode gibt long zurück size soll aber int sein
|
||||||
|
fis.read(b);// methode übernimmt byte array
|
||||||
|
String s = new String(b);//mit diesem Konstruktor gebe ich alle Inhalte aus (ohne Loop)
|
||||||
|
System.out.println(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package oop.FileHandling.ByteKlassen;
|
||||||
|
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
//also ich habe datein in meine Programm und ich will diese Datein zu meinem File schicken also (schreiben)
|
||||||
|
//man kann heir mit Text bearbeiten aber es ist nicht dafür richtig alternative Möglichkeit (die abstrakte klasse reader und Writer)
|
||||||
|
|
||||||
|
public class Filoutputstream {
|
||||||
|
|
||||||
|
/*write() methode:
|
||||||
|
* - die übernimmt nur (integer) zahlen
|
||||||
|
* - kann Strings mit Hilfe von byte array aufnehmen
|
||||||
|
* z.b fSchreiben.write("ABF".getBytes());
|
||||||
|
* - fSchreiben.write("arabische sprache".getBytes()("UTF-8")); um andere Sprachen aufzunehmen
|
||||||
|
* - fSchreiben.flush(); stellt sicher, dass die Datein richtig geschrieben werden
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
// hier wenn er den File (Test2) nicht findet, erzeugt er File mit dem Name Test2 automatisch
|
||||||
|
FileOutputStream fSchreiben = new FileOutputStream("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\Test2");
|
||||||
|
//fSchreiben.write(10);
|
||||||
|
fSchreiben.write("ä".getBytes());
|
||||||
|
fSchreiben.flush();
|
||||||
|
|
||||||
|
//lesen der Datei
|
||||||
|
FileInputStream fLesen = new FileInputStream("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\Test2");
|
||||||
|
System.out.println((char)fLesen.read());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package oop.FileHandling.ByteKlassen;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
public class LeseEinBild {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
//gibt mit die gesamte size vom byte meine Bildes
|
||||||
|
File file = new File("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling");
|
||||||
|
|
||||||
|
FileInputStream fin = new FileInputStream(file);
|
||||||
|
byte b[] = new byte[(int) file.length()];
|
||||||
|
fin.read(b);
|
||||||
|
|
||||||
|
//Optional loop
|
||||||
|
for (int i = 0; i < b.length; i++)
|
||||||
|
System.out.print(b[i]);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* - erstellt mir eine neues Bild mit dem Name (neues Bild)
|
||||||
|
* - dieses Verfahren kann mit allen Arten von Byts verwendet werden
|
||||||
|
*/
|
||||||
|
FileOutputStream fos = new FileOutputStream("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\neues Bild.png");
|
||||||
|
fos.write(b);
|
||||||
|
fos.flush();
|
||||||
|
fos.close();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
abc
|
|
@ -0,0 +1 @@
|
||||||
|
ä
|
Binary file not shown.
After Width: | Height: | Size: 299 KiB |
|
@ -0,0 +1,39 @@
|
||||||
|
package oop.FileHandling;
|
||||||
|
|
||||||
|
public class FileHandling {
|
||||||
|
/*
|
||||||
|
* - bezieht sich auf das Arbeiten mit Dateien und Verzeichnissen, einschließlich Erstellen, Lesen,
|
||||||
|
* Schreiben, Bearbeiten und Löschen.
|
||||||
|
* - die Kommunikation zwischen File und Programm heißt (stream)
|
||||||
|
* - Programm liest (Read) aus dem File (Input stream)
|
||||||
|
* - Programm schreibt (Write) oder (speichert) auf dem File (output Stream)
|
||||||
|
* - Es gibt ein eingine Stream für Lesen
|
||||||
|
* - Es gibt ein eingine Stream für schreiben
|
||||||
|
* - man kann das easy in Konstruktor als parameter und methode als parameter machen oder drin
|
||||||
|
*
|
||||||
|
* - FileInputStream und FileOutPutStream sind für File Texte nicht geeignet,
|
||||||
|
* alternativ möglichkeit die abstrakte Klassen Reader und Writer
|
||||||
|
* - Hinweis: Die abstrakte Klasse Reader liest Zeichen für Zeichen und ruft die Methode read() jedes Mal auf, wenn ein neues Zeichen gelesen wird.
|
||||||
|
* Wenn wir z.B. 10 Zeichen lesen möchten, wird die Methode read() 10 Mal aufgerufen.
|
||||||
|
*
|
||||||
|
* Alternative Möglichkeit: Die Klasse BufferedReader kann verwendet werden, um ganze Zeilen oder größere Blöcke von Zeichen auf einmal zu lesen,
|
||||||
|
* was effizienter sein kann, da sie den Lesevorgang puffert und somit weniger oft auf die zugrunde liegende Datenquelle zugreift.
|
||||||
|
* - printWriter ist für alle Datentyps gut geeinigt (kann nur schreiben auf dem File)
|
||||||
|
* - Scanner ist für alle Datentyps gut geeinigt (kann nur lesen auf dem File)
|
||||||
|
* - flush() soll aufgerufen werden
|
||||||
|
* - BufferReader ist besser als Scanner
|
||||||
|
*
|
||||||
|
* Objekte einer Klasse können auch auf dem File gelesen und geschriben werden:
|
||||||
|
*
|
||||||
|
* - Serialization: ist eine (marker) lerre interface Klasse, die implemntiert werden soll
|
||||||
|
* , wenn wir das Objekt auf einem File schreiben möchten
|
||||||
|
*
|
||||||
|
* 1. Serialization (Objekt schreiben): Ist ein Mechanismus zur Umwandlung eines Objekts in einen Byte-Stream,
|
||||||
|
* der dann in einer Datei gespeichert werden kann. Dies wird durch die Klasse ObjectOutputStream ermöglicht.
|
||||||
|
*
|
||||||
|
* 2. Deserialization (Objekt lesen): Ist ein Mechanismus zur Umwandlung eines Byte-Streams zurück in ein Objekt.
|
||||||
|
* Dies wird durch die Klasse ObjectInputStream ermöglicht.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
package oop.FileHandling;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
// Hauptfunktion verwaltet Files
|
||||||
|
public class FileKlasse {
|
||||||
|
|
||||||
|
/*Was macht diese Kalsse?
|
||||||
|
* - abstrakte Darstellungen von Dateipfaden und Verzeichnissen zu bieten und verschiedene Operationen darauf zu ermöglichen
|
||||||
|
* - sie befindet sich im Paket java.io
|
||||||
|
* - stellt keine Methode zum direkten Lesen oder Schreiben von Daten bereit.
|
||||||
|
* - Stattdessen bietet sie Funktionen zur Dateiverwaltung.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
File file = new File("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\Test");
|
||||||
|
|
||||||
|
if (file.exists()) {
|
||||||
|
System.out.println("Datei existiert: " + file.getName());
|
||||||
|
System.out.println("Pfad: " + file.getPath());
|
||||||
|
System.out.println("Absoluter Pfad: " + file.getAbsolutePath());
|
||||||
|
System.out.println("Schreibbar: " + file.canWrite());//ob der ich in der File schreiben kann
|
||||||
|
System.out.println("Lesbar: " + file.canRead()); //ob der ich in File lesen kann
|
||||||
|
System.out.println("Größe: " + file.length() + " Bytes");
|
||||||
|
System.out.println("kann ausführen = " + file.canExecute()); //kann ich diesen Fiel bearbeiten (ja/nein)
|
||||||
|
|
||||||
|
}
|
||||||
|
// test3 File existiert nicht im Pfad also wird einen neuen Pfeil erstellt
|
||||||
|
File file2 = new File("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\Test3");
|
||||||
|
// try catch sollen erzuegt werden
|
||||||
|
try {
|
||||||
|
if (file.createNewFile()) // createNewFile() gibt boolean zurück,ob der File ergolgreich erstellt wurde oder nicht
|
||||||
|
System.out.println("Datei erstellt: " + file.getName()); // der File muss im Pfad nicht existieren, damit es erstellt wurde
|
||||||
|
else
|
||||||
|
System.out.println("Fehler beim Erstellen der Datei.");
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
// erstelle ein Verzeichnes
|
||||||
|
File folder = new File("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\TestFolder");
|
||||||
|
if (!folder.exists()) {
|
||||||
|
if (folder.mkdir())
|
||||||
|
System.out.println("Verzeichnis erstellt: " + folder.getName());
|
||||||
|
else
|
||||||
|
System.out.println("Fehler beim Erstellen des Verzeichnisses.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// gibt die Inhalt eines Folders zurück
|
||||||
|
File dir2 = new File("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\TestFolder");
|
||||||
|
|
||||||
|
// Auflisten der Inhalte des Verzeichnisses mit Hilfe eines String arrays
|
||||||
|
String[] fileList = dir2.list();
|
||||||
|
if (fileList != null) {
|
||||||
|
System.out.println("Inhalte des Verzeichnisses:");
|
||||||
|
for (String fileName : fileList)
|
||||||
|
System.out.println(fileName);
|
||||||
|
|
||||||
|
} else
|
||||||
|
System.out.println("Das Verzeichnis ist leer oder konnte nicht aufgelistet werden.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue