online Shop

master
3009594 2024-10-27 00:10:00 +02:00
parent f29ef016d8
commit 33a17b38f8
18 changed files with 466 additions and 342 deletions

View File

@ -9,12 +9,12 @@ import java.awt.event.ActionListener;
public class ButtonBeispiel { public class ButtonBeispiel {
static JFrame frame = new JFrame("JButton demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس static JFrame frame = new JFrame("JButton demo");
static JButton plus_button = new JButton("+1"); // plus_button إسمه Button هنا أنشأنا static JButton plus_button = new JButton("+1");
static JButton minus_button = new JButton("-1"); // minus_button إسمه Button هنا أنشأنا static JButton minus_button = new JButton("-1");
static JLabel label = new JLabel("0"); // label إسمه Label هنا أنشأنا static JLabel label = new JLabel("0");
static int counter = 0; // سنستخدم هذه المتغير كعداد static int counter = 0;
public static void main(String[] args) { public static void main(String[] args) {
@ -25,6 +25,13 @@ public class ButtonBeispiel {
} }
}); });
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 هنا نضع الأوامر التي نريد تنفيذها عند النقر على الزر minus_button.addActionListener(new ActionListener() { // minus_button هنا نضع الأوامر التي نريد تنفيذها عند النقر على الزر
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
@ -43,4 +50,32 @@ public class ButtonBeispiel {
} }
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");
}
} }

View File

@ -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);
}

View File

@ -1,5 +1,4 @@
package OnlineShop.Main; package OnlineShop.Main;
import OnlineShop.UI.TUI; import OnlineShop.UI.TUI;
import OnlineShop.domain.ExceptionsKlassen.*; import OnlineShop.domain.ExceptionsKlassen.*;

View File

