OOP
parent
976788b0a3
commit
ae94957546
|
@ -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.
|
@ -0,0 +1,53 @@
|
|||
package oop.FileHandling.SerializationAndDeserialization;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Test {
|
||||
|
||||
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
|
||||
|
||||
File file = new File("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\SerializationAndDeserialization\\FileTest.txt");
|
||||
|
||||
//(Serialization): schreibe das Objekt auf dem File als byte stream
|
||||
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
|
||||
writeObjekt write = new writeObjekt(111,"obai",3.4);
|
||||
oos.writeObject(write);
|
||||
|
||||
//(Deserialization): Lese das Objekt auf dem File als byte stream
|
||||
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
|
||||
|
||||
// Das zurückgegebene Objekt muss in den spezifischen Typ gecastet werden
|
||||
writeObjekt f1 = (writeObjekt) ois.readObject();
|
||||
System.out.println(f1);
|
||||
|
||||
|
||||
|
||||
// multiple objects (lesen & schreiben)
|
||||
|
||||
//schreiben:
|
||||
writeObjekt s1 = new writeObjekt(111,"Obai",2.2);
|
||||
writeObjekt s2 = new writeObjekt(111,"Omar",2.2);
|
||||
ArrayList<writeObjekt> list = new ArrayList<>();
|
||||
list.add(s1);
|
||||
list.add(s2);
|
||||
|
||||
ObjectOutputStream writeList = new ObjectOutputStream(new FileOutputStream(file));
|
||||
writeList.writeObject(list);
|
||||
|
||||
//Lesen:
|
||||
ObjectInputStream readList = new ObjectInputStream(new FileInputStream(file));
|
||||
ArrayList<writeObjekt> multiobjekt = (ArrayList<writeObjekt>)readList.readObject();
|
||||
System.out.println(multiobjekt);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package oop.FileHandling.SerializationAndDeserialization;
|
||||
|
||||
import java.io.Serializable;
|
||||
/*
|
||||
* Serializable ist ein marker (leere) Interface kalsse, soll implementiert werden
|
||||
*/
|
||||
|
||||
public class writeObjekt implements Serializable {
|
||||
|
||||
int id;
|
||||
String name;
|
||||
double Note;
|
||||
|
||||
public writeObjekt(int id, String name, double note) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
Note = note;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public double getNote() {
|
||||
return Note;
|
||||
}
|
||||
|
||||
public void setNote(double note) {
|
||||
Note = note;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Student [id=" + id + ", name=" + name + ", Note=" + Note + "]";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package oop.FileHandling.character;
|
||||
import java.io.FileReader;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.BufferedReader;
|
||||
|
||||
/*
|
||||
* - hauptfubktion: Liest ganze Zeilen (line by line) auf einmal und ruft die Methode readLine() aus
|
||||
*
|
||||
*/
|
||||
public class Bufferedreader {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\character\\Test1"));
|
||||
String line = br.readLine();
|
||||
/*
|
||||
* - Liest nur eine einzige Line auf dem File
|
||||
* Lösungsmöglichkeit => Loop erzeugen
|
||||
*/
|
||||
while(line != null) {
|
||||
System.out.println(line); // print die erste Line
|
||||
line = br.readLine(); // spring auf die nächste Linie
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package oop.FileHandling.character;
|
||||
import java.io.FileWriter;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
/*
|
||||
* - hauptfubktion: Liest ganze Zeilen auf einmal und ruft die Methode readLine() aus
|
||||
* - br.write(97); => 'a' sie liest keine Integer zahlen
|
||||
* - br.write(10.5) => error geht nicht
|
||||
* - br.write(boolean) => error geht nicht
|
||||
* Alternative Möglichkeit (PrintWriter ) kann alle Daten Typs auf dem File schreiben
|
||||
*/
|
||||
public class Bufferedwriter {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
/*
|
||||
* - BufferedWriter übernimmt keine Pfad für einen File,
|
||||
* sondern übernimmt sie ein Objekt aus der Klasse (FileWriter) die extends die Abstrakte Klasse Writer
|
||||
* - FileWriter Klass hilft mir BufferedWriter zu verwenden
|
||||
*/
|
||||
|
||||
/*
|
||||
* true, damit Wenn {@code true}, werden die Daten (fix geschpeichert)
|
||||
* anstatt an den Anfang. also die Datein werden nicht überschrieben werden
|
||||
*/
|
||||
BufferedWriter b1 = new BufferedWriter(new FileWriter("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\character\\Test1",true));
|
||||
b1.write("Hallo Welt");
|
||||
b1.newLine(); // neue Linie
|
||||
b1.write("Hallo Welt2");
|
||||
b1.flush();
|
||||
b1.close();
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package oop.FileHandling.character;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
|
||||
public class Filereader {
|
||||
/*
|
||||
* - Das Verfahren läuft ganz geanu wie beim FileInputStream
|
||||
* - Kritik: FileReader liest jedes Char ich habe 10 Zeichen
|
||||
* die Methode read() wird in dem Fall sich selbst 10 mal aufrufen
|
||||
* Alternativ möglichkeit (BufferedReader)
|
||||
*/
|
||||
public static void main(String[] args) throws IOException {
|
||||
|
||||
File file = new File("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\character\\Test1");
|
||||
FileReader fr = new FileReader(file);
|
||||
|
||||
// lese Dateien
|
||||
// Variante 1:
|
||||
int i;
|
||||
while((i = fr.read()) != -1)
|
||||
System.out.print((char)i);
|
||||
|
||||
// Variante 2: Mit Hilfe von File Klasse
|
||||
char[] speicher = new char[(int) file.length()];
|
||||
fr.read(speicher);
|
||||
for (char c : speicher)
|
||||
System.out.print(c);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package oop.FileHandling.character;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
|
||||
public class Filewriter {
|
||||
// für Schreiben auf einem beliebig File
|
||||
public static void main(String[] args) throws IOException {
|
||||
//erstelle einen File
|
||||
File newFile = new File("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\character\\Test1");
|
||||
if (newFile.createNewFile()) // createNewFile() gibt boolean zurück,ob der File ergolgreich erstellt wurde oder nicht
|
||||
System.out.println("Datei erstellt: " + newFile.getName()); // der File muss im Pfad nicht existieren, damit es erstellt wurde
|
||||
|
||||
String str = "Hallo Welt";
|
||||
FileWriter fr = new FileWriter("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\character\\Test1");
|
||||
fr.write(str); //wird Hallo Welt auf dem File geschrieben!
|
||||
fr.write("\n"); // breakline im File
|
||||
fr.write(str, 0, str.length()); //schreibt string von int x inkl bis int y exklus
|
||||
fr.write("\n");
|
||||
fr.write('2');
|
||||
|
||||
fr.close();
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package oop.FileHandling.character;
|
||||
import java.io.Writer;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
|
||||
public class OutPutStreamWriter {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
// die Klasse (OutputStreamWriter) extends (Writer)
|
||||
|
||||
Writer writer = new OutputStreamWriter(new FileOutputStream("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\character\\Test1"));
|
||||
String str = "hi Welt";
|
||||
writer.write(str);
|
||||
writer.flush();// da ich diese Methode aufgerufen habe, wurden die Datein zugeschieckt!
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package oop.FileHandling.character;
|
||||
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
public class Printwriter {
|
||||
/*
|
||||
* - schreibt alle Daten Typs auf dem File
|
||||
* - flush() soll aufgerufen werden
|
||||
*/
|
||||
public static void main(String[] args) throws IOException {
|
||||
// - flush() soll aufgerufen werden
|
||||
PrintWriter pr = new PrintWriter("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\character\\Test1");
|
||||
// pr.println(97);
|
||||
// pr.println("AAA");
|
||||
// pr.println('B');
|
||||
// pr.println(true);
|
||||
// pr.flush();
|
||||
|
||||
// oder
|
||||
FileWriter fr = new FileWriter("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\character\\Test1");
|
||||
PrintWriter pr2 = new PrintWriter(fr, true); //true steht für flush() Aufruf
|
||||
pr2.write(97); // wenn wir write verwenden, sollen wir flush() aufrufen
|
||||
pr2.println("AAA");
|
||||
pr2.println('B');
|
||||
pr2.println(true);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package oop.FileHandling.character;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Scannerklass {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
File fr = new File("C:\\Users\\obaya\\eclipse-workspace\\OOP\\src\\oop\\FileHandling\\character\\Test1");
|
||||
Scanner scan = new Scanner(fr);
|
||||
|
||||
//System.out.println(scan.next()); liest nur ein wort und hört dann auf
|
||||
//System.out.println(scan.nextLine()); // Liest nur eine Line und hört dann auf
|
||||
//
|
||||
// while(scan.hasNextLine())// hilfe mir alle Zeilen zu lesen
|
||||
// System.out.println(scan.nextLine());
|
||||
|
||||
scan.useDelimiter("w"); // gibt Foramt für den Text aus dem File
|
||||
while(scan.hasNext())// hilfe mir alle Wörter zu lesen
|
||||
System.out.println(scan.next());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package oop.FinalKeyword;
|
||||
|
||||
public class FinalKeywords {
|
||||
|
||||
/*
|
||||
* Final is a non-access modifier applicable only to:
|
||||
* Final variables oder (Constant Variables) oder (const Variables)
|
||||
* Final parameters
|
||||
* Final methods
|
||||
* Final classes
|
||||
* Final References
|
||||
*
|
||||
*
|
||||
* Final variables oder:
|
||||
* final variable soll immer groß geschrieben werden.
|
||||
* für final variable kann nicht setter und getter erstellt werden
|
||||
* final static variable können in Constructor keinen Wert zuweisen werden
|
||||
* final variable sind mit Scanner gültig
|
||||
*
|
||||
*
|
||||
*
|
||||
* Final methods:
|
||||
* final methods können nicht überschrieben werden. complier error
|
||||
* final-Methoden können in überladen werden.
|
||||
*
|
||||
*
|
||||
* Final Classes:
|
||||
* final classes können nicht geerbt werden.
|
||||
* classes die Private Konstruktoren hat, kann auch nicht geerbt werden
|
||||
*
|
||||
*
|
||||
*
|
||||
*Final References:
|
||||
*final References können nur einmal Werte zugewiesen Werden.
|
||||
*
|
||||
*/
|
||||
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
package oop.FinalKeyword;
|
||||
|
||||
public class Student {
|
||||
final int STUDENT_ID ;
|
||||
final static int degree;
|
||||
String name;
|
||||
int geburtstag;
|
||||
|
||||
/* so geht
|
||||
* {STUDENT_ID = 200;}
|
||||
*/
|
||||
|
||||
|
||||
//oder so;
|
||||
Student(){
|
||||
STUDENT_ID = 20;
|
||||
//degree = 2; Das ist verboten
|
||||
}
|
||||
// nur in static block
|
||||
static {
|
||||
degree = 20;
|
||||
}
|
||||
|
||||
|
||||
public Student(final int STUDENT_ID, String name, int geburtstag) {
|
||||
//STUDENT_ID = 0; verboten, das STUDENT_ID final ist
|
||||
this.STUDENT_ID = STUDENT_ID;
|
||||
this.name = name;
|
||||
this.geburtstag = geburtstag;
|
||||
}
|
||||
|
||||
// getmethod ist gültig
|
||||
public int getSTUDENT_ID() {
|
||||
return STUDENT_ID;
|
||||
}
|
||||
|
||||
|
||||
/*das ist verboten, weil wir STUDENT_ID nicht ersetzen dürfen
|
||||
|
||||
* public int setSTUDENT_ID(int STUDENT_ID) {
|
||||
this.STUDENT_ID = STUDENT_ID;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
@Override
|
||||
final public String toString() {
|
||||
return "Student [STUDENT_ID=" + STUDENT_ID + ", name=" + name + ", geburtstag=" + geburtstag + "]";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
class GraduatedStudent extends Student{
|
||||
|
||||
/*Verboten
|
||||
* @Override
|
||||
* public String toString() {
|
||||
return "Student [STUDENT_ID=" + STUDENT_ID + ", name=" + name + ", geburtstag=" + geburtstag + "]";
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package oop.FinalKeyword;
|
||||
|
||||
|
||||
public class Test {
|
||||
|
||||
public static void main(String[] args) {
|
||||
final Student st1 = new Student(123,"obai",2001);
|
||||
|
||||
// st1 = new Student (123,"obai",2001); Verboten
|
||||
|
||||
System.out.print(st1.toString());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package oop.Generics;
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
public class AddMitarbeiter {
|
||||
|
||||
ArrayList<Mietarbeiter> m1 = new ArrayList<>();
|
||||
|
||||
public ArrayList<Mietarbeiter> getM1() {
|
||||
return m1;
|
||||
}
|
||||
|
||||
public void setM1(ArrayList<Mietarbeiter> m1) {
|
||||
this.m1 = m1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "AddMitarbeiter [m1=" + m1 + "]";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package oop.Generics;
|
||||
|
||||
public class DateTyps <T,F> {
|
||||
|
||||
private T inhalt;
|
||||
private F inhalt2;
|
||||
|
||||
public void setInhalt(T inhalt, F inhalt2 ) {
|
||||
this.inhalt = inhalt;
|
||||
this.inhalt2 = inhalt2;
|
||||
}
|
||||
|
||||
public T getInhalt() {
|
||||
|
||||
return inhalt;
|
||||
|
||||
}
|
||||
|
||||
public F getInhalt2() {
|
||||
return inhalt2;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
package oop.Generics;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class EinfachesBeispiel {
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
|
||||
|
||||
|
||||
int[] intArray = {1,2,3,4,5};
|
||||
double[] doubleArray = {1.1,2.2,3.3,4.12,4.4};
|
||||
float[] floatArray = {1.1f,2.2f,3.3f,4.12f,4.4f};
|
||||
|
||||
//auslesen(floatArray);
|
||||
|
||||
// für Generic
|
||||
Integer[] IntegerArray = {1,2,3,4,5};
|
||||
Double[] DoubleArray = {1.1,2.2,3.3,4.12,4.4};
|
||||
Float[] FloatArray = {1.1f,2.2f,3.3f,4.12f,4.4f};
|
||||
Character[] characterArray = {'a','b','c'};
|
||||
String[] stringArray = {"hallo","Welt"};
|
||||
|
||||
//auslesenGenerics(stringArray);
|
||||
|
||||
|
||||
var variable = 1.1;
|
||||
System.out.print(variable);
|
||||
|
||||
}
|
||||
public static void auslesen(int[] array) {
|
||||
|
||||
for (int i : array)
|
||||
System.out.print(i + " ");
|
||||
}
|
||||
|
||||
public static void auslesen(double[] array) {
|
||||
|
||||
for (double i : array)
|
||||
System.out.print(i + " ");
|
||||
}
|
||||
|
||||
|
||||
public static void auslesen(float[] array) {
|
||||
|
||||
for (float i : array)
|
||||
System.out.print(i + " ");
|
||||
}
|
||||
|
||||
// ich muss nicht immer die Mthode überladen wie oben die Methoden
|
||||
// ich schicke also eine Objekt an diese Methode
|
||||
public static <obj> void auslesenGenerics(obj[] array) {
|
||||
|
||||
for (obj i : array)
|
||||
System.out.print(i + " ");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package oop.Generics;
|
||||
|
||||
public class Generics {
|
||||
|
||||
/*
|
||||
* Generics ist ein Konzept in der Programmierung, das es ermöglicht, Klassen, Methoden und Schnittstellen so zu schreiben
|
||||
* ,dass sie mit beliebigen Datentypen arbeiten können.
|
||||
* Anstatt festzulegen, dass eine Klasse oder Methode nur mit einem bestimmten Datentyp (z.B. int, String) arbeiten kann
|
||||
* , können Generics verwendet werden, um den Datentyp flexibel zu gestalten.
|
||||
*
|
||||
* Generic wird durch: Namen ein Typparameter in spitzen Klammern (<>) angegeben wird
|
||||
*
|
||||
* Generic funktionert mit:
|
||||
* 1. Klassen: (public class Box<T>)
|
||||
* 2. Methoden: (public static <T> void printArray(T[] array))
|
||||
* 3. Interfaces: (public interface Container<T>)
|
||||
*/
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package oop.Generics;
|
||||
|
||||
public class Mietarbeiter {
|
||||
|
||||
String name;
|
||||
int alter;
|
||||
|
||||
public Mietarbeiter(String name, int alter) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.alter = alter;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Mietarbeiter [name=" + name + ", alter=" + alter + "]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package oop.Generics;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Test {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Mietarbeiter m = new Mietarbeiter("obai", 24);
|
||||
AddMitarbeiter addMitarbeiter = new AddMitarbeiter();
|
||||
|
||||
addMitarbeiter.getM1().add(m);
|
||||
|
||||
System.out.println(addMitarbeiter);
|
||||
|
||||
|
||||
|
||||
//DateTyps<String,Integer> d1 = new DateTyps<>();
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package oop.Interface;
|
||||
|
||||
public final class Auto implements Movable,SelfDrivable {
|
||||
|
||||
int x,y;
|
||||
int numberOffahrer;
|
||||
|
||||
|
||||
public Auto() {
|
||||
|
||||
}
|
||||
|
||||
public Auto(int x, int y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destination(String d) {
|
||||
System.out.println("Destination = " + d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drive() {
|
||||
System.out.println("drive");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void moveUp() {
|
||||
y--;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void moveDown() {
|
||||
y++;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void moveLeft() {
|
||||
x--;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void moveRight() {
|
||||
x++;
|
||||
}
|
||||
|
||||
public void newMethod() {
|
||||
|
||||
System.out.print("SelfDrivable");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
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
|
||||
*/
|
||||
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package oop.Interface;
|
||||
|
||||
public interface Movable {
|
||||
|
||||
void moveUp();
|
||||
void moveDown();
|
||||
void moveLeft();
|
||||
void moveRight();
|
||||
|
||||
default void newMethod() {
|
||||
|
||||
System.out.print("SelfDrivable");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package oop.Interface;
|
||||
|
||||
public interface SelfDrivable {
|
||||
String AUTO_NAME = "BMW"; // ist default public static final
|
||||
|
||||
|
||||
void destination (String d);
|
||||
void drive();
|
||||
|
||||
default void newMethod() {
|
||||
|
||||
System.out.print("SelfDrivable");
|
||||
}
|
||||
|
||||
|
||||
static void klasseMethode() {
|
||||
|
||||
System.out.print("Statiche Methode");
|
||||
}
|
||||
|
||||
private void hilfsMethode() {
|
||||
System.out.println("Hilfsmethode, die von anderen Methoden im Interface genutzt wird");
|
||||
}
|
||||
|
||||
default void standardMethode1() {
|
||||
System.out.println("Standardmethode 1");
|
||||
hilfsMethode(); // Aufruf der privaten Methode innerhalb des Interfaces
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package oop.Interface;
|
||||
|
||||
|
||||
public class Test {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Movable a1 = new Auto();
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,124 @@
|
|||
package oop.Konstroktur;
|
||||
|
||||
public class Konstroktur {
|
||||
|
||||
private String name;
|
||||
private String beschreibung;
|
||||
private double price;
|
||||
private int quantity;
|
||||
private double discount;
|
||||
private String color;
|
||||
|
||||
|
||||
//Konstruktor:
|
||||
/*
|
||||
* Muss heißen wie die Klasse
|
||||
* Muss public sein
|
||||
* muss kein Return Wert haben
|
||||
* kann nicht abstrakt, static, final oder private sein
|
||||
* jedes Objekt kann nur eine einzige Konstruktor aufrufen
|
||||
* this.attribute = parameter
|
||||
* Default Konstroktur wird nur aufgerufen, wenn überhaupt kein Construktor haben
|
||||
*/
|
||||
|
||||
//Arten von Konstruktor:
|
||||
|
||||
|
||||
//1. Default Konstroktur, wird automatisch aufgerufen, wenn wir kein Konstruktor erstellen
|
||||
|
||||
//public Konstroktur() {}
|
||||
|
||||
|
||||
|
||||
// 2. no-argument constructor für default werte
|
||||
public Konstroktur() {
|
||||
this.name = "Kein Name";
|
||||
this.beschreibung = "Kein Beschreibung";
|
||||
this.price = 0.0;
|
||||
this.quantity = 0;
|
||||
this.discount = 0.0;
|
||||
|
||||
}
|
||||
|
||||
//3.1 argument constructor für dynamische werte
|
||||
public Konstroktur(String name, String beschreibung, double price, int quantity, double discount) {
|
||||
this.name = name;
|
||||
this.beschreibung = beschreibung;
|
||||
this.price = price;
|
||||
this.quantity = quantity;
|
||||
this.discount = discount;
|
||||
}
|
||||
|
||||
//3.2 Aufruf eines andere Konstruktor ( Chaining)
|
||||
public Konstroktur(String name, String beschreibung, double price, int quantity, double discount,String color) {
|
||||
|
||||
this (name,beschreibung,price,quantity,discount); // Aufruf der Konstruktor
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
// 4.1 Mit unterschiedlichen datentypen aber gleiche Parametern
|
||||
public Konstroktur(String n) {
|
||||
this.name = "Kein Name";
|
||||
this.beschreibung = "Kein Beschreibung";
|
||||
this.price = 0.0;
|
||||
this.quantity = 0;
|
||||
this.discount = 0.0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 4.2 Mit unterschiedlichen datentypen aber gleiche Parametern
|
||||
public Konstroktur(int n) {
|
||||
this.name = "Kein Name";
|
||||
this.beschreibung = "Kein Beschreibung";
|
||||
this.price = 0.0;
|
||||
this.quantity = 0;
|
||||
this.discount = 0.0;
|
||||
|
||||
}
|
||||
|
||||
// 5.1 andere Rheinfolge
|
||||
public Konstroktur(String n, int z) {
|
||||
this.name = "Kein Name";
|
||||
this.beschreibung = "Kein Beschreibung";
|
||||
this.price = 0.0;
|
||||
this.quantity = 0;
|
||||
this.discount = 0.0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 5.2 andere Rheinfolge
|
||||
public Konstroktur(int z , String n) {
|
||||
this.name = "Kein Name";
|
||||
this.beschreibung = "Kein Beschreibung";
|
||||
this.price = 0.0;
|
||||
this.quantity = 0;
|
||||
this.discount = 0.0;
|
||||
}
|
||||
|
||||
|
||||
// 6. Copy Constructor (dient dazu, Werte eines Objektes in anderem Objekt zu speicher)
|
||||
public Konstroktur(Konstroktur k1) {
|
||||
this.name = k1.name;
|
||||
this.beschreibung = k1.beschreibung;
|
||||
this.price = k1.price;
|
||||
this.quantity = k1.quantity;
|
||||
this.discount = k1.discount;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void display() {
|
||||
|
||||
System.out.println("Name = " + name);
|
||||
System.out.println("Beschreibung = " + beschreibung);
|
||||
System.out.println("price = " + price);
|
||||
System.out.println(" quantity = " + quantity);
|
||||
System.out.println("discount = " + discount);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package oop.Polymorphism;
|
||||
|
||||
public class DailyMitarbeiter extends Mitarbeiter {
|
||||
private double Werktagspreis;
|
||||
private int tagesrate;
|
||||
|
||||
public double getWerktagspreis() {
|
||||
return Werktagspreis;
|
||||
}
|
||||
|
||||
public void setWerktagspreis(double werktagspreis) {
|
||||
Werktagspreis = werktagspreis;
|
||||
}
|
||||
|
||||
public int getTagesrate() {
|
||||
return tagesrate;
|
||||
}
|
||||
|
||||
public void setTagesrate(int tagesrate) {
|
||||
this.tagesrate = tagesrate;
|
||||
}
|
||||
|
||||
public DailyMitarbeiter() {}
|
||||
|
||||
|
||||
public DailyMitarbeiter(String name, String adresse, String abteilung, String email, double gehalt, double Werktagspreis,int tagesrate) {
|
||||
super(name, adresse, abteilung, email, gehalt);
|
||||
this.Werktagspreis = Werktagspreis;
|
||||
this.tagesrate = tagesrate;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package oop.Polymorphism;
|
||||
|
||||
public class GehaltMitarbeiter extends Mitarbeiter {
|
||||
|
||||
double bouns;
|
||||
|
||||
public GehaltMitarbeiter() {}
|
||||
|
||||
public double getBouns() {
|
||||
return bouns;
|
||||
}
|
||||
|
||||
public void setBouns(double bouns) {
|
||||
this.bouns = bouns;
|
||||
}
|
||||
|
||||
public GehaltMitarbeiter(String name, String adresse, String abteilung, String email, double gehalt,double bouns) {
|
||||
super(name, adresse, abteilung, email, gehalt);
|
||||
this.bouns = bouns;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getGehalt() {
|
||||
return super.getGehalt() + this.bouns;
|
||||
}
|
||||
// entweder super.getGehalt()
|
||||
// oder gehalt von private zu protected umwandlen
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package oop.Polymorphism;
|
||||
|
||||
public class HourlyMitarbeiter extends Mitarbeiter {
|
||||
|
||||
private double arbeitsstundenpreis;
|
||||
private int stundensatz;
|
||||
|
||||
public double getArbeitsstundenpreis() {
|
||||
return arbeitsstundenpreis;
|
||||
}
|
||||
|
||||
public void setArbeitsstundenpreis(double arbeitsstundenpreis) {
|
||||
this.arbeitsstundenpreis = arbeitsstundenpreis;
|
||||
}
|
||||
|
||||
public int getStundensatz() {
|
||||
return stundensatz;
|
||||
}
|
||||
|
||||
public void setStundensatz(int stundensatz) {
|
||||
this.stundensatz = stundensatz;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public double getGehalt() {
|
||||
|
||||
return arbeitsstundenpreis * stundensatz;
|
||||
}
|
||||
|
||||
public HourlyMitarbeiter() {}
|
||||
|
||||
|
||||
|
||||
public HourlyMitarbeiter(String name, String adresse, String abteilung, String email, double gehalt,double arbeitsstundenpreis,int stundensatz ) {
|
||||
super(name, adresse, abteilung, email, gehalt);
|
||||
this.arbeitsstundenpreis = arbeitsstundenpreis;
|
||||
this.stundensatz = stundensatz;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
package oop.Polymorphism;
|
||||
|
||||
public class Mitarbeiter {
|
||||
|
||||
private String name;
|
||||
private String adresse;
|
||||
private String abteilung;
|
||||
private String email;
|
||||
private double gehalt;
|
||||
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getAdresse() {
|
||||
return adresse;
|
||||
}
|
||||
public void setAdresse(String adresse) {
|
||||
this.adresse = adresse;
|
||||
}
|
||||
|
||||
public String getAbteilung() {
|
||||
return abteilung;
|
||||
}
|
||||
|
||||
public void setAbteilung(String abteilung) {
|
||||
this.abteilung = abteilung;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public double getGehalt() {
|
||||
return gehalt;
|
||||
}
|
||||
public void setGehalt(double gehalt) {
|
||||
this.gehalt = gehalt;
|
||||
}
|
||||
|
||||
public Mitarbeiter(String name, String adresse, String abteilung, String email, double gehalt) {
|
||||
this.name = name;
|
||||
this.adresse = adresse;
|
||||
this.abteilung = abteilung;
|
||||
this.email = email;
|
||||
this.gehalt = gehalt;
|
||||
}
|
||||
|
||||
public Mitarbeiter() {}
|
||||
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package oop.Polymorphism;
|
||||
|
||||
public class Polymorphism {
|
||||
|
||||
|
||||
/*Was ist das?
|
||||
*
|
||||
* Method Overloading: Schlüsselwort (ohne)
|
||||
*
|
||||
* Compile-time Polymorphism (Early binding or static binding) (frühe Bindung).
|
||||
*
|
||||
* • Statische Methoden können überladen werden
|
||||
* • den selben Namen
|
||||
* • Parameterlist unterscheiden sich in der Anzahl oder dem type der Parameter
|
||||
* • innerhalb der selben oder abgeleiteten Klasse
|
||||
*
|
||||
* Method Overriding: Schlüsselwort (@Override)
|
||||
*
|
||||
* runtime-time Polymorphism (Late binding or Dynamic Polymorphism) (späte Bindung)
|
||||
*
|
||||
* • Statische Methoden können nicht überschreiben werden
|
||||
* • geht nur in Kindklasse also nur in Verebung mit (@Override)
|
||||
* • den selben Namen
|
||||
* • den selben Rückgabetyp
|
||||
* • die selbe Parameterliste
|
||||
* • aber anderes Verhalten
|
||||
*/
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
package oop.Polymorphism;
|
||||
|
||||
public class Test {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Mitarbeiter[] refarray = new Mitarbeiter[4]; // das geht auch
|
||||
refarray[0] = new Mitarbeiter();
|
||||
refarray[1] = new GehaltMitarbeiter();
|
||||
refarray[2] = new DailyMitarbeiter();
|
||||
refarray[3] = new HourlyMitarbeiter();
|
||||
|
||||
for (int i = 0; i <refarray.length; i++)
|
||||
|
||||
System.out.println(refarray[i]);
|
||||
|
||||
|
||||
// oder
|
||||
for (Mitarbeiter e : refarray)
|
||||
System.out.println(e);
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Das folgende Beispiel zeigt, wie Upcasting in Java verwendet wird.
|
||||
* Eine Referenz der Elternklasse (Mitarbeiter) wird verwendet, um auf ein Objekt der Kindklasse (GehaltMitarbeiter) zu zeigen.
|
||||
* Durch Methodenüberschreibung in der Kindklasse wird die spezifische Implementierung der Kindklasse verwendet.
|
||||
*/
|
||||
Mitarbeiter m1 = new Mitarbeiter("Obai", "Mannheim", "IT", "Obq@gmail", 10000);
|
||||
m1 = new GehaltMitarbeiter ("Obai", "Mannheim", "IT", "Obq@gmail", 10000,500);
|
||||
/*
|
||||
* Vater kann auf die überschreibene Methode getGehalt() in kindklasse zugreifen
|
||||
* da er diese Methode hat.
|
||||
*/
|
||||
//System.out.println(m1.getGehalt());
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* m1 kann nicht auf die methode getBouns() in kindklasse zugreifen,
|
||||
* da er diese Methode nicht hat
|
||||
*
|
||||
* Lösung: downcasting
|
||||
*/
|
||||
if (m1 instanceof GehaltMitarbeiter) {
|
||||
GehaltMitarbeiter downcasting = (GehaltMitarbeiter) m1;
|
||||
// System.out.println(downcasting.getBouns());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package oop;
|
||||
|
||||
public class Test {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,45 @@
|
|||
package oop.TypesofRealtionship;
|
||||
|
||||
public class Abteilung {
|
||||
|
||||
private int depNo;
|
||||
private String depName;
|
||||
|
||||
|
||||
public Abteilung(int depNo, String depName) {
|
||||
|
||||
this.depNo = depNo;
|
||||
this.depName = depName;
|
||||
}
|
||||
|
||||
public Abteilung() { }
|
||||
|
||||
|
||||
|
||||
|
||||
public int getDepNo() {
|
||||
return depNo;
|
||||
}
|
||||
|
||||
public void setDepNo(int depNo) {
|
||||
this.depNo = depNo;
|
||||
}
|
||||
|
||||
public String getDepName() {
|
||||
return depName;
|
||||
}
|
||||
|
||||
public void setDepName(String depName) {
|
||||
this.depName = depName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Abteilung [depNo=" + depNo + ", depName=" + depName + "]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package oop.TypesofRealtionship;
|
||||
|
||||
public class Mitarbeiter {
|
||||
|
||||
private int id;
|
||||
private double gehalt;
|
||||
/*
|
||||
* Relationships = Composition (Strong) warum?
|
||||
* weil ein Mitarbeiter ohne Information nicht existieren darf
|
||||
*/
|
||||
private PersonalInformation personalInformation;
|
||||
/*
|
||||
* Relationships = Aggregation (waek) warum?
|
||||
* weil ein Mitarbeiter ohne Abteilung existieren darf
|
||||
*/
|
||||
private Abteilung abteilung;
|
||||
|
||||
public Mitarbeiter(int id, double gehalt,String vorname, String mittelname, String nachname, String kontonummer,String nationaläty, int geburts, Abteilung abteilung) {
|
||||
this.id = id;
|
||||
this.gehalt = gehalt;
|
||||
/*
|
||||
* PersonalInformation = hier handelt es sich um Coposition, weil ich einen neuen Speicher in Class Mitarbeiter mit (new) reserviere
|
||||
* also Mitarbeiter kann nur mit Personalinformation existieren
|
||||
*/
|
||||
this.personalInformation = new PersonalInformation(vorname,mittelname,nachname,kontonummer, nationaläty,geburts) ;
|
||||
|
||||
/*
|
||||
* Abteilung class ist unabhängig von der Class Mitarbeiter (Siehe main Methode)
|
||||
*/
|
||||
this.abteilung = abteilung;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Mitarbeiter [id=" + id + ", gehalt=" + gehalt + ", personalInformation=" + personalInformation
|
||||
+ ", abteilungName=" + abteilung.getDepName() +", abteilungNummer=" + abteilung.getDepNo() + "]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package oop.TypesofRealtionship;
|
||||
|
||||
public class PersonalInformation {
|
||||
|
||||
private String vorname;
|
||||
private String mittelname;
|
||||
private String nachname;
|
||||
private String kontonummer;
|
||||
private String nationaläty;
|
||||
private int geburtstag;
|
||||
|
||||
public PersonalInformation(String vorname, String mittelname, String nachname, String kontonummer,String nationaläty, int geburtstag) {
|
||||
this.vorname = vorname;
|
||||
this.mittelname = mittelname;
|
||||
this.nachname = nachname;
|
||||
this.kontonummer = kontonummer;
|
||||
this.nationaläty = nationaläty;
|
||||
this.geburtstag = geburtstag;
|
||||
}
|
||||
|
||||
public PersonalInformation() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PersonalInformation [vorname=" + vorname + ", mittelname=" + mittelname + ", nachname=" + nachname
|
||||
+ ", kontonummer=" + kontonummer + ", nationaläty=" + nationaläty + ", geburtstag=" + geburtstag + "]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package oop.TypesofRealtionship;
|
||||
|
||||
public class Test {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Abteilung ab1 = new Abteilung(12,"IT");// wenn das Objekt Mitarbeiter zerstört wird, bleibt das Objekt abteilung in Ordnung
|
||||
|
||||
Mitarbeiter m1 = new Mitarbeiter(1,2500,"Obai","Obai","Albek","112222", "Syria",1995,ab1);
|
||||
|
||||
System.out.print(ab1);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,113 @@
|
|||
package oop.Verebung;
|
||||
|
||||
/*Verebung Arten in Java:
|
||||
*
|
||||
* Verebungklasse erbt defaultvalue vom Klasse Object, die ist in Java Automatisch
|
||||
*
|
||||
*
|
||||
* 1. Single Verebung : ( B -> A ) Class B erbt von Class A
|
||||
* 2. Miultilever Verebung:(C-> B -> A ) Class C erbt von Class B und Class B erbt von Class A
|
||||
* 3. Hierarchical Verebung: ( B -> A und C -> A) Class B erbt von A und C von A
|
||||
*
|
||||
* Wichtig: Muliverebung ist in Java nicht unterstützt
|
||||
* Lösungsmöglichkeit (Interface) also mit Interface kann
|
||||
* ( B -> A und B -> C)
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* verebung mit schlüsselwort extends
|
||||
* Kindklasse ruft ihre constructor und ihre VaterKonstroktor
|
||||
* constructor kann nicht verebt werden aber wir von kindklasse aufgerufen
|
||||
* also kindklasse gibt Parentconstructor und ihre constructor aus
|
||||
*
|
||||
*/
|
||||
public class Verebung {
|
||||
|
||||
protected String name;
|
||||
protected String emailAdresse;
|
||||
protected String phone;
|
||||
protected String wohnung;
|
||||
protected String adresse;
|
||||
protected int gerbutstag;
|
||||
|
||||
|
||||
public Verebung() {
|
||||
|
||||
System.out.println("Partentklasse");
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Verebung(String name,String emailAdresse,String phone, String wohnung, String adresse,int gerbutstag) {
|
||||
this.name = name;
|
||||
this.emailAdresse = emailAdresse;
|
||||
this.phone = phone;
|
||||
this.wohnung = wohnung;
|
||||
this.adresse = adresse;
|
||||
this.gerbutstag = gerbutstag;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
public String getEmailAdresse() {
|
||||
return emailAdresse;
|
||||
}
|
||||
|
||||
|
||||
public void setEmailAdresse(String emailAdresse) {
|
||||
this.emailAdresse = emailAdresse;
|
||||
}
|
||||
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
|
||||
public String getWohnung() {
|
||||
return wohnung;
|
||||
}
|
||||
|
||||
|
||||
public void setWohnung(String wohnung) {
|
||||
this.wohnung = wohnung;
|
||||
}
|
||||
|
||||
|
||||
public String getAdresse() {
|
||||
return adresse;
|
||||
}
|
||||
|
||||
|
||||
public void setAdresse(String adresse) {
|
||||
this.adresse = adresse;
|
||||
}
|
||||
|
||||
|
||||
public int getGerbutstag() {
|
||||
return gerbutstag;
|
||||
}
|
||||
|
||||
|
||||
public void setGerbutstag(int gerbutstag) {
|
||||
this.gerbutstag = gerbutstag;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package oop.Verebung;
|
||||
|
||||
public class Verebung2 extends Verebung {
|
||||
|
||||
String projktName;
|
||||
|
||||
public Verebung2(String name,String emailAdresse,String phone, String wohnung, String adresse,int gerbutstag,String projktName) {
|
||||
/*
|
||||
* wichtig: Super soll erste geschrieben werden
|
||||
* Super benutzen wir nur für Parentklass in seinem Kindklass
|
||||
*
|
||||
* Also ist falsch:
|
||||
* this.projktName = projktName;
|
||||
* super(name,emailAdresse,phone, wohnung,adresse,gerbutstag);
|
||||
*
|
||||
* Das geht auch:
|
||||
* super.attribute
|
||||
* super.methode
|
||||
*/
|
||||
|
||||
|
||||
//super(); // default constructor aufrufen
|
||||
super(name,emailAdresse,phone, wohnung,adresse,gerbutstag);// constructor mit Argumenten aufrufen
|
||||
this.projktName = projktName;
|
||||
}
|
||||
|
||||
public String getprojktName() {
|
||||
|
||||
|
||||
return projktName;
|
||||
}
|
||||
|
||||
public void setprojktName(String projktName) {
|
||||
|
||||
this.projktName = projktName;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package oop.Verebung;
|
||||
|
||||
public class Verebung3 extends Verebung2 {
|
||||
|
||||
public Verebung3(String name,String emailAdresse,String phone, String wohnung, String adresse,int gerbutstag,String projktName) {
|
||||
super(name,emailAdresse,phone, wohnung,adresse,gerbutstag,projktName);// constructor mit Argumenten aufrufen
|
||||
System.out.println("Kindklasse 2");
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue