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