obai 2024-10-16 23:37:10 +02:00
parent f1faf023cf
commit 9b71822864
23 changed files with 518 additions and 81 deletions

View File

@ -0,0 +1,24 @@
package DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo;
import DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo.domain.Animal;
import DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo.domain.Cat;
import DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo.domain.Dog;
public class FaktoryMethode {
public static Animal erzeugeTiere(String species,String name, int alter) {
switch (species) {
case "Dog":
return new Dog(name,alter);
case "Cat":
return new Cat(name,alter);
default:
return null;
}
}
}

View File

@ -0,0 +1,18 @@
package DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo;
import java.lang.reflect.InvocationTargetException;
import DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo.domain.*;
public class ZooMain {
public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException {
// Animal tiere = Animal.erzeugeTier("Britisch","DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo.domain.Cat", 12);
//
// System.out.println(tiere.speak());
Animal tiere = FaktoryMethode.erzeugeTiere("Cat", "bob", 12);
tiere.speak();
}
}

View File

@ -0,0 +1,34 @@
package DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo;
import java.util.Scanner;
public class ZooUI {
FaktoryMethode system;
public ZooUI() {
startProgramm();
}
private void startProgramm() {
Scanner eingabe = new Scanner(System.in);
System.out.println("Willkommen in meinem ZOO");
while (true) {
System.out.println("Welches Tier möchten Sie haben?");
System.out.println("1. Katze");
System.out.println("2. Hund");
System.out.println("3. Mouse");
String auswahl = eingabe.nextLine();
String name = eingabe.nextLine();
int alter = eingabe.nextInt();
switch (auswahl) {
case "Katze":
System.out.println("Name: ");
system.erzeugeTiere(auswahl, auswahl, 0);
}
}
}
}

View File

@ -0,0 +1,49 @@
package DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo.domain;
import java.lang.reflect.InvocationTargetException;
public abstract class Animal {
private String name;
private int alter;
private String species;
public Animal(String name, int alter) {
this.name = name;
this.alter = alter;
}
public abstract String speak();
public String getSpecies() {
return species;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBirthyear() {
return alter;
}
public void setBirthyear(int birthyear) {
this.alter = birthyear;
}
public void setSpecies(String species) {
this.species = species;
}
public static Animal erzeugeTier(String species ,String name, int alter) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException {
return (Animal) Class.forName(species)
.getDeclaredConstructor(String.class, Integer.TYPE)
.newInstance(name,alter);
}
}

View File

@ -0,0 +1,14 @@
package DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo.domain;
public class Cat extends Animal {
public Cat( String name, int alter) {
super(name, alter);
}
@Override
public String speak() {
return super.getSpecies()+ " macht: Meow";
}
}

View File

@ -0,0 +1,14 @@
package DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo.domain;
public class Dog extends Animal {
public Dog( String name, int alter) {
super(name, alter);
}
@Override
public String speak() {
return super.getName() + " macht: Woof";
}
}

View File

@ -0,0 +1,14 @@
package DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo.domain;
public class Mouse extends Animal {
public Mouse(String name, int alter) {
super(name, alter);
}
@Override
public String speak() {
return super.getSpecies() + " macht etwas etwas";
}
}

View File

@ -0,0 +1,8 @@
package DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory.Zoo.domain;
public class Zoo {
}

View File

@ -0,0 +1,48 @@
package GUIAnwendungen.Beispiele;
import java.awt.BorderLayout;
import java.awt.GridLayout;
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.JPanel;
import javax.swing.JTextField;
public class GuiDemo implements ActionListener {
public static void main(String[] args) {
JFrame jf = new JFrame("Toller Titel");
jf.add(new JLabel("Hallo Welt!"), BorderLayout.NORTH);
jf.add(new JTextField(10), BorderLayout.CENTER);
JButton jb1 = new JButton("Cancel");
JButton jb2 = new JButton("OK");
JPanel jp = new JPanel();
jp.setLayout(new GridLayout());
jp.add(jb1);
jp.add(jb2);
jf.add(jp, BorderLayout.SOUTH);
jf.pack();
jf.setVisible(true);
GuiDemo obj = new GuiDemo();
jb1.addActionListener(obj);
jb2.addActionListener(obj);
System.out.println("Ende Gelände...");
}
@Override
public void actionPerformed(ActionEvent e) {
JButton src = (JButton) e.getSource();
System.out.println("Button geklickt: " + src.getText());
}
}

View File

@ -32,7 +32,6 @@ public class jbutton implements ActionListener {
// 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();
@ -46,6 +45,8 @@ public class jbutton implements ActionListener {
* new ActionListener() ist nicht das Erzeugen einer Instanz des Interfaces selbst,
* sondern das Erstellen einer Instanz einer anonymen Klasse, die das ActionListener-Interface implementiert.
*/
// Variante 1
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
@ -54,7 +55,10 @@ public class jbutton implements ActionListener {
}
});
//Variante 2:
jbutton obj = new jbutton();
button.addActionListener(obj);
// Erstelle ein Fenster
JFrame frame = new JFrame();
@ -86,8 +90,7 @@ public class jbutton implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("Variante 2");
}