@ -19,7 +19,7 @@ public class TUI {
private void startProgramm() throws Exception { private void startProgramm() throws Exception {
System.out.println("<< Willkommen in meinem Online Shop >>"); System.out.println("<< Willkommen in meinem Online Shop >>");
System.out.println(); System.out.println();
if (kaufhalle.produkteLaden()) { if (kaufhalle.produkteLadenImSystem()) {
System.out.println("Meine aktuelle Produkte: "); System.out.println("Meine aktuelle Produkte: ");
for (String p : kaufhalle.zeigeProdukte()) for (String p : kaufhalle.zeigeProdukte())
@ -34,86 +34,39 @@ public class TUI {
while (programmAktive) { while (programmAktive) {
System.out.println("Wählen Sie bitte ein Option aus: "); System.out.println("Wählen Sie bitte ein Option aus: ");
System.out.println("1. Produkte auswählen"); 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("> "); System.out.print("> ");
optionAuswahl = eingabe.nextLine(); optionAuswahl = eingabe.nextLine();
switch (optionAuswahl) { switch (optionAuswahl) {
case "1": case "1":
ProdukteAuwählenUI(); WarenkorbEditieren();
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());
}
break; break;
} }
} }
} }
private void ProdukteAuwählenUI() throws Exception { private void WarenkorbEditieren() throws Exception {
boolean einkaufAktive = true; boolean einkaufAktive = true;
String weiterEinkaufen; String weiterEinkaufen;
int menge;
while (einkaufAktive) { 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("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("> "); System.out.print("> ");
optionAuswahl = eingabe.nextLine(); optionAuswahl = eingabe.nextLine();
switch(optionAuswahl) { switch(optionAuswahl) {
case "1": case "1":
while (true) { while (true) {
System.out.print("Name der Produkt: > "); System.out.print("Name der Produkt: > ");
String produktName = eingabe.nextLine(); String produktName = eingabe.nextLine();
System.out.print("Menge > "); System.out.print("Menge > ");
menge = eingabe.nextInt(); int menge = eingabe.nextInt();
try { try {
kaufhalle.addProduktZuWarenkorb(produktName,menge); kaufhalle.addProduktZuWarenkorb(produktName,menge);
for (String p : kaufhalle.zeigeProdukte())
System.out.println(p);
} catch (ProduktNichtGefundenException e) { } catch (ProduktNichtGefundenException e) {
System.out.println(e.getMessage()); 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.println("Weitere Produkte auswählen Ja/Nein");
System.out.print(">"); System.out.print(">");
weiterEinkaufen = eingabe.nextLine(); weiterEinkaufen = eingabe.nextLine();
@ -122,36 +75,78 @@ public class TUI {
else else
break; 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());
// }
} }

View File

@ -1,47 +1,48 @@
package OnlineShop.domain; package OnlineShop.domain;
import java.sql.Date; import java.util.Date;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
public class Bestellung { public class Bestellung {
private double kosten; private double kosten;
private String formattedkosten;
private String kundeName;
private int gewicht; private int gewicht;
private double versandKosten; private double versandKosten;
private ArrayList<Produkt> tempProdukt; private ArrayList<WarenkorbMenge> tempProdukt;
private LocalDate date; private Date date;
public void gesamtKosten(ArrayList<Produkt> produkts) { public Bestellung(ArrayList<WarenkorbMenge> produkts, String kundeName) {
tempProdukt = produkts; this.tempProdukt = produkts;
this.kundeName = kundeName;
} }
public double getKosten() { public double getKosten() {
kosten = 0; 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
for (Produkt p : tempProdukt) return Double.parseDouble(formattedkosten);
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;
} }
public int getGewicht() { public int getGewicht() {
gewicht = 0; gewicht = 0;
for (Produkt p : tempProdukt) for (WarenkorbMenge p : tempProdukt) {
gewicht += p.getGewicht(); gewicht += p.getProdukt().getGewicht();
gewicht *= p.getMenge();
}
return gewicht; return gewicht;
} }
public double getVersandKosten() { public double getVersandKosten() {
getGewicht(); getGewicht();
versandKosten = 0;
double gewichtInKg = gewicht / 1000.0; double gewichtInKg = gewicht / 1000.0;
System.out.println("GeWicht: " + gewichtInKg); System.out.println("gewichtInKg: " + gewichtInKg);
if (gewichtInKg < 1) if (gewichtInKg < 1)
versandKosten += 5; versandKosten += 5;
@ -59,25 +60,21 @@ public class Bestellung {
double gesmatKosten = kosten + versandKosten; double gesmatKosten = kosten + versandKosten;
String formatted = String.format("%.2f", gesmatKosten); String formatted = String.format("%.2f", gesmatKosten);
formatted = formatted.replace(",", "."); // Ersetzt das Komma durch einen Punkt formatted = formatted.replace(",", "."); // Ersetzt das Komma durch einen Punkt
double formattedDouble = Double.parseDouble(formatted); return Double.parseDouble(formatted);
return formattedDouble;
} }
public LocalDate getDate() { public Date getDate() {
return date; return date;
} }
public void setDate(LocalDate date) { public void setDate(Date date) {
this.date = date; this.date = date;
} }
@Override @Override
public String toString() { public String toString() {
return "kosten=" + kosten + ", gewicht=" + gewicht + ", versandKosten=" + versandKosten return "Kunde= " + kundeName + ", kosten=" + formattedkosten + ", versandKosten=" + versandKosten + ", date="
+ ", tempProdukt=" + tempProdukt + ", date=" + date; + date;
} }
} }

View File

@ -4,10 +4,10 @@ import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.*; import org.junit.jupiter.api.*;
import OnlineShop.domain.*; import OnlineShop.domain.*;
import OnlineShop.domain.ExceptionsKlassen.*;
class JTest { class JTest {
Kaufhalle kaufhalle; Kaufhalle kaufhalle;
@BeforeEach @BeforeEach
void setUp() throws Exception { void setUp() throws Exception {
kaufhalle = new Kaufhalle(); kaufhalle = new Kaufhalle();
@ -15,17 +15,22 @@ class JTest {
@Test @Test
void test() throws Exception { void test() throws Exception {
kaufhalle.produkteLadenImSystem();
kaufhalle.addProduktZuWarenkorb("hut", 10);
kaufhalle.produkteLaden(); kaufhalle.addProduktZuWarenkorb("hut", 5);
kaufhalle.addProduktZuWarenkorb("Hut",5); kaufhalle.printTest();
kaufhalle.addProduktZuWarenkorb("Dosenwurst",6);
kaufhalle.addProduktZuWarenkorb("Hut",5);
for (String p : kaufhalle.zeigeAlleProdukteImWarenkorb())
System.out.println(p);
kaufhalle.loginKunde("Obai", "Mannheim");
kaufhalle.bestellen();
kaufhalle.speichereBestellung();
kaufhalle.addProduktZuWarenkorb("hut", 5);
kaufhalle.printTest();
kaufhalle.loginKunde("Omar", "Mannheim");
kaufhalle.bestellen();
kaufhalle.speichereBestellung();
kaufhalle.printbestellung();
} }
} }

View File

@ -1,121 +1,116 @@
package OnlineShop.domain; package OnlineShop.domain;
import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import OnlineShop.domain.ExceptionsKlassen.*; import OnlineShop.domain.ExceptionsKlassen.*;
public class Kaufhalle { public class Kaufhalle {
private ArrayList<Produkt> produkte; private ArrayList<Produkt> produkte;
private ArrayList<Bestellung> Bestellungen; private ArrayList<Bestellung> bestellungen;
private Kunde kunde; private Kunde kunde;
private Bestellung aktuellBestelung; private Bestellung akteulleBestellung;
public Kaufhalle() throws FileNotFoundException { public Kaufhalle() throws FileNotFoundException {
this.produkte = new ArrayList<>(); this.produkte = new ArrayList<>();
this.kunde = new Kunde(); this.kunde = new Kunde();
this.Bestellungen = new ArrayList<>(); this.bestellungen = new ArrayList<>();
} }
public boolean produkteLaden() throws FileNotFoundException { public boolean produkteLadenImSystem() throws FileNotFoundException {
Scanner sc = new Scanner(new File( return produkteLaden.produkteLaden(produkte);
"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(); public boolean addProduktZuWarenkorb(String Produktname, int menge)
return true; throws ProduktNichtGefundenException, Exception {
}
public boolean addProduktZuWarenkorb(String Produktname, int menge) throws ProduktNichtGefundenException,Exception {
Produkt neueProdukt = findeProduktImKaufhalle(Produktname); Produkt neueProdukt = findeProduktImKaufhalle(Produktname);
if (neueProdukt == null) if (neueProdukt == null)
throw new ProduktNichtGefundenException("Produkt ist nicht Verfügbar!"); throw new ProduktNichtGefundenException("Produkt ist nicht Verfügbar!");
if (menge > neueProdukt.getBestand()) if (menge > neueProdukt.getBestand())
throw new Exception ("Errore"); throw new Exception("Wir haben nicht genug Produktmenge im Lager!");
for (int i = 0; i < menge; i++) WarenkorbMenge wp = kunde.getWarenKorb().findWarenkorbMenge(Produktname);
kunde.getWarenKorb().addProdukt(neueProdukt); if (wp != null)
wp.setMenge(wp.getMenge() + menge);
neueProdukt.setBestand(menge); else {
WarenkorbMenge neueWarenkorbMenge = new WarenkorbMenge();
neueWarenkorbMenge.addProdukt(neueProdukt, menge);
kunde.getWarenKorb().addProdukt(neueWarenkorbMenge);
}
neueProdukt.setBestand(neueProdukt.getBestand() - menge);
return true; return true;
} }
public boolean loescheProduktausWarenkorb(String Produktname) { public boolean mengeaendern(String Produktname, int menge) throws ProduktNichtGefundenException {
return kunde.getWarenKorb().loescheprodukt(Produktname); 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<String> zeigeProdukte() { public ArrayList<String> zeigeProdukte() {
ArrayList<String> allProdukte = new ArrayList<>(); ArrayList<String> allProdukte = new ArrayList<>();
int index = 1; int index = 1;
for (Produkt p : produkte) for (Produkt p : produkte)
allProdukte.add(index++ + ".Produkt: " + p.print()); allProdukte.add(index++ + ".Produkt: " + p.toString());
return allProdukte; 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<String> 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);
}
} }

View File

@ -5,13 +5,10 @@ public class Kunde {
private String name; private String name;
private String anschrift; private String anschrift;
private Warenkorb warenKorb; private Warenkorb warenKorb;
private double produktKosten;
;
public Kunde(String name, String anschrift) { public Kunde(String name, String anschrift) {
this.name = name; this.name = name;
this.anschrift = anschrift; this.anschrift = anschrift;
this.produktKosten = 0.0;
this.warenKorb = new Warenkorb(); this.warenKorb = new Warenkorb();
} }
@ -38,13 +35,4 @@ public class Kunde {
public Warenkorb getWarenKorb() { public Warenkorb getWarenKorb() {
return warenKorb; return warenKorb;
} }
public double getProduktKosten() {
return produktKosten;
}
public void setProduktKosten(double produktKosten) {
this.produktKosten = produktKosten;
}
} }

View File

@ -37,18 +37,13 @@ public class Produkt {
} }
public void setBestand(int bestand) { public void setBestand(int bestand) {
this.bestand -= bestand; this.bestand = bestand;
} }
@Override
public String print() { public String toString() {
return String.format("name=%s, beschreibung=%s, preis=%.2f, gewicht=%d, bestand=%d", return String.format("name=%s, beschreibung=%s, preis=%.2f, gewicht=%d, bestand=%d", name, beschreibung, preis,
name, beschreibung, preis, gewicht, bestand); gewicht, bestand);
}
public String printImWarenkorb() {
return String.format("name=%s, beschreibung=%s, preis=%.2f, gewicht=%d",
name, beschreibung, preis, gewicht);
} }
} }

View File

@ -5,75 +5,27 @@ import java.util.ArrayList;
import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb; import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb;
public class Warenkorb { public class Warenkorb {
private ArrayList<Produkt> produkte; private ArrayList<WarenkorbMenge> produkte;
private int anzahlProdkute;
Warenkorb() { Warenkorb() {
produkte = new ArrayList<>(); this.produkte = new ArrayList<>();
} }
public boolean addProdukt(Produkt neueProdukt) { public boolean addProdukt(WarenkorbMenge neueWarenkorbMenge) {
produkte.add(neueProdukt); produkte.add(neueWarenkorbMenge);
anzahlProdkute++;
return true; return true;
} }
public boolean loescheprodukt(String name) { public ArrayList<WarenkorbMenge> getProdukte() {
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<String> zeigeProdukteImWarenKorb() throws KeineProdukteImWarenkorb {
if (produkte.size() == 0)
throw new KeineProdukteImWarenkorb("Momentan haben Sie Keine Produkte in Ihrem Warenkorb");
ArrayList<String> allProdukte = new ArrayList<>();
ArrayList<Produkt> 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<Produkt> getProdukte() {
return produkte; return produkte;
} }
public WarenkorbMenge findWarenkorbMenge(String name) {
for (WarenkorbMenge wp : produkte)
if (wp.getProdukt().getName().equalsIgnoreCase(name))
return wp;
return null;
}
} }

View File

@ -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;
}
}

View File

@ -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<Produkt> 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;
}
}

View File

@ -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
1 Name Beschreibung Preis Gewicht Bestand
2 Gieskanne Premium Gärtner-Gieskanne 3,99 250,00 17,00
3 Hut Perfekt für die Hutablage 21,98 120,00 123,00
4 Dosenwurst LWWRSCHT: das Pfälzer Original, nur kurz im Angebot 3,99 200,00 7,00
5 Gartenschlauch 10 m, dehnbar bis auf die doppelte Länge 18,99 1300,00 23,00
6 Schraubenset 100 zufällig ausgewählte Schrauben 2,99 287,00 99,00
7 Akkuschrauber Mit extra großem Drehmoment 25,00 900,00 13,00

View File

@ -41,17 +41,18 @@ public class Firma {
//ma = mi; nein, weil nicht jeder mitarbeiter ein manager ist! //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(); 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(mitarbeiter);
firma.mitarbeiterEinstellen(manager); firma.mitarbeiterEinstellen(manager);
Mitarbeiter mitarbeiter2 = new Mitarbeiter("Mayer", "12.12.1999");
firma.mitarbeiterEinstellen(mitarbeiter); firma.mitarbeiterEinstellen(mitarbeiter2);
/* geht nicht! Warum? /* geht nicht! Warum?
* weil nicht jeder mitarbeiter ein manager ist! * weil nicht jeder mitarbeiter ein manager ist!
@ -61,17 +62,22 @@ public class Firma {
//weil jeder manager ist ein mitarbeiter //weil jeder manager ist ein mitarbeiter
mitarbeiter = manager;// Ja geht: // mitarbeiter = manager;// Ja geht:
System.out.println("Polymorphismus"); System.out.println("Polymorphismus");
System.out.println(mitarbeiter.getGehalt()); System.out.println(mitarbeiter.getGehalt());
System.out.println(manager.getAbteilung()); System.out.println(manager.getAbteilung());
// System.out.println(mitarbeiter.getAbteilung()); // geht nicht, wg. statischem Typ Mitarbeiter // 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 // ClassCastException zur laufzeit, weil ich if (mitarbeiter instanceof Manager) verwenden soll
((Manager)mitarbeiter2).getAbteilung();
// WICHTIG: // WICHTIG:
//instanceof prüft, ob die klasse manager die klasse mitarbeiter erbt //instanceof prüft, ob die klasse manager die klasse mitarbeiter erbt

View File

@ -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();
}
}

View File

@ -26,5 +26,13 @@ public class Polymorphism {
* aber anderes Verhalten * 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.
*/
} }