2017-09-17 17:07:35 +02:00
|
|
|
import java.util.ArrayList;
|
2019-10-07 11:59:38 +02:00
|
|
|
import java.util.List;
|
2017-09-17 17:07:35 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Diese Klasse speichert Informationen eines Fahrrads.
|
|
|
|
* @author Marc Rennhard
|
|
|
|
*/
|
|
|
|
public class Fahrrad
|
|
|
|
{
|
|
|
|
private String modell;
|
|
|
|
private int preis;
|
|
|
|
private int stueckzahl;
|
|
|
|
private int gaenge;
|
2019-10-07 11:59:38 +02:00
|
|
|
private List<Verkauf> verkaeufe;
|
2017-09-17 17:07:35 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* 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<Verkauf>();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Kaufe das Fahrrad in der gewuenschten Stueckzahl.
|
|
|
|
* @param stueckzahlKaufen Die gewuenschte Stueckzahl
|
|
|
|
* @param kunde Der Kunde
|
|
|
|
* @return Informationen ueber das Ergebnis des Kaufs
|
|
|
|
*/
|
2019-10-07 11:59:38 +02:00
|
|
|
public String kaufen(int anzahl, Kunde kunde)
|
2017-09-17 17:07:35 +02:00
|
|
|
{
|
2019-10-07 11:59:38 +02:00
|
|
|
if (anzahl <= stueckzahl) {
|
|
|
|
stueckzahl -= anzahl;
|
|
|
|
Verkauf verkauf = new Verkauf(kunde, anzahl, anzahl * preis);
|
2017-09-17 17:07:35 +02:00
|
|
|
verkaeufe.add(verkauf);
|
2019-10-07 11:59:38 +02:00
|
|
|
return String.format("%s hat %d Stueck des Modells %s zu insgesamt CHF %d gekauft", kunde.gibInfo(), anzahl, modell, (anzahl * preis));
|
2017-09-17 17:07:35 +02:00
|
|
|
|
|
|
|
} else {
|
2019-10-07 11:59:38 +02:00
|
|
|
return String.format("Es hat leider nur noch %d Stueck des Modells %s an Lager", stueckzahl, modell);
|
2017-09-17 17:07:35 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 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() {
|
2019-10-07 11:59:38 +02:00
|
|
|
String resultat = String.format("Modell %s, %d Fahrzeuge zu je CHF %d an Lager\n", modell, stueckzahl, preis);
|
2017-09-17 17:07:35 +02:00
|
|
|
resultat += "Bereits erfolgte Verkaeufe:\n";
|
|
|
|
for (Verkauf verkauf : verkaeufe) {
|
2019-10-07 11:59:38 +02:00
|
|
|
resultat += verkauf.gibInfo() + "\n";
|
2017-09-17 17:07:35 +02:00
|
|
|
}
|
|
|
|
return resultat;
|
|
|
|
}
|
|
|
|
}
|