View File

@ -0,0 +1,67 @@
package Hashmap.Autovermietung;
import java.util.ArrayList;
import java.util.HashMap;
public class Autovermietung {
// private ArrayList<Pkw> autos = new ArrayList<>();
HashMap<String, Pkw> autos = new HashMap<>();
public int getAnzahlPkws() {
return autos.size();
}
public void pkwAnlegen(String kennzeichen, String typ, int kmStand) {
Pkw p = new Pkw(kennzeichen, typ, kmStand);
autos.put(kennzeichen, p);
}
public String[] getPkwListe() {
String[] liste = new String[autos.size()];
for (int i = 0; i < autos.size(); i++)
liste[i] = autos.get(i).toString();
return liste;
}
public void verleiheFahrzeug(String kennzeichen) {
Pkw zuVerleihen = suchePkwNachKennzeichen(kennzeichen);
zuVerleihen.verleihen(new Kunde("Müller"));
// Hier könnten noch weitere Dinge erledigt werden, bspw. einen Counter für Vermietungen hochzählen o.ä.
}
// Hier wird zu Demonstrationszwecken das Geheimnisprinzip verletzt
public ArrayList<Pkw> suchePkwsNachTyp(String typ) {
ArrayList<Pkw> treffer = new ArrayList<>();
for (Pkw p : autos.values())
if (typ.equals(p.getType()))
treffer.add(p);
return treffer;
}
private Pkw suchePkwNachKennzeichen(String kennzeichen) {
return autos.get(kennzeichen);
// for (Pkw p : autos.values())
// if (kennzeichen.equals(p.getKennzeichen()))
// return p;
//
// return null;
}
public boolean pkwZurücknehmen(String kennzeichen, int gefahreneKm) {
Pkw zurück = suchePkwNachKennzeichen(kennzeichen);
if (zurück == null)
return false;
zurück.rückgabe(gefahreneKm);
// IRL würde man vermutlich den Km-Stand abfragen, aber so haben wir eine Kleinigkeit zu rechnen.
return true;
}
}

View File

@ -1,4 +1,4 @@
package Hashmap;
package Hashmap.Autovermietung;
import java.util.HashMap;
import java.util.LinkedHashMap;

View File

