You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

203 lines
6.5 KiB
Java

package com.company.lösungen;
public class onlineShop {
// Öffentliche Klasse zur Repräsentation eines Artikels
public class Article {
// Deklaration privater Variablen
private int articleNumber;
private float price;
// Konstruktor, der die Artikelnummer und den Preis
// erforderlich macht.
public Article(int articleNumber, float price) {
this.articleNumber = articleNumber;
this.price = price;
}
// Getter-Methode, die den Preis zurückliefert.
public float getPrice() {
return price;
}
}
// Öffentliche Klasse, die ein Buch repräsentiert.
// Die Klasse erbt von der Klasse Artikel
public class Book extends Article {
// Deklaration eigener privater Variablen
private String author;
private String title;
private int year;
// Der Mehrwertsteuersatz für Bücher (7 %) wird durch die
// statische Konstante VAT repräsentiert.
public static final float VAT = 0.07f;
// Öffentlicher Konstruktor mit der Vorschrift
// zum Anlegen eines Buchobjekts.
public Book(
int articleNumber,
float price,
String author,
String title,
int year
) {
// Aufruf des Konstruktors der Basisklasse Article
super(articleNumber, price);
// Zusätzlich werden die charakterisierenden
// Eigenschaften eines Buchs gesetzt.
this.author = author;
this.title = title;
this.year = year;
}
// Öffentliche Methode zur Berechnung des Bruttopreises
public float getPrice() {
// Rufe für Nettopreis die Methode in der Superklasse auf
// und addiere die für Bücher geltende Mehrwertsteuer
return round((super.getPrice() + super.getPrice() * Book.VAT) * 100) / 100.0;
}
// Öffentliche Methode, die einen geeigneten String generiert
// und zurückliefert.
public String toString() {
return "Buch - " + author + ": " + title + " (" + year + ")";
}
}
// Klasse, die eine DVD repräsentiert und von der Klasse
// Article ableitet.
class DVD extends Article {
// Deklaration privater Variablen, die spezifisch für eine
// DVD sind
private String name;
private String duration;
private int countryCode;
// Statische Konstante für Mehrwertsteuersatz für DVDs (19 %)
public static final float VAT = 0.19f;
// Öffentlicher Konstruktor der Klasse DVD. Zum Generieren eines
// Objekts der Klasse DVD werden die angegebenen Werte verlangt.
public DVD(
int articleNumber,
float price,
String name,
String duration,
int countryCode
) {
// Aufruf des Basisklassenkonstruktors
super(articleNumber, price);
// Zusätzliche Daten werden in den internen Variablen abgelegt.
this.name = name;
this.duration = duration;
this.countryCode = countryCode;
}
// Öffentliche Methode zur Berechnung des Bruttopreises
public float getPrice() {
// Rufe für Nettopreis die Methode in der Superklasse auf
// und addiere die für Bücher geltende Mehrwertsteuer
return round((super.getPrice() + super.getPrice() * DVD.VAT) * 100) / 100.0;
}
// Öffentliche Methode, die einen DVD-repräsentativen String
// zurückliefert.
public String toString() {
return "DVD - " + name;
}
}
// Klasse, die einen Warenkorb realisiert
public class ShoppingCart {
// Deklaration privater Variablen
private Article[] cart;
// Öffentlicher Konstruktor, der den internen
// Warenkorb initialisiert
public ShoppingCart() {
// Noch leerer Warenkorb
this.cart = new Article[0];
}
// Öffentliche Methode zum Hinzufügen eines Artikels
// zum Warenkorb. Der Artikel wird in Form eines
// Article-Objekts realisiert. Da sowohl Bücher als
// auch DVDs von der Klasse Article erben, sind beide
// Typen hier erlaubt und werden dafür auf die Basis-
// implementierung zurückgecastet.
public void addToCart(Article article) {
// Vergrößere Array um ein Element
Article[] cartNew = new Article[cart.length + 1];
// Kopiere alle Artikel rüber
for (int i = 0; i < cart.length; i = i + 1) {
cartNew[i] = cart[i];
}
// Setze neuen Artikel ans Ende der Liste
cartNew[cartNew.length - 1] = article;
// Übernehme neue Liste
cart = cartNew;
}
// Öffentliche Methode, die eine Rechnung auf der
// Konsole druckt
public void showBill() {
// Gesamtpreis
float sum = 0.0f;
// Jeden Artikel durchgehen
for (int i = 0; i < cart.length; i = i + 1) {
Article article = cart[i];
// Gebe Namen und Preis aus
System.out.println(article + "\t " + article.getPrice() + " Euro");
// Addiere zu Gesamtpreis
sum = sum + article.getPrice();
}
System.out.println("------------------------------------");
// Gebe Gesamtpreis aus
System.out.println("Gesamtpreis: " + str(sum) + " Euro");
}
}
// Startpunkt des Hauptprogramms
// Hier werden die implementierten Klassen zu Demonstrations- und
// Testzwecken instanziiert und verwendet.
public void setup() {
Book book = new Book(
122767676,
32.71f,
"Luigi Lo Iacono",
"WebSockets",
2015
);
DVD dvd1 = new DVD(
122767676,
14.95f,
"Spiel mir das Lied vom Tod",
"99:12",
1
);
DVD dvd2 = new DVD(
122767676,
8.40f,
"Casablanca, Classic Collection",
"99:12",
1
);
ShoppingCart wk = new ShoppingCart();
wk.addToCart(book);
wk.addToCart(dvd1);
wk.addToCart(dvd2);
wk.showBill();
}
}