diff --git a/src/Auto.java b/src/Auto.java new file mode 100644 index 0000000..39d847d --- /dev/null +++ b/src/Auto.java @@ -0,0 +1,127 @@ +import java.util.ArrayList; + +/** + * Diese Klasse speichert Informationen eines Autos. + * @author Marc Rennhard + */ +public class Auto +{ + private String modell; + private int preis; + private int stueckzahl; + private int leistung; + private int plaetze; + private boolean vierradantrieb; + ArrayList verkaeufe; + + /** + * Konstruktor, um ein Auto zu erzeugen. + * @param modell Das Modell + * @param preis Der Preis + * @param stueckzahl Die verfuegbare Stueckzahl + * @param leistung Die Leistung in PS + * @param plaetze Die Sitzplaetze + * @param abs Ob das Auto Vierradantrieb hat + */ + public Auto(String modell, int preis, int stueckzahl, int leistung, int plaetze, boolean vierradantrieb) + { + this.modell = modell; + this.preis = preis; + this.stueckzahl = stueckzahl; + this.leistung = leistung; + this.plaetze = plaetze; + this.vierradantrieb = vierradantrieb; + verkaeufe = new ArrayList(); + } + + /** + * Kaufe das Auto in der gewuenschten Stueckzahl. + * @param stueckzahlKaufen Die gewuenschte Stueckzahl + * @param kunde Der Kunde + * @return Informationen ueber das Ergebnis des Kaufs + */ + public String kaufen(int stueckzahlKaufen, Kunde kunde) + { + if (stueckzahlKaufen <= stueckzahl) { + stueckzahl -= stueckzahlKaufen; + Verkauf verkauf = new Verkauf(kunde, stueckzahlKaufen, stueckzahlKaufen * preis); + verkaeufe.add(verkauf); + return kunde.gibInfo() + " hat " + stueckzahlKaufen + " Stueck des Modells " + modell + + " zu insgesamt CHF " + (stueckzahlKaufen * preis) + " gekauft"; + + } else { + return "Es hat leider nur noch " + stueckzahl + " Stueck des Modells " + modell + " an Lager"; + } + } + + /** + * Liefert das Modell des Autos. + * @return Das Modell + */ + public String gibModell() + { + return modell; + } + + /** + * Setzt den Preis des Autos. + * @param preis Der Preis + */ + public void setzePreis(int preis) + { + if (preis > 0) { + this.preis = preis; + } + } + + /** + * Setze die verfuegbare Stueckzahl des Autos. + * @param stueckzahl Die Stueckzahl + */ + public void setzeStueckzahl(int stueckzahl) + { + if (stueckzahl >= 0) { + this.stueckzahl = stueckzahl; + } + } + + /** + * Liefert die Leistung des Autos. + * @return Die Leistung + */ + public int gibLeistung() + { + return leistung; + } + + /** + * Liefert die Anzahl Sitzplaetze des Autos. + * @return Die Anzahl Plaetze + */ + public int gibPlaetze() + { + return plaetze; + } + + /** + * Liefert ob das Auto Vierradantrieb hat. + * @return Ob das Auto Vierradantrieb hat (true) oder nicht + */ + public boolean gibVierradantrieb() + { + return vierradantrieb; + } + + /** + * Gibt Informationen des Autos zurueck. + * @return Informationen des Verkaufs + */ + public String gibInfo() { + String resultat = "Modell " + modell + ", " + stueckzahl + " Fahrzeuge zu je CHF " + preis + " an Lager.\n"; + resultat += "Bereits erfolgte Verkaeufe:\n"; + for (Verkauf verkauf : verkaeufe) { + resultat += verkauf.gibInfo() + "\n"; + } + return resultat; + } +} diff --git a/src/Fahrrad.java b/src/Fahrrad.java new file mode 100644 index 0000000..67e499a --- /dev/null +++ b/src/Fahrrad.java @@ -0,0 +1,103 @@ +import java.util.ArrayList; + +/** + * Diese Klasse speichert Informationen eines Fahrrads. + * @author Marc Rennhard + */ +public class Fahrrad +{ + private String modell; + private int preis; + private int stueckzahl; + private int gaenge; + ArrayList verkaeufe; + + /** + * Konstruktor, um ein Fahrrad zu erzeugen. + * @param modell Das Modell + * @param preis Der Preis + * @param stueckzahl Die verfuegbare Stueckzahl + * @param gaenge Die Anzah der Gaenge + */ + public Fahrrad(String modell, int preis, int stueckzahl, int gaenge) + { + this.modell = modell; + this.preis = preis; + this.stueckzahl = stueckzahl; + this.gaenge = gaenge; + verkaeufe = new ArrayList(); + } + + /** + * Kaufe das Fahrrad in der gewuenschten Stueckzahl. + * @param stueckzahlKaufen Die gewuenschte Stueckzahl + * @param kunde Der Kunde + * @return Informationen ueber das Ergebnis des Kaufs + */ + public String kaufen(int stueckzahlKaufen, Kunde kunde) + { + if (stueckzahlKaufen <= stueckzahl) { + stueckzahl -= stueckzahlKaufen; + Verkauf verkauf = new Verkauf(kunde, stueckzahlKaufen, stueckzahlKaufen * preis); + verkaeufe.add(verkauf); + return kunde.gibInfo() + " hat " + stueckzahlKaufen + " Stueck des Modells " + modell + + " zu insgesamt CHF " + (stueckzahlKaufen * preis) + " gekauft"; + + } else { + return "Es hat leider nur noch " + stueckzahl + " Stueck des Modells " + modell + " an Lager"; + } + } + + /** + * Liefert das Modell des Fahrrads. + * @return Das Modell + */ + public String gibModell() + { + return modell; + } + + /** + * Setzt den Preis des Fahrrads. + * @param preis Der Preis + */ + public void setzePreis(int preis) + { + if (preis > 0) { + this.preis = preis; + } + } + + /** + * Setze die verfuegbare Stueckzahl des Fahrrads. + * @param stueckzahl Die Stueckzahl + */ + public void setzeStueckzahl(int stueckzahl) + { + if (stueckzahl >= 0) { + this.stueckzahl = stueckzahl; + } + } + + /** + * Liefert die Anzahl Gaenge des Fahrrads. + * @return Die Anzahl Gaenge + */ + public int gibGaenge() + { + return gaenge; + } + + /** + * Gibt Informationen des Fahrrads zurueck. + * @return Informationen des Verkaufs + */ + public String gibInfo() { + String resultat = "Modell " + modell + ", " + stueckzahl + " Fahrzeuge zu je CHF " + preis + " an Lager.\n"; + resultat += "Bereits erfolgte Verkaeufe:\n"; + for (Verkauf verkauf : verkaeufe) { + resultat += verkauf.gibInfo() + "\n"; + } + return resultat; + } +} diff --git a/src/Fahrzeugverwaltung.java b/src/Fahrzeugverwaltung.java new file mode 100644 index 0000000..5dbd75f --- /dev/null +++ b/src/Fahrzeugverwaltung.java @@ -0,0 +1,131 @@ +import java.util.ArrayList; + +/** + * Diese Klasse verwaltet die Fahrzeuge. + * @author Marc Rennhard + */ +public class Fahrzeugverwaltung +{ + private ArrayList fahrraeder; + private ArrayList motorraeder; + private ArrayList autos; + + /** + * Konstruktor. Erzeugt eine Fahrzeugverwaltung. + */ + public Fahrzeugverwaltung() + { + motorraeder = new ArrayList(); + autos = new ArrayList(); + fahrraeder = new ArrayList(); + } + + /** + * Erzeugt ein Fahrrad. + * @param modell Das Modell + * @param preis Der Preis + * @param stueckzahl Die verfuegbare Stueckzahl + * @param gaenge Die Anzahl gaenge + */ + public void erzeugeFahrrad(String modell, int preis, int stueckzahl, int gaenge) { + Fahrrad fahrrad = new Fahrrad(modell, preis, stueckzahl, gaenge); + fahrraeder.add(fahrrad); + } + + /** + * Erzeugt ein Motorrad. + * @param modell Das Modell + * @param preis Der Preis + * @param stueckzahl Die verfuegbare Stueckzahl + * @param leistung Die Leistung + * @param abs Ob das Motorrad ABS hat + */ + public void erzeugeMotorrad(String modell, int preis, int stueckzahl, int leistung, boolean abs) { + Motorrad motorrad = new Motorrad(modell, preis, stueckzahl, leistung, abs); + motorraeder.add(motorrad); + } + + /** + * Erzeugt ein Auto. + * @param modell Das Modell + * @param preis Der Preis + * @param stueckzahl Die verfuegbare Stueckzahl + * @param leistung Die Leistung + * @param plaetze Die Anzahl Sitzplaetze + * @param vierradantrieb Ob das Auto Vierradantrieb hat + */ + public void erzeugeAuto(String modell, int preis, int stueckzahl, int leistung, int plaetze, boolean vierradantrieb) { + Auto auto = new Auto(modell, preis, stueckzahl, leistung, plaetze, vierradantrieb); + autos.add(auto); + } + + /** + * Kauft ein Fahrrad in der gewuenschten Stueckzahl. + * @param Modell Das gewuenschte Modell + * @param stueckzahl Die gewuenschte Stueckzahl + * @param kunde Der Kunde + * @return Informationen ueber das Ergebnis des Kaufs + */ + public void kaufeFahrrad(String modell, int stueckzahl, Kunde kunde) { + for (Fahrrad fahrrad : fahrraeder) { + if (fahrrad.gibModell().equals(modell)) { + String kaufergebnis = fahrrad.kaufen(stueckzahl, kunde); + System.out.println(kaufergebnis); + return; + } + } + System.out.println("Das Modell " + modell + " konnte nicht gefunden werden"); + } + + /** + * Kauft ein Motorrad in der gewuenschten Stueckzahl. + * @param Modell Das gewuenschte Modell + * @param stueckzahl Die gewuenschte Stueckzahl + * @param kunde Der Kunde + * @return Informationen ueber das Ergebnis des Kaufs + */ + public void kaufeMotorrad(String modell, int stueckzahl, Kunde kunde) { + for (Motorrad motorrad : motorraeder) { + if (motorrad.gibModell().equals(modell)) { + String kaufergebnis = motorrad.kaufen(stueckzahl, kunde); + System.out.println(kaufergebnis); + return; + } + } + System.out.println("Das Modell " + modell + " konnte nicht gefunden werden"); + } + + /** + * Kauft ein Auto in der gewuenschten Stueckzahl. + * @param Modell Das gewuenschte Modell + * @param stueckzahl Die gewuenschte Stueckzahl + * @param kunde Der Kunde + * @return Informationen ueber das Ergebnis des Kaufs + */ + public void kaufeAuto(String modell, int stueckzahl, Kunde kunde) { + for (Auto auto : autos) { + if (auto.gibModell().equals(modell)) { + String kaufergebnis = auto.kaufen(stueckzahl, kunde); + System.out.println(kaufergebnis); + return; + } + } + System.out.println("Das Modell " + modell + " konnte nicht gefunden werden"); + } + + /** + * Gibt Informationen aller Fahrzeuge aus + */ + public void ausgeben() + { + for (Fahrrad fahrrad : fahrraeder) { + System.out.println(fahrrad.gibInfo()); + } + for (Motorrad motorrad : motorraeder) { + System.out.println(motorrad.gibInfo()); + } + for (Auto auto : autos) { + System.out.println(auto.gibInfo()); + } + } +} diff --git a/src/Kunde.java b/src/Kunde.java new file mode 100644 index 0000000..d1fee00 --- /dev/null +++ b/src/Kunde.java @@ -0,0 +1,26 @@ +/** + * Diese Klasse speichert Informationen eines Kunden. + * @author Marc Rennhard + */ +public class Kunde +{ + private String name; + + /** + * Konstruktor, um einen Kunden zu erzeugen. + * @param name Der Name des Kunden + */ + public Kunde(String name) + { + this.name = name; + } + + /** + * Liefert Informationen des Kunden. + * @return Infirmationen des Kunden + */ + public String gibInfo() + { + return name; + } +} diff --git a/src/Motorrad.java b/src/Motorrad.java new file mode 100644 index 0000000..13f4eb2 --- /dev/null +++ b/src/Motorrad.java @@ -0,0 +1,115 @@ +import java.util.ArrayList; + +/** + * Diese Klasse speichert Informationen eines Motorrads. + * @author Marc Rennhard + */ +public class Motorrad +{ + private String modell; + private int preis; + private int stueckzahl; + private int leistung; + private boolean abs; + ArrayList verkaeufe; + + /** + * Konstruktor, um ein Motorrad zu erzeugen. + * @param modell Das Modell + * @param preis Der Preis + * @param stueckzahl Die verfuegbare Stueckzahl + * @param leistung Die Leistung in PS + * @param abs Ob das Motorrad ABS hat + */ + public Motorrad(String modell, int preis, int stueckzahl, int leistung, boolean abs) + { + this.modell = modell; + this.preis = preis; + this.stueckzahl = stueckzahl; + this.leistung = leistung; + this.abs = abs; + verkaeufe = new ArrayList(); + } + + /** + * Kaufe das Motorrad in der gewuenschten Stueckzahl. + * @param stueckzahlKaufen Die gewuenschte Stueckzahl + * @param kunde Der Kunde + * @return Informationen ueber das Ergebnis des Kaufs + */ + public String kaufen(int stueckzahlKaufen, Kunde kunde) + { + if (stueckzahlKaufen <= stueckzahl) { + stueckzahl -= stueckzahlKaufen; + Verkauf verkauf = new Verkauf(kunde, stueckzahlKaufen, stueckzahlKaufen * preis); + verkaeufe.add(verkauf); + return kunde.gibInfo() + " hat " + stueckzahlKaufen + " Stueck des Modells " + modell + + " zu insgesamt CHF " + (stueckzahlKaufen * preis) + " gekauft"; + + } else { + return "Es hat leider nur noch " + stueckzahl + " Stueck des Modells " + modell + " an Lager"; + } + } + + /** + * Liefert das Modell des Motorrads. + * @return Das Modell + */ + public String gibModell() + { + return modell; + } + + /** + * Setzt den Preis des Motorrads. + * @param preis Der Preis + */ + public void setzePreis(int preis) + { + if (preis > 0) { + this.preis = preis; + } + } + + /** + * Setze die verfuegbare Stueckzahl des Motorrads. + * @param stueckzahl Die Stueckzahl + */ + public void setzeStueckzahl(int stueckzahl) + { + if (stueckzahl >= 0) { + this.stueckzahl = stueckzahl; + } + } + + /** + * Liefert die Leistung des Motorrads. + * @return Die Leistung + */ + public int gibLeistung() + { + return leistung; + } + + /** + * Liefert ob das Motorrad ABS hat. + * @return Ob das Motorrad ABS hat (true) oder nicht + */ + public boolean gibAbs() + { + return abs; + } + + /** + * Gibt Informationen des Motorrads zurueck. + * @return Informationen des Verkaufs + */ + public String gibInfo() { + String resultat = "Modell " + modell + ", " + stueckzahl + " Fahrzeuge zu je CHF " + preis + " an Lager.\n"; + resultat += "Bereits erfolgte Verkaeufe:\n"; + for (Verkauf verkauf : verkaeufe) { + resultat += verkauf.gibInfo() + "\n"; + } + return resultat; + } +} diff --git a/src/Simulation.java b/src/Simulation.java new file mode 100644 index 0000000..23510c9 --- /dev/null +++ b/src/Simulation.java @@ -0,0 +1,106 @@ +import java.util.ArrayList; + +public class Simulation +{ + Fahrzeugverwaltung fahrzeugverwaltung; + ArrayList kunden; + + public Simulation() + { + fahrzeugverwaltung = new Fahrzeugverwaltung(); + kunden = new ArrayList(); + } + + private void simulieren() + { + erzeugeKunden(); + erzeugeFahrzeuge(); + + System.out.println("Lagerbestand zu Beginn:\n"); + fahrzeugeAusgeben(); + + System.out.println("Kaufe Fahrzeuge:\n"); + + kaufeFahrzeuge(); + + System.out.println("\nLagerbestand am Ende:\n"); + fahrzeugeAusgeben(); + } + + private void erzeugeKunden() + { + kunden.add(new Kunde("Max Meier")); + kunden.add(new Kunde("Hans Hepp")); + kunden.add(new Kunde("Cool Man")); + kunden.add(new Kunde("Pia Propper")); + kunden.add(new Kunde("Johny Hatkohle")); + } + + private void erzeugeFahrzeuge() + { + erzeugeFahrraeder(); + erzeugeMotorraeder(); + erzeugeAutos(); + } + + private void erzeugeFahrraeder() + { + fahrzeugverwaltung.erzeugeFahrrad("Scott MTB", 1900, 6, 27); + fahrzeugverwaltung.erzeugeFahrrad("BMC Carbon", 3995, 2, 27); + fahrzeugverwaltung.erzeugeFahrrad("Pukky Kids", 330, 3, 1); + } + + private void erzeugeMotorraeder() + { + fahrzeugverwaltung.erzeugeMotorrad("KTM 750", 9900, 5, 115, false); + fahrzeugverwaltung.erzeugeMotorrad("Yamaha VMax", 25000, 3, 150, true); + fahrzeugverwaltung.erzeugeMotorrad("Harley Fat Boy", 20000, 6, 85, false); + } + + private void erzeugeAutos() + { + fahrzeugverwaltung.erzeugeAuto("Skoda Octavia", 39800, 3, 150, 5, true); + fahrzeugverwaltung.erzeugeAuto("Ferrari Enzo", 565000, 1, 580, 2, false); + fahrzeugverwaltung.erzeugeAuto("Seat Bigfamily", 42000, 4, 145, 8, false); + } + + private void kaufeFahrzeuge() + { + kaufeFahrraeder(); + kaufeMotorraeder(); + kaufeAutos(); + } + + private void kaufeFahrraeder() + { + fahrzeugverwaltung.kaufeFahrrad("Gibt es nicht", 2, kunden.get(0)); + fahrzeugverwaltung.kaufeFahrrad("Scott MTB", 2, kunden.get(0)); + fahrzeugverwaltung.kaufeFahrrad("Pukky Kids", 2, kunden.get(1)); + fahrzeugverwaltung.kaufeFahrrad("Pukky Kids", 2, kunden.get(2)); + fahrzeugverwaltung.kaufeFahrrad("BMC Carbon", 2, kunden.get(2)); + } + + private void kaufeMotorraeder() + { + fahrzeugverwaltung.kaufeMotorrad("Harley Fat Boy", 1, kunden.get(0)); + fahrzeugverwaltung.kaufeMotorrad("KTM 750", 3, kunden.get(1)); + fahrzeugverwaltung.kaufeMotorrad("Harley Fat Boy", 2, kunden.get(2)); + } + + private void kaufeAutos() + { + fahrzeugverwaltung.kaufeAuto("Ferrari Enzo", 1, kunden.get(4)); + fahrzeugverwaltung.kaufeAuto("Seat Bigfamily", 3, kunden.get(3)); + fahrzeugverwaltung.kaufeAuto("Seat Bigfamily", 1, kunden.get(2)); + } + + private void fahrzeugeAusgeben() + { + fahrzeugverwaltung.ausgeben(); + } + + public static void main(String[] args) + { + (new Simulation()).simulieren(); + } +} diff --git a/src/Verkauf.java b/src/Verkauf.java new file mode 100644 index 0000000..5ecbd4d --- /dev/null +++ b/src/Verkauf.java @@ -0,0 +1,32 @@ +/** + * Diese Klasse speichert Informationen eines Verkaufs. + * @author Marc Rennhard + * + */ +public class Verkauf +{ + private Kunde kunde; + private int stueckzahl; + private int gesamtpreis; + + /** + * Konstruktor, erzeugt einen Verkauf. + * @param kunde Der Kunde + * @param stueckzahl Die gekaufte Stueckzahl + * @param gesamtpreis Der Gesamtpreis + */ + public Verkauf(Kunde kunde, int stueckzahl, int gesamtpreis) + { + this.kunde = kunde; + this.stueckzahl = stueckzahl; + this.gesamtpreis = gesamtpreis; + } + + /** + * Gibt Informationen des Verkaufs zurueck. + * @return Informationen des Verkaufs + */ + public String gibInfo() { + return "Kunde: " + kunde.gibInfo() + ": " + stueckzahl + " Stueck zu total CHF " + gesamtpreis; + } +}