diff --git a/Programmierung2/src/GUIAnwendungen/Beispiele/ButtonBeispiel.java b/Programmierung2/src/GUIAnwendungen/Beispiele/ButtonBeispiel.java index 1899f87..c933e12 100644 --- a/Programmierung2/src/GUIAnwendungen/Beispiele/ButtonBeispiel.java +++ b/Programmierung2/src/GUIAnwendungen/Beispiele/ButtonBeispiel.java @@ -9,12 +9,12 @@ import java.awt.event.ActionListener; public class ButtonBeispiel { - static JFrame frame = new JFrame("JButton demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس - static JButton plus_button = new JButton("+1"); // plus_button إسمه Button هنا أنشأنا - static JButton minus_button = new JButton("-1"); // minus_button إسمه Button هنا أنشأنا - static JLabel label = new JLabel("0"); // label إسمه Label هنا أنشأنا + static JFrame frame = new JFrame("JButton demo"); + static JButton plus_button = new JButton("+1"); + static JButton minus_button = new JButton("-1"); + static JLabel label = new JLabel("0"); - static int counter = 0; // سنستخدم هذه المتغير كعداد + static int counter = 0; public static void main(String[] args) { @@ -24,6 +24,13 @@ public class ButtonBeispiel { label.setText("" + (++counter)); // plus_button عند النقر على الـ label واحداً ثم توضع كنص للـ counter ستزيد قيمة المتغير } }); + + plus_button.addActionListener(e -> label.setText("" + (++counter))); + plus_button.addActionListener(e -> new Test()); + plus_button.addActionListener(e -> test()); + + plus_button.addActionListener(e -> new ButtonBeispiel().new InnereKalsse()); + minus_button.addActionListener(new ActionListener() { // minus_button هنا نضع الأوامر التي نريد تنفيذها عند النقر على الزر @Override @@ -42,5 +49,33 @@ public class ButtonBeispiel { frame.setVisible(true); // هنا جعلنا النافذة مرئية } + + public static void test() { + + class Test{ + + Test(){ + System.out.println("Lokale Klasse"); + } + } + + new Test(); + } + + public class InnereKalsse{ + InnereKalsse(){ + System.out.println("Hallo InnereKalsse"); + } + } +} + +class Test{ + + Test(){ + System.out.println("Hallo Test"); + } + + + } \ No newline at end of file diff --git a/Programmierung2/src/Lambda/FunctionalInterfaceTest.java b/Programmierung2/src/Lambda/FunctionalInterfaceTest.java new file mode 100644 index 0000000..8b51a0e --- /dev/null +++ b/Programmierung2/src/Lambda/FunctionalInterfaceTest.java @@ -0,0 +1,37 @@ +package Lambda; + +public class FunctionalInterfaceTest { + + public static void main(String[] args) { + + berechneFunktion f = (a,b) -> a+b; + + System.out.println(f.berechne(12, 12)); + + SwissKnife d = name -> System.out.println("obai");; + + + + } + +} + + +interface berechneFunktion{ + + int berechne(int a , int b); +} + +@FunctionalInterface +interface SwissKnife { + + default int compare(int i1, int i2) { + return i1 - i2; + } + + static void run() { + System.out.println("Running !"); + } + + void welcomify(String name); +} \ No newline at end of file diff --git a/Programmierung2/src/OnlineShop/Main/Main.java b/Programmierung2/src/OnlineShop/Main/Main.java index 4577f66..d21f669 100644 --- a/Programmierung2/src/OnlineShop/Main/Main.java +++ b/Programmierung2/src/OnlineShop/Main/Main.java @@ -1,5 +1,4 @@ package OnlineShop.Main; - import OnlineShop.UI.TUI; import OnlineShop.domain.ExceptionsKlassen.*; diff --git a/Programmierung2/src/OnlineShop/UI/TUI.java b/Programmierung2/src/OnlineShop/UI/TUI.java index f20c9d7..865292c 100644 --- a/Programmierung2/src/OnlineShop/UI/TUI.java +++ b/Programmierung2/src/OnlineShop/UI/TUI.java @@ -19,7 +19,7 @@ public class TUI { private void startProgramm() throws Exception { System.out.println("<< Willkommen in meinem Online Shop >>"); System.out.println(); - if (kaufhalle.produkteLaden()) { + if (kaufhalle.produkteLadenImSystem()) { System.out.println("Meine aktuelle Produkte: "); for (String p : kaufhalle.zeigeProdukte()) @@ -34,124 +34,119 @@ public class TUI { while (programmAktive) { System.out.println("Wählen Sie bitte ein Option aus: "); System.out.println("1. Produkte auswählen"); - System.out.println("2. Alle Produkte im Warenkorb anzeigen"); - System.out.println("3. Einkauf Beenden!"); System.out.print("> "); optionAuswahl = eingabe.nextLine(); switch (optionAuswahl) { case "1": - ProdukteAuwählenUI(); - break; - - case "2": - System.out.println("Anzahl Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); - try { - for (String p : kaufhalle.zeigeAlleProdukteImWarenkorb()) - System.out.println(p); - - System.out.println("Möchten Sie die ausgewählte Produkte bestellen Ja/Nein"); - System.out.print(">"); - String bestellung = eingabe.nextLine(); - if (bestellung.equalsIgnoreCase("ja")) { - System.out.println("Geben Sie bitte Ihren Name ein:"); - System.out.print(">"); - String name = eingabe.nextLine(); - System.out.println("Geben Sie bitte Ihren Anschrift ein:"); - System.out.print(">"); - String anschrift = eingabe.nextLine(); - try { - kaufhalle.getKundenDaten(name, anschrift); - System.out.println(kaufhalle.sendBestellung()); - System.out.println("Betrag bitte eingeben: "); - System.out.print(">"); - double betrag = eingabe.nextDouble(); - if (kaufhalle.getBetrag(betrag)) - kaufhalle.speichereBestellung(); - - - } catch (LeereEingabeException e) { - System.out.println(e.getMessage()); - } - } else - shwoOptions(); - - } catch (KeineProdukteImWarenkorb e) { - System.out.println(e.getMessage()); - } + WarenkorbEditieren(); break; } } - } - - private void ProdukteAuwählenUI() throws Exception { + + private void WarenkorbEditieren() throws Exception { boolean einkaufAktive = true; String weiterEinkaufen; - int menge; while (einkaufAktive) { - System.out.println("Wählen Sie bitte ein Option aus: "); System.out.println("1. Prpdukte auswählen und zu Ihrem Warenkorb senden"); - System.out.println("2. Prpdukte aus dem Warenkorb löschen"); - System.out.println("3. Zurück zum Hauptmenu"); System.out.print("> "); optionAuswahl = eingabe.nextLine(); - switch (optionAuswahl) { - case "1": - while (true) { - System.out.print("Name der Produkt: > "); - String produktName = eingabe.nextLine(); - - System.out.print("Menge > "); - menge = eingabe.nextInt(); - try { - kaufhalle.addProduktZuWarenkorb(produktName,menge); - for (String p : kaufhalle.zeigeProdukte()) - System.out.println(p); - } catch (ProduktNichtGefundenException e) { - System.out.println(e.getMessage()); + + switch(optionAuswahl) { + case "1": + while (true) { + System.out.print("Name der Produkt: > "); + String produktName = eingabe.nextLine(); + System.out.print("Menge > "); + int menge = eingabe.nextInt(); + try { + kaufhalle.addProduktZuWarenkorb(produktName,menge); + } catch (ProduktNichtGefundenException e) { + System.out.println(e.getMessage()); + } + + System.out.println("Weitere Produkte auswählen Ja/Nein"); + System.out.print(">"); + weiterEinkaufen = eingabe.nextLine(); + if (weiterEinkaufen.equalsIgnoreCase("ja")) + continue; + else + break; } - System.out.println( - "Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); - System.out.println("Weitere Produkte auswählen Ja/Nein"); - System.out.print(">"); - weiterEinkaufen = eingabe.nextLine(); - if (weiterEinkaufen.equalsIgnoreCase("ja")) - continue; - else - break; - } - break; - - case "2": - while (true) { - System.out.print("Name der Produkt: > "); - String produktName = eingabe.nextLine(); - if (kaufhalle.loescheProduktausWarenkorb(produktName) == true) { - System.out.println("Produkt erfolgreich gelöscht"); - System.out.println( - "Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); - } else - System.out.println("Produkt ist nicht in Ihrem Warenkorb"); - - System.out.println("Weiter Produkte aus dem Wrenkorb löschen Ja/Nein"); - System.out.print(">"); - String weitereProdukteLoeschen = eingabe.nextLine(); - if (weitereProdukteLoeschen.equalsIgnoreCase("ja")) - continue; - else - break; - } - break; - - case "3": - System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); - shwoOptions(); - break; - } } - System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); + } + + +// private void ProdukteAuwählenUI() throws Exception { +// boolean einkaufAktive = true; +// String weiterEinkaufen; +// int menge; +// while (einkaufAktive) { +// System.out.println("Wählen Sie bitte ein Option aus: "); +// System.out.println("1. Prpdukte auswählen und zu Ihrem Warenkorb senden"); +// System.out.println("2. Prpdukte aus dem Warenkorb löschen"); +// System.out.println("3. Zurück zum Hauptmenu"); +// System.out.print("> "); +// optionAuswahl = eingabe.nextLine(); +// switch (optionAuswahl) { +// case "1": +// while (true) { +// System.out.print("Name der Produkt: > "); +// String produktName = eingabe.nextLine(); +// +// System.out.print("Menge > "); +// menge = eingabe.nextInt(); +// try { +// kaufhalle.addProduktZuWarenkorb(produktName,menge); +// for (String p : kaufhalle.zeigeProdukte()) +// System.out.println(p); +// } catch (ProduktNichtGefundenException e) { +// System.out.println(e.getMessage()); +// } +// System.out.println( +// "Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); +// System.out.println("Weitere Produkte auswählen Ja/Nein"); +// System.out.print(">"); +// weiterEinkaufen = eingabe.nextLine(); +// if (weiterEinkaufen.equalsIgnoreCase("ja")) +// continue; +// else +// break; +// } +// break; +// +// case "2": +// while (true) { +// System.out.print("Name der Produkt: > "); +// String produktName = eingabe.nextLine(); +//// if (kaufhalle.loescheProduktausWarenkorb(produktName) == true) { +//// System.out.println("Produkt erfolgreich gelöscht"); +//// System.out.println( +//// "Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); +//// } else +//// System.out.println("Produkt ist nicht in Ihrem Warenkorb"); +// +// System.out.println("Weiter Produkte aus dem Wrenkorb löschen Ja/Nein"); +// System.out.print(">"); +// String weitereProdukteLoeschen = eingabe.nextLine(); +// if (weitereProdukteLoeschen.equalsIgnoreCase("ja")) +// continue; +// else +// break; +// } +// break; +// +// case "3": +// System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); +// shwoOptions(); +// break; +// +// } +// } +// System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); +// } } diff --git a/Programmierung2/src/OnlineShop/domain/Bestellung.java b/Programmierung2/src/OnlineShop/domain/Bestellung.java index f9b3e7f..c7b00ca 100644 --- a/Programmierung2/src/OnlineShop/domain/Bestellung.java +++ b/Programmierung2/src/OnlineShop/domain/Bestellung.java @@ -1,47 +1,48 @@ package OnlineShop.domain; -import java.sql.Date; -import java.time.LocalDate; +import java.util.Date; import java.util.ArrayList; public class Bestellung { - + private double kosten; + private String formattedkosten; + private String kundeName; private int gewicht; private double versandKosten; - private ArrayList tempProdukt; - private LocalDate date; - - public void gesamtKosten(ArrayList produkts) { - tempProdukt = produkts; + private ArrayList tempProdukt; + private Date date; + + public Bestellung(ArrayList produkts, String kundeName) { + this.tempProdukt = produkts; + this.kundeName = kundeName; } public double getKosten() { - kosten = 0; - - for (Produkt p : tempProdukt) - kosten += p.getPreis(); - - String formatted = String.format("%.2f", kosten); - formatted = formatted.replace(",", "."); // Ersetzt das Komma durch einen Punkt - double formattedDouble = Double.parseDouble(formatted); - - return formattedDouble; + for (WarenkorbMenge p : tempProdukt) { + kosten += p.getProdukt().getPreis(); + kosten *= p.getMenge(); + } + formattedkosten = String.format("%.2f", kosten); + formattedkosten = formattedkosten.replace(",", "."); // Ersetzt das Komma durch einen Punkt + + return Double.parseDouble(formattedkosten); } public int getGewicht() { gewicht = 0; - for (Produkt p : tempProdukt) - gewicht += p.getGewicht(); - + for (WarenkorbMenge p : tempProdukt) { + gewicht += p.getProdukt().getGewicht(); + gewicht *= p.getMenge(); + } + return gewicht; } public double getVersandKosten() { getGewicht(); - versandKosten = 0; double gewichtInKg = gewicht / 1000.0; - System.out.println("GeWicht: " + gewichtInKg); + System.out.println("gewichtInKg: " + gewichtInKg); if (gewichtInKg < 1) versandKosten += 5; @@ -54,30 +55,26 @@ public class Bestellung { return versandKosten; } - + public double getGesamtKosten() { - double gesmatKosten = kosten + versandKosten; + double gesmatKosten = kosten + versandKosten; String formatted = String.format("%.2f", gesmatKosten); - formatted = formatted.replace(",", "."); // Ersetzt das Komma durch einen Punkt - double formattedDouble = Double.parseDouble(formatted); - - return formattedDouble; - + formatted = formatted.replace(",", "."); // Ersetzt das Komma durch einen Punkt + return Double.parseDouble(formatted); } - public LocalDate getDate() { + public Date getDate() { return date; } - public void setDate(LocalDate date) { + public void setDate(Date date) { this.date = date; } @Override public String toString() { - return "kosten=" + kosten + ", gewicht=" + gewicht + ", versandKosten=" + versandKosten - + ", tempProdukt=" + tempProdukt + ", date=" + date; + return "Kunde= " + kundeName + ", kosten=" + formattedkosten + ", versandKosten=" + versandKosten + ", date=" + + date; } - - + } diff --git a/Programmierung2/src/OnlineShop/domain/JTest/JTest.java b/Programmierung2/src/OnlineShop/domain/JTest/JTest.java index 2cd5bee..000d52a 100644 --- a/Programmierung2/src/OnlineShop/domain/JTest/JTest.java +++ b/Programmierung2/src/OnlineShop/domain/JTest/JTest.java @@ -4,10 +4,10 @@ import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.*; import OnlineShop.domain.*; -import OnlineShop.domain.ExceptionsKlassen.*; class JTest { Kaufhalle kaufhalle; + @BeforeEach void setUp() throws Exception { kaufhalle = new Kaufhalle(); @@ -15,17 +15,22 @@ class JTest { @Test void test() throws Exception { + kaufhalle.produkteLadenImSystem(); + kaufhalle.addProduktZuWarenkorb("hut", 10); - kaufhalle.produkteLaden(); - kaufhalle.addProduktZuWarenkorb("Hut",5); - kaufhalle.addProduktZuWarenkorb("Dosenwurst",6); - kaufhalle.addProduktZuWarenkorb("Hut",5); - - for (String p : kaufhalle.zeigeAlleProdukteImWarenkorb()) - System.out.println(p); - + kaufhalle.addProduktZuWarenkorb("hut", 5); + kaufhalle.printTest(); + kaufhalle.loginKunde("Obai", "Mannheim"); + kaufhalle.bestellen(); + kaufhalle.speichereBestellung(); + kaufhalle.addProduktZuWarenkorb("hut", 5); + kaufhalle.printTest(); + kaufhalle.loginKunde("Omar", "Mannheim"); + kaufhalle.bestellen(); + kaufhalle.speichereBestellung(); + kaufhalle.printbestellung(); } } diff --git a/Programmierung2/src/OnlineShop/domain/Kaufhalle.java b/Programmierung2/src/OnlineShop/domain/Kaufhalle.java index 1e03093..5a0fe18 100644 --- a/Programmierung2/src/OnlineShop/domain/Kaufhalle.java +++ b/Programmierung2/src/OnlineShop/domain/Kaufhalle.java @@ -1,121 +1,116 @@ package OnlineShop.domain; -import java.io.File; import java.io.FileNotFoundException; -import java.text.SimpleDateFormat; -import java.time.LocalDate; import java.util.*; import OnlineShop.domain.ExceptionsKlassen.*; public class Kaufhalle { private ArrayList produkte; - private ArrayList Bestellungen; + private ArrayList bestellungen; private Kunde kunde; - private Bestellung aktuellBestelung; + private Bestellung akteulleBestellung; public Kaufhalle() throws FileNotFoundException { this.produkte = new ArrayList<>(); this.kunde = new Kunde(); - this.Bestellungen = new ArrayList<>(); + this.bestellungen = new ArrayList<>(); } - public boolean produkteLaden() throws FileNotFoundException { - Scanner sc = new Scanner(new File( - "C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\OnlineShop\\domain\\produkte.csv")); - - int cnt = 0; - while (sc.hasNextLine()) { - String produkt = sc.nextLine(); - - if (produkt.startsWith("Name")) - continue; - - String[] spalten = produkt.split(";"); - spalten[2] = spalten[2].replaceAll(",", "."); - spalten[3] = spalten[3].substring(0, spalten[3].indexOf(",")); - spalten[4] = spalten[4].substring(0, spalten[4].indexOf(",")); - - produkte.add(new Produkt(spalten[0], spalten[1], Float.parseFloat(spalten[2]), Integer.parseInt(spalten[3]), - Integer.parseInt(spalten[4]))); - cnt++; - } - - sc.close(); - return true; + public boolean produkteLadenImSystem() throws FileNotFoundException { + return produkteLaden.produkteLaden(produkte); } - public boolean addProduktZuWarenkorb(String Produktname, int menge) throws ProduktNichtGefundenException,Exception { + public boolean addProduktZuWarenkorb(String Produktname, int menge) + throws ProduktNichtGefundenException, Exception { Produkt neueProdukt = findeProduktImKaufhalle(Produktname); if (neueProdukt == null) throw new ProduktNichtGefundenException("Produkt ist nicht Verfügbar!"); - - if (menge > neueProdukt.getBestand()) - throw new Exception ("Errore"); - - for (int i = 0; i < menge; i++) - kunde.getWarenKorb().addProdukt(neueProdukt); - neueProdukt.setBestand(menge); + if (menge > neueProdukt.getBestand()) + throw new Exception("Wir haben nicht genug Produktmenge im Lager!"); + + WarenkorbMenge wp = kunde.getWarenKorb().findWarenkorbMenge(Produktname); + if (wp != null) + wp.setMenge(wp.getMenge() + menge); + + else { + WarenkorbMenge neueWarenkorbMenge = new WarenkorbMenge(); + neueWarenkorbMenge.addProdukt(neueProdukt, menge); + kunde.getWarenKorb().addProdukt(neueWarenkorbMenge); + } + + neueProdukt.setBestand(neueProdukt.getBestand() - menge); return true; } - public boolean loescheProduktausWarenkorb(String Produktname) { - return kunde.getWarenKorb().loescheprodukt(Produktname); + public boolean mengeaendern(String Produktname, int menge) throws ProduktNichtGefundenException { + WarenkorbMenge akteulleProdukt = kunde.getWarenKorb().findWarenkorbMenge(Produktname); + + if (akteulleProdukt == null) + throw new ProduktNichtGefundenException("Sie haben das Produkt nicht in Ihrem Warenkorb"); + + if (menge > akteulleProdukt.getProdukt().getBestand()) + throw new ProduktNichtGefundenException("Wir haben nicht genug Produktmenge im Lager!"); + + akteulleProdukt.setMenge(menge); + akteulleProdukt.getProdukt().setBestand(akteulleProdukt.getProdukt().getBestand() - menge); + return true; + } + + public boolean loescheProdukt(String Produktname) throws ProduktNichtGefundenException { + WarenkorbMenge produktToBERemoved = kunde.getWarenKorb().findWarenkorbMenge(Produktname); + + if (produktToBERemoved == null) + throw new ProduktNichtGefundenException("Sie haben das Produkt nicht in Ihrem Warenkorb"); + + return kunde.getWarenKorb().getProdukte().remove(produktToBERemoved); + } + + public boolean bestellen() throws ProduktNichtGefundenException { + if (kunde.getWarenKorb().getProdukte().size() == 0) + throw new ProduktNichtGefundenException("Sie haben das Produkt nicht in Ihrem Warenkorb"); + + akteulleBestellung = new Bestellung(kunde.getWarenKorb().getProdukte(), kunde.getName()); + akteulleBestellung.getKosten(); + akteulleBestellung.getVersandKosten(); + kunde.getWarenKorb().getProdukte().clear(); + + return true; + } + + public boolean speichereBestellung() { + this.akteulleBestellung.setDate(new Date()); + bestellungen.add(akteulleBestellung); + return true; + } + + public boolean loginKunde(String name, String anschrift) throws LeereEingabeException { + + if (name.isEmpty() || anschrift.isEmpty()) + throw new LeereEingabeException("Sie müssen Name sowie anschrift eingeben"); + + kunde.setName(name); + kunde.setAnschrift(anschrift); + return true; + } + + private Produkt findeProduktImKaufhalle(String Produktname) { + + for (Produkt p : produkte) + if (p.getName().equalsIgnoreCase(Produktname)) + return p; + + return null; } public ArrayList zeigeProdukte() { ArrayList allProdukte = new ArrayList<>(); int index = 1; for (Produkt p : produkte) - allProdukte.add(index++ + ".Produkt: " + p.print()); + allProdukte.add(index++ + ".Produkt: " + p.toString()); return allProdukte; } - private Produkt findeProduktImKaufhalle(String name) { - - for (Produkt p : produkte) - if (p.getName().equalsIgnoreCase(name)) - return p; - - return null; - } - - public int getAnzahlDerAusgewählteProdukte() { - return kunde.getWarenKorb().getAnzahlProdkute(); - } - - public ArrayList zeigeAlleProdukteImWarenkorb() throws KeineProdukteImWarenkorb { - return kunde.getWarenKorb().zeigeProdukteImWarenKorb(); - } - - public String sendBestellung() { - aktuellBestelung = new Bestellung(); - aktuellBestelung.gesamtKosten(kunde.getWarenKorb().getProdukte()); - - return "Produkts Kosten = " + aktuellBestelung.getKosten() + "\n" + "Versand Kosten = " - + aktuellBestelung.getVersandKosten() + "\n" + "GesamtKosten(Produkts Ksoten + Versand Kosten) = " - + aktuellBestelung.getGesamtKosten(); - - } - - public void getKundenDaten(String name, String anschrift) throws LeereEingabeException { - if (!name.isEmpty() && !name.isEmpty()) { - kunde.setName(name); - kunde.setAnschrift(anschrift); - return; - } else - throw new LeereEingabeException("Sie müssen Ihren Name sowie Ihren Anschrift eingeben"); - } - - public boolean getBetrag(double betrag) { - System.out.println(aktuellBestelung.getGesamtKosten()); - return betrag == aktuellBestelung.getGesamtKosten(); - } - - public void speichereBestellung() { - aktuellBestelung.setDate(LocalDate.now()); - Bestellungen.add(aktuellBestelung); - } } diff --git a/Programmierung2/src/OnlineShop/domain/Kunde.java b/Programmierung2/src/OnlineShop/domain/Kunde.java index 142d0cd..04c364a 100644 --- a/Programmierung2/src/OnlineShop/domain/Kunde.java +++ b/Programmierung2/src/OnlineShop/domain/Kunde.java @@ -1,22 +1,19 @@ package OnlineShop.domain; public class Kunde { - + private String name; private String anschrift; private Warenkorb warenKorb; - private double produktKosten; -; - + public Kunde(String name, String anschrift) { this.name = name; this.anschrift = anschrift; - this.produktKosten = 0.0; this.warenKorb = new Warenkorb(); } - + public Kunde() { - this(null,null); + this(null, null); } public String getName() { @@ -38,13 +35,4 @@ public class Kunde { public Warenkorb getWarenKorb() { return warenKorb; } - - public double getProduktKosten() { - return produktKosten; - } - - public void setProduktKosten(double produktKosten) { - this.produktKosten = produktKosten; - } - } diff --git a/Programmierung2/src/OnlineShop/domain/Produkt.java b/Programmierung2/src/OnlineShop/domain/Produkt.java index 22bb05a..4869d5d 100644 --- a/Programmierung2/src/OnlineShop/domain/Produkt.java +++ b/Programmierung2/src/OnlineShop/domain/Produkt.java @@ -6,7 +6,7 @@ public class Produkt { private double preis; private int gewicht; private int bestand; - + public Produkt(String name, String beschreibung, double preis, int gewicht, int bestand) { this.name = name; @@ -35,20 +35,15 @@ public class Produkt { public int getBestand() { return bestand; } - + public void setBestand(int bestand) { - this.bestand -= bestand; + this.bestand = bestand; } - - public String print() { - return String.format("name=%s, beschreibung=%s, preis=%.2f, gewicht=%d, bestand=%d", - name, beschreibung, preis, gewicht, bestand); - } - - public String printImWarenkorb() { - return String.format("name=%s, beschreibung=%s, preis=%.2f, gewicht=%d", - name, beschreibung, preis, gewicht); + @Override + public String toString() { + return String.format("name=%s, beschreibung=%s, preis=%.2f, gewicht=%d, bestand=%d", name, beschreibung, preis, + gewicht, bestand); } } \ No newline at end of file diff --git a/Programmierung2/src/OnlineShop/domain/Warenkorb.java b/Programmierung2/src/OnlineShop/domain/Warenkorb.java index c299c8d..5b5a306 100644 --- a/Programmierung2/src/OnlineShop/domain/Warenkorb.java +++ b/Programmierung2/src/OnlineShop/domain/Warenkorb.java @@ -5,75 +5,27 @@ import java.util.ArrayList; import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb; public class Warenkorb { - private ArrayList produkte; - private int anzahlProdkute; + private ArrayList produkte; Warenkorb() { - produkte = new ArrayList<>(); + this.produkte = new ArrayList<>(); } - public boolean addProdukt(Produkt neueProdukt) { - produkte.add(neueProdukt); - anzahlProdkute++; + public boolean addProdukt(WarenkorbMenge neueWarenkorbMenge) { + produkte.add(neueWarenkorbMenge); return true; } - public boolean loescheprodukt(String name) { - Produkt produktZuLoeschen = findeProduktImWarenkorb(name); - if (produktZuLoeschen == null) - return false; - - produkte.remove(produktZuLoeschen); - anzahlProdkute--; - return true; - } - - public Produkt findeProduktImWarenkorb(String name) { - - for (Produkt p : produkte) - if (p.getName().equalsIgnoreCase(name)) - return p; - - return null; - } - - public ArrayList zeigeProdukteImWarenKorb() throws KeineProdukteImWarenkorb { - if (produkte.size() == 0) - throw new KeineProdukteImWarenkorb("Momentan haben Sie Keine Produkte in Ihrem Warenkorb"); - - ArrayList allProdukte = new ArrayList<>(); - ArrayList merker = new ArrayList<>(); - int anzahl = 0; - int index = 1; - boolean istGespeichert = false; - for (int i = 0; i < produkte.size(); i++) { - anzahl = 0; - istGespeichert = false; - for (int j = 0; j < merker.size(); j++) - if (produkte.get(i).equals(merker.get(j))) { - istGespeichert = true; - break; - } - - if (!istGespeichert) { - merker.add(produkte.get(i)); - for (int h = 0; h < produkte.size(); h++) - if (produkte.get(i) == produkte.get(h)) - anzahl++; - - allProdukte.add(index++ + ".Produkt: " + produkte.get(i).print() + ". ((Anzahl: " + anzahl + "))"); - } - } - - return allProdukte; - } - - public int getAnzahlProdkute() { - return anzahlProdkute; - } - - public ArrayList getProdukte() { + public ArrayList getProdukte() { return produkte; } + public WarenkorbMenge findWarenkorbMenge(String name) { + + for (WarenkorbMenge wp : produkte) + if (wp.getProdukt().getName().equalsIgnoreCase(name)) + return wp; + + return null; + } } diff --git a/Programmierung2/src/OnlineShop/domain/WarenkorbMenge.java b/Programmierung2/src/OnlineShop/domain/WarenkorbMenge.java new file mode 100644 index 0000000..aa5579f --- /dev/null +++ b/Programmierung2/src/OnlineShop/domain/WarenkorbMenge.java @@ -0,0 +1,35 @@ +package OnlineShop.domain; + +public class WarenkorbMenge { + private Produkt produkt; + private int menge; + + public void addProdukt(Produkt p, int menge) { + + this.produkt = p; + this.menge = menge; + + } + + public Produkt getProdukt() { + return produkt; + } + + public void setProdukt(Produkt produkt) { + this.produkt = produkt; + } + + public int getMenge() { + return menge; + } + + public void setMenge(int menge) { + this.menge = menge; + } + + @Override + public String toString() { + return produkt.toString() + ", menge=" + menge; + } + +} diff --git a/Programmierung2/src/OnlineShop/domain/produkteLaden.java b/Programmierung2/src/OnlineShop/domain/produkteLaden.java new file mode 100644 index 0000000..ac6fc41 --- /dev/null +++ b/Programmierung2/src/OnlineShop/domain/produkteLaden.java @@ -0,0 +1,34 @@ +package OnlineShop.domain; + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.Scanner; + +public class produkteLaden { + + public static boolean produkteLaden(ArrayList produkte) throws FileNotFoundException { + Scanner sc = new Scanner(new File( + "C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\OnlineShop\\domain\\produkte.csv")); + + int cnt = 0; + while (sc.hasNextLine()) { + String produkt = sc.nextLine(); + + if (produkt.startsWith("Name")) + continue; + + String[] spalten = produkt.split(";"); + spalten[2] = spalten[2].replaceAll(",", "."); + spalten[3] = spalten[3].substring(0, spalten[3].indexOf(",")); + spalten[4] = spalten[4].substring(0, spalten[4].indexOf(",")); + + produkte.add(new Produkt(spalten[0], spalten[1], Float.parseFloat(spalten[2]), Integer.parseInt(spalten[3]), + Integer.parseInt(spalten[4]))); + cnt++; + } + + sc.close(); + return true; + } +} diff --git a/Programmierung2/src/OnlineShop/produkte.csv b/Programmierung2/src/OnlineShop/produkte.csv deleted file mode 100644 index a3a74dd..0000000 --- a/Programmierung2/src/OnlineShop/produkte.csv +++ /dev/null @@ -1,7 +0,0 @@ -Name;Beschreibung;Preis;Gewicht;Bestand -Gieskanne;Premium Gärtner-Gieskanne;3,99;250,00;17,00 -Hut;Perfekt für die Hutablage;21,98;120,00;123,00 -Dosenwurst;LWWRSCHT: das Pfälzer Original, nur kurz im Angebot;3,99;200,00;7,00 -Gartenschlauch;10 m, dehnbar bis auf die doppelte Länge;18,99;1300,00;23,00 -Schraubenset;100 zufällig ausgewählte Schrauben;2,99;287,00;99,00 -Akkuschrauber;Mit extra großem Drehmoment;25,00;900,00;13,00 \ No newline at end of file diff --git a/Programmierung2/src/VorlesungsFolien/Verebung/Firma.java b/Programmierung2/src/VorlesungsFolien/Verebung/Firma.java index 6a240d7..3ad39c2 100644 --- a/Programmierung2/src/VorlesungsFolien/Verebung/Firma.java +++ b/Programmierung2/src/VorlesungsFolien/Verebung/Firma.java @@ -41,17 +41,18 @@ public class Firma { //ma = mi; nein, weil nicht jeder mitarbeiter ein manager ist! - Mitarbeiter mitarbeiter = new Mitarbeiter("Müller", "27.10.1972"); - Manager manager = new Manager("Stromberg", "01.02.1970", "Finanzen"); + Firma firma = new Firma(); - + Mitarbeiter mitarbeiter2 = new Mitarbeiter("Mayer", "12.12.1999"); + Mitarbeiter mitarbeiter = new Mitarbeiter("Müller", "27.10.1972"); + Manager manager = new Manager("Stromberg", "01.02.1970", "Finanzen"); firma.mitarbeiterEinstellen(mitarbeiter); firma.mitarbeiterEinstellen(manager); - Mitarbeiter mitarbeiter2 = new Mitarbeiter("Mayer", "12.12.1999"); - firma.mitarbeiterEinstellen(mitarbeiter); + + firma.mitarbeiterEinstellen(mitarbeiter2); /* geht nicht! Warum? * weil nicht jeder mitarbeiter ein manager ist! @@ -61,17 +62,22 @@ public class Firma { //weil jeder manager ist ein mitarbeiter - mitarbeiter = manager;// Ja geht: +// mitarbeiter = manager;// Ja geht: System.out.println("Polymorphismus"); System.out.println(mitarbeiter.getGehalt()); System.out.println(manager.getAbteilung()); // System.out.println(mitarbeiter.getAbteilung()); // geht nicht, wg. statischem Typ Mitarbeiter - if (mitarbeiter instanceof Manager) - System.out.println( ((Manager)mitarbeiter).getAbteilung() ); + + System.out.println("Geht "); + + Manager me = ((Manager)mitarbeiter); + +// mitarbeiter2 = manager;// Ja geht: + Manager md =((Manager)mitarbeiter2); // ClassCastException zur laufzeit, weil ich if (mitarbeiter instanceof Manager) verwenden soll - ((Manager)mitarbeiter2).getAbteilung(); + // WICHTIG: //instanceof prüft, ob die klasse manager die klasse mitarbeiter erbt diff --git a/Programmierung2/src/oop/File-Handling.odt b/Programmierung2/src/oop/File-Handling.odt deleted file mode 100644 index aa9dbe6..0000000 Binary files a/Programmierung2/src/oop/File-Handling.odt and /dev/null differ diff --git a/Programmierung2/src/oop/FileHandling/File-Handling.pdf b/Programmierung2/src/oop/FileHandling/File-Handling.pdf new file mode 100644 index 0000000..ea4b1f7 Binary files /dev/null and b/Programmierung2/src/oop/FileHandling/File-Handling.pdf differ diff --git a/Programmierung2/src/oop/Interface/MainClass.java b/Programmierung2/src/oop/Interface/MainClass.java new file mode 100644 index 0000000..d4dd2a8 --- /dev/null +++ b/Programmierung2/src/oop/Interface/MainClass.java @@ -0,0 +1,50 @@ +package oop.Interface; + +interface A { + + void myMethod(); +} + +class B { + + public void myMethod() { + System.out.println("My Method"); + } +} +/* + * - Die Klasse C erbt von B und implementiert A. Da B bereits eine Implementierung für myMethod() hat, + * übernimmt C diese Implementierung automatisch. Die Methode myMethod() muss daher in C nicht erneut implementiert werden, + * weil sie über die Vererbung von B zur Verfügung gestellt wird. + */ +class C extends B implements A { + +} + +interface X +{ + void methodX(); +} + +/* + * - Interface methods must be implemented as public. Because, + * interface methods are public by default + * and you should not reduce the visibility of any methods while overriding. + */ +class Y implements X +{ + public void methodX() + { + System.out.println("Method X"); + } +} + + + +public class MainClass { + + public static void main(String[] args){ + A a = new C(); + + a.myMethod(); + } +} \ No newline at end of file diff --git a/Programmierung2/src/oop/Polymorphism/Polymorphism.java b/Programmierung2/src/oop/Polymorphism/Polymorphism.java index 1efe6e4..15431b1 100644 --- a/Programmierung2/src/oop/Polymorphism/Polymorphism.java +++ b/Programmierung2/src/oop/Polymorphism/Polymorphism.java @@ -26,5 +26,13 @@ public class Polymorphism { * • aber anderes Verhalten */ + /* + * Überladung vs. Überschreibung: + * + * - Bei Methodenüberladung wählt der Compiler die Methode basierend auf dem besten passenden Parameter-Typ zur Kompilierzeit. + * - Bei Methodenüberschreibung entscheidet der Compiler basierend auf der Laufzeit-Instanz, + * welche Methode aufgerufen wird. Das bezieht sich jedoch nur auf Methoden mit exakt der gleichen Signatur. + */ + }