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.

137 lines
3.9 KiB
Java

package com.company.lösungen;
public class zooo {
// Klasse, die einen Besucher repräsentiert
public class Visitor {
// Deklaration privater Variablen
private double prize;
// Konstruktor, der die Angabe eines Preises
// erforderlich macht
public Visitor(double prize) {
this.prize = prize;
}
// Getter-Methode zur Abfrage des Preises
public double getPrize() {
return prize;
}
// Getter-Methode zur Rückgabe der Anzahl von Personen
public int getCount() {
return 0;
}
}
// Öffentliche Klasse, die eine Personengruppe repräsentiert
// und von der Klasse Visitor erbt
public class Group extends Visitor {
// Deklaration privater Variablen
private int size;
// Konstruktor mit der Angabe der Gruppengröße
public Group(int size) {
// Aufruf der Basisklasse
super(50.0);
// Speichern der Gruppengröße lokal
this.size = size;
}
// Getter-Methode zur Rückgabe der Gruppengröße
public int getCount() {
return size;
}
}
// Öffentliche Klasse, die ein Kind repräsentiert
// und von der Klasse Visitor erbt
public class Child extends Visitor {
public Child() {
// Aufruf der Basisklasse
super(0.0);
}
// Getter-Methode zur Rückgabe der Gruppengröße
public int getCount() {
return 1;
}
}
// Öffentliche Klasse, die einen Erwachsenen repräsentiert
// und von der Klasse Visitor erbt
public class Adult extends Visitor {
public Adult() {
// Aufruf der Basisklasse
super(15.0);
}
// Getter-Methode zur Rückgabe der Gruppengröße
public int getCount() {
return 1;
}
}
// Öffentliche Klasse, die den Eingang repräsentiert
public class Entrance {
// Deklaration privater Variablen
private Visitor[] visitors;
private int visitorCount;
// Öffentlicher Konstruktor, der die Gesamtzahl an
// Gästen erwartet.
public Entrance(int size) {
visitors = new Visitor[size];
}
// Methode zum Hinzufügen von Besucher(n) vom
// Typ 'Visitor'. Instanzen aller von Visitor abgeleiteten
// Klassen können hier übergeben werden.
public void addVisitor(Visitor v) {
visitors[visitorCount++] = v;
}
// Methode zur Ermittlung der gesamten Einnahmen
public double computeTurnover() {
double to = 0.0;
// Gehe jeden Besucher durch
for (int i = 0; i < visitorCount; i = i + 1) {
// Addiere Preis von Besucher zum Gesamtpreis
to = to + visitors[i].getPrize();
}
return to;
}
// Methode, die die Gesamtzahl an Besuchern bestimmt
// sowie zurückliefert.
public int computeVisitors() {
int v = 0;
// Gehe jeden Besucher durch
for (int i = 0; i < visitorCount; i = i + 1) {
// Addiere Besucheranzahl zur Gesamtzahl
v = v + visitors[i].getCount();
}
return v;
}
}
// Startpunkt des Hauptprogramms
// Hier werden die implementierten Klassen zu Demonstrations- und
// Testzwecken instanziiert und verwendet.
public void setup() {
Entrance entrance = new Entrance(100);
entrance.addVisitor(new Group(6));
entrance.addVisitor(new Adult());
entrance.addVisitor(new Child());
entrance.addVisitor(new Child());
System.out.println("Besucher: " + entrance.computeVisitors());
System.out.println("Umsatz: " + entrance.computeTurnover() + " Euro");
}
}