@ -0,0 +1,21 @@
package Hashmap.Autovermietung;
public class Kunde {
private String name;
public Kunde(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

View File

@ -0,0 +1,48 @@
package Hashmap.Autovermietung;
public class Pkw {
private String kennzeichen;
private String type;
private int kmStand;
public Pkw(String kennzeichen, String typ, int kmStand) {
}
public String getKennzeichen() {
return kennzeichen;
}
public void setKennzeichen(String kennzeichen) {
this.kennzeichen = kennzeichen;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getKmStand() {
return kmStand;
}
public void setKmStand(int kmStand) {
this.kmStand = kmStand;
}
public void verleihen(Kunde kunde) {
// TODO Auto-generated method stub
}
public void rückgabe(int gefahreneKm) {
// TODO Auto-generated method stub
}
}

View File

@ -0,0 +1,35 @@
package oop.ExceptionHandling;
import java.util.ArrayList;
public class CCMExceptionProvoker {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<>();
al.add("Peggy");
al.add("Bud");
al.add("Kelly");
al.add("Al");
String otbr = null;
for (String s : al) {
System.out.println(s);
if (s.equals("Al")) {
System.out.println("I move out of the House!");
al.remove(s); // Führt zur Exception, weil dem Iterator die genutze Liste "zerschossen" wird.
// otbr = s;
break; // Aber wenn wir break machen, dann geht das
}
}
if (otbr != null)
al.remove(otbr);
System.out.println(al.size());
}
}

View File

@ -48,7 +48,7 @@ public final class Auto implements Movable,SelfDrivable {
public void newMethod() {
System.out.print("SelfDrivable");
System.out.print("SelfDrivable Auto");
}

View File

@ -1,63 +0,0 @@
package oop.Interface;
public class Interface {
/*Was ist das?
* Eigentlich ist das fast wie die Abstrakte klassen außer:
*
* Implementierung Mehrfachvererbung
* abstrakte Klasse
*
* public interface klasseName
* alle Attribute werden automatisch (public static final)
* fast alle methoden werden automatisch (public abstract)
* ,außer die default methoden, die sollen aber in unterkalsse mit dem Wort public (soll geschrieben werden) implementiert werden und die können überschrieben werden
* Interface kann auch statiche methoden haben, die implementiert werden sollen
* default methoden sind nur in Interface erlaubt!
* final methoden sind nicht erlaubt, da sie abstrake sind und sollen überschreiben werden!
* private methoden sind erlaubt aber nur in der selben Klasse!
* Interface kann keinen Konstruktor haben!
* die untereklasse soll alle methode der Interface klasse implementieren
*
*
* NestedInterface:
* public interface NestedInterface {
void test();
interface InnerInterface {
default void test2() {
System.out.print("Innerinterface");
}
}
implements wid durch NestedInterface.InnerInterface
*Functional Interface:
* @FunctionalInterface
public interface Test2{
int berechne(int a, int b);
}
* @FunctionalInterface dieses Interfaceklasse kann nur
* (eine abstratke) methode haben aber unendlich viele
* default,static und private methoden haben
*
* Marker or Tagging Interface:
* ist ein Interface in Java, das keine Methoden oder Konstanten deklarier
*
*
*
* wichtig:
* . eine unterekalsse extends eine Obereklasse
* . eine normale oder final Klasse kann implements eine interface klasse
* . eine interface klasse extends eine interface klasse
*
* welche java types kann interface implementieren?
* 1. klassen
* 2. abstrakte klassen
* 3. nested Klassen (Verschateten klassen)
* 4. Enum
* 5. dynamic proxy
*/
}

View File

@ -1,6 +1,7 @@
package oop.Interface;
public interface Movable {
public static final int x = 0;
void moveUp();
void moveDown();
@ -12,4 +13,9 @@ public interface Movable {
System.out.print("SelfDrivable");
}
public static void print() {
System.out.println("Statische Methode");
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

View File

@ -5,6 +5,7 @@ public class Test {
public static void main(String[] args) {
Movable a1 = new Auto();
a1.newMethod();
}

View File

@ -0,0 +1,103 @@
package oop.inctanseof_Beispiel;
import java.util.ArrayList;
import java.util.List;
//Interface
public interface Dtails {
void getDetails();
public static void main(String[] args) {
List<Dtails> datenListe = new ArrayList<>();
// Objekte hinzufügen
datenListe.add(new Manager("Herr Müller"));
datenListe.add(new Katze("Whiskers"));
datenListe.add(new Hund("Bello"));
// Überprüfen, ob es ein Mitarbeiter, Katze oder Hund ist
for (Dtails daten : datenListe) {
if (daten instanceof Mitarbeiter) {
System.out.println("Das ist ein Mitarbeiter.");
daten.getDetails(); // Ruft die Methode von Manager auf
} else if (daten instanceof Katze) {
System.out.println("Das ist eine Katze.");
daten.getDetails(); // Ruft die Methode von Katze auf
} else if (daten instanceof Hund) {
System.out.println("Das ist ein Hund.");
daten.getDetails(); // Ruft die Methode von Hund auf
} else if (daten instanceof Animal) {
System.out.println("Das ist ein anderes Tier.");
daten.getDetails(); // Ruft die Methode von Animal auf
}
}
}
}
// Abstrakte Klasse Mitarbeiter
abstract class Mitarbeiter implements Dtails {
private String name;
public Mitarbeiter(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
// Subklasse Manager
class Manager extends Mitarbeiter {
public Manager(String name) {
super(name);
}
@Override
public void getDetails() {
System.out.println("Manager Name: " + getName());
}
}
// Abstrakte Klasse Animal
abstract class Animal implements Dtails {
private String name;
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
// Subklasse Katze
class Katze extends Animal {
public Katze(String name) {
super(name);
}
@Override
public void getDetails() {
System.out.println("Katze Name: " + getName());
}
}
// Subklasse Hund
class Hund extends Animal {
public Hund(String name) {
super(name);
}
@Override
public void getDetails() {
System.out.println("Hund Name: " + getName());
}
}

View File

@ -30,18 +30,11 @@ public class Controller implements ActionListener {
public void actionPerformed(ActionEvent e) {
letzterText = v1.eingabe.getText();
String speicher = "";
JButton clickedButton;
// Gibt mir, welche Button gedrückt ist
JButton src = (JButton) e.getSource();
if (e.getSource() == v1.button1 || e.getSource() == v1.button2 || e.getSource() == v1.button3
|| e.getSource() == v1.button4 || e.getSource() == v1.button5 || e.getSource() == v1.button6
|| e.getSource() == v1.button7 || e.getSource() == v1.button8 || e.getSource() == v1.button9
|| e.getSource() == v1.button0 || e.getSource() == v1.plus || e.getSource() == v1.minus
|| e.getSource() == v1.multi || e.getSource() == v1.divid || e.getSource() == v1.punkt) {
clickedButton = (JButton) e.getSource();
speicher = clickedButton.getText();
v1.setEingabe(letzterText + speicher);
}
speicher = src.getText();
v1.setEingabe(letzterText + speicher);
letzterText = v1.eingabe.getText();
if (e.getSource() == v1.berechnen) {