--- /dev/null
+package de.diejungsvondertanke.tankstelle;
+
+/**
+ * A fuel object. Contains fuel type, price per litre, stored fuel amount and
+ * storage capacity for this fuel
+ */
+public class Fuel {
+ /**
+ * fuel type
+ *
+ * @see de.diejungsvondertanke.tankstelle.FuelType FuelType
+ */
+ public final FuelType FUEL_TYPE;
+
+ /**
+ * Currently stored amount of fuel in L
+ */
+ private float stored_amount;
+
+ /**
+ * Maximum fuel storage capacity in L
+ */
+ public final int CAPACITY;
+
+ /**
+ * Retail price in € / L
+ */
+ private float price;
+
+ /**
+ * Constructor. Creates a Fuel instance. Is used in each constructor of all fuel
+ * station types
+ *
+ * @param fuel_type Fuel type for this instance
+ * @param stored_amount Currently stored amount of fuel in L
+ * @param capacity Maximum fuel storage capacity in L
+ * @param price Retail price in € / L
+ *
+ * @see de.diejungsvondertanke.tankstelle.FuelStation FuelStation
+ */
+ public Fuel(FuelType fuel_type, float stored_amount, float price, int capacity) {
+ this.FUEL_TYPE = fuel_type;
+ this.stored_amount = stored_amount;
+ this.price = price;
+ this.CAPACITY = capacity;
+ }
+}
--- /dev/null
+package de.diejungsvondertanke.tankstelle;
+
+/**
+ * Possible fuel types
+ *
+ * @see de.diejungsvondertanke.tankstelle.Fuel Fuel
+ */
+public enum FuelType {
+ /**
+ * Classic Super 95 gasoline
+ */
+ SUPER,
+ /**
+ * Diesel (hopefully lead-free)
+ */
+ DIESEL,
+ /**
+ * If you want to feel like saving the planet: Now with 10% ethanol in your
+ * gasoline
+ */
+ SUPER_E10,
+ /**
+ * Premium diesel
+ */
+ PREMIUM_DIESEL,
+ /**
+ * Car gas
+ */
+ AUTOGAS
+}
+++ /dev/null
-package de.diejungsvondertanke.tankstelle;
-
-/**
- * Größe einer Tankstelle. Ist eher dekorativ, da man die Größe einer Instanz
- * auch über den Objekttyp erfahren kann.
- */
-public enum Groesse {
- /**
- * Eine große Tankstelle
- */
- GROSS,
- /**
- * Eine mittelgroße Tankstelle
- */
- MITTEL,
- /**
- * Eine kleine Tankstelle
- */
- KLEIN
-}
+++ /dev/null
-package de.diejungsvondertanke.tankstelle;
-
-/**
- * Große Tankstelle
- */
-public class GrosseTankstelle extends Tankstelle {
- /**
- * Betreiberfirma des integrierten Supermarkts
- */
- private String betreiberfirma_supermarkt;
-
- /**
- * Konstruktor für große Tankstellen
- *
- * @param betreiberfirma_supermarkt Betreiberfirma des integrierten Supermarkts
- * @see de.diejungsvondertanke.tankstelle.GrosseTankstelle#betreiberfirma_supermarkt
- * betreiberfirma_supermarkt
- * @see de.diejungsvondertanke.tankstelle.Tankstelle Tankstelle
- */
- public GrosseTankstelle(String betreiberfirma_supermarkt) {
- Treibstoff[] treibstoffe = { new Treibstoff(Treibstofftyp.SUPER, 8000f, 0f, 16000),
- new Treibstoff(Treibstofftyp.SUPER_E10, 8000f, 0f, 16000),
- new Treibstoff(Treibstofftyp.DIESEL, 8000f, 0f, 16000),
- new Treibstoff(Treibstofftyp.PREMIUM_DIESEL, 8000f, 0f, 16000),
- new Treibstoff(Treibstofftyp.AUTOGAS, 8000f, 0f, 16000) };
- super((byte) 4, Groesse.GROSS, treibstoffe);
- this.betreiberfirma_supermarkt = betreiberfirma_supermarkt;
- }
-
- /**
- * Konstruktor für große Tankstellen inklusive Mitarbeiteranzahl
- *
- * @param betreiberfirma_supermarkt Betreiberfirma des integrierten Supermarkts
- * @param mitarbeiterzahl Mitarbeiteranzahl
- * @see de.diejungsvondertanke.tankstelle.GrosseTankstelle#betreiberfirma_supermarkt
- * betreiberfirma_supermarkt
- * @see de.diejungsvondertanke.tankstelle.Tankstelle Tankstelle
- * @see de.diejungsvondertanke.tankstelle.Tankstelle#mitarbeiterzahl
- * mitarbeiterzahl
- */
- public GrosseTankstelle(String betreiberfirma_supermarkt, byte mitarbeiterzahl) {
- Treibstoff[] treibstoffe = { new Treibstoff(Treibstofftyp.SUPER, 8000f, 0f, 16000),
- new Treibstoff(Treibstofftyp.SUPER_E10, 8000f, 0f, 16000),
- new Treibstoff(Treibstofftyp.DIESEL, 8000f, 0f, 16000),
- new Treibstoff(Treibstofftyp.PREMIUM_DIESEL, 8000f, 0f, 16000),
- new Treibstoff(Treibstofftyp.AUTOGAS, 8000f, 0f, 16000) };
- super(mitarbeiterzahl, Groesse.GROSS, treibstoffe);
- this.betreiberfirma_supermarkt = betreiberfirma_supermarkt;
- }
-}
+++ /dev/null
-package de.diejungsvondertanke.tankstelle;
-
-/**
- * Kleine Tankstelle
- */
-public class KleineTankstelle extends Tankstelle {
- /**
- * Anzahl der Getränkeautomaten in dieser Tankstelle
- */
- private short anzahl_getraenkeautomaten;
-
- /**
- * Konstruktor für kleine Tankstellen
- *
- * @param anzahl_getraenkeautomaten Anzahl der Getränkeautomaten in dieser
- * Tankstelle
- * @see de.diejungsvondertanke.tankstelle.KleineTankstelle#anzahl_getraenkeautomaten
- * anzahl_getraenkeautomaten
- * @see de.diejungsvondertanke.tankstelle.Tankstelle Tankstelle
- */
- public KleineTankstelle(short anzahl_getraenkeautomaten) {
- Treibstoff[] treibstoffe = { new Treibstoff(Treibstofftyp.SUPER, 4000f, 0f, 8000),
- new Treibstoff(Treibstofftyp.DIESEL, 4000f, 0f, 8000) };
- super((byte) 1, Groesse.KLEIN, treibstoffe);
- this.anzahl_getraenkeautomaten = anzahl_getraenkeautomaten;
- }
-
- /**
- * Konstruktor für kleine Tankstellen inklusive Mitarbeiteranzahl
- *
- * @param anzahl_getraenkeautomaten Anzahl der Getränkeautomaten in dieser
- * Tankstelle
- * @param mitarbeiterzahl Mitarbeiteranzahl
- * @see de.diejungsvondertanke.tankstelle.KleineTankstelle#anzahl_getraenkeautomaten
- * anzahl_getraenkeautomaten
- * @see de.diejungsvondertanke.tankstelle.Tankstelle Tankstelle
- * @see de.diejungsvondertanke.tankstelle.Tankstelle#mitarbeiterzahl
- * mitarbeiterzahl
- */
- public KleineTankstelle(short anzahl_getraenkeautomaten, byte mitarbeiterzahl) {
- Treibstoff[] treibstoffe = { new Treibstoff(Treibstofftyp.SUPER, 4000f, 0f, 8000),
- new Treibstoff(Treibstofftyp.DIESEL, 4000f, 0f, 8000) };
- super(mitarbeiterzahl, Groesse.KLEIN, treibstoffe);
- this.anzahl_getraenkeautomaten = anzahl_getraenkeautomaten;
- }
-}
--- /dev/null
+package de.diejungsvondertanke.tankstelle;
+
+/**
+ * Large fuel station
+ */
+public class LargeFuelStation extends FuelStation {
+ /**
+ * The company managing the integrated supermarket
+ */
+ private String supermarket_company;
+
+ /**
+ * Constructs large fuel stations
+ *
+ * @param supermarket_company The company managing the integrated supermarket
+ * @see de.diejungsvondertanke.tankstelle.LargeFuelStation#supermarket_company
+ * supermarket_company
+ * @see de.diejungsvondertanke.tankstelle.FuelStation FuelStation
+ */
+ public LargeFuelStation(String supermarket_company) {
+ Fuel[] fuels = { new Fuel(FuelType.SUPER, 8000f, 0f, 16000),
+ new Fuel(FuelType.SUPER_E10, 8000f, 0f, 16000),
+ new Fuel(FuelType.DIESEL, 8000f, 0f, 16000),
+ new Fuel(FuelType.PREMIUM_DIESEL, 8000f, 0f, 16000),
+ new Fuel(FuelType.AUTOGAS, 8000f, 0f, 16000) };
+ super((byte) 4, Size.LARGE, fuels);
+ this.supermarket_company = supermarket_company;
+ }
+
+ /**
+ * Constructs large fuel stations
+ *
+ * @param supermarket_company The company managing the integrated supermarket
+ * @param number_of_employees Number of employees
+ * @see de.diejungsvondertanke.tankstelle.LargeFuelStation#supermarket_company
+ * supermarket_company
+ * @see de.diejungsvondertanke.tankstelle.FuelStation FuelStation
+ * @see de.diejungsvondertanke.tankstelle.FuelStation#number_of_employees
+ * number_of_employees
+ */
+ public LargeFuelStation(String supermarket_company, byte number_of_employees) {
+ Fuel[] fuels = { new Fuel(FuelType.SUPER, 8000f, 0f, 16000),
+ new Fuel(FuelType.SUPER_E10, 8000f, 0f, 16000),
+ new Fuel(FuelType.DIESEL, 8000f, 0f, 16000),
+ new Fuel(FuelType.PREMIUM_DIESEL, 8000f, 0f, 16000),
+ new Fuel(FuelType.AUTOGAS, 8000f, 0f, 16000) };
+ super(number_of_employees, Size.LARGE, fuels);
+ this.supermarket_company = supermarket_company;
+ }
+}
package de.diejungsvondertanke.tankstelle;
/**
- * Hauptklasse des Programms
+ * Main Class
*/
public class Main {
/**
- * (Anfängliches) Array aller Tankstellen
+ * (Initial) array of all fuel stations
*/
- static Tankstelle[] tankstellen = { new KleineTankstelle((short) 0), new KleineTankstelle((short) 0),
- new MittlereTankstelle(0), new MittlereTankstelle(0), new MittlereTankstelle(0),
- new GrosseTankstelle("PlatzhalterFirma1"), new GrosseTankstelle("PlatzhalterFirma2"),
- new GrosseTankstelle("PlatzhalterFirma3") };
+ static FuelStation[] fuelStations = { new SmallFuelStation((short) 0), new SmallFuelStation((short) 0),
+ new MediumFuelStation(0), new MediumFuelStation(0), new MediumFuelStation(0),
+ new LargeFuelStation("PlatzhalterFirma1"), new LargeFuelStation("PlatzhalterFirma2"),
+ new LargeFuelStation("PlatzhalterFirma3") };
public static void main(String[] args) {
}
--- /dev/null
+package de.diejungsvondertanke.tankstelle;
+
+/**
+ * Medium fuel station
+ */
+public class MediumFuelStation extends FuelStation {
+ /**
+ * m² of retail space
+ */
+ private int retail_space;
+
+ /**
+ * Constructs large fuel stations
+ *
+ * @param retail_space m² of retail space
+ * @see de.diejungsvondertanke.tankstelle.MediumFuelStation#retail_space
+ * retail_space
+ * @see de.diejungsvondertanke.tankstelle.FuelStation FuelStation
+ */
+ public MediumFuelStation(int retail_space) {
+ Fuel[] fuels = { new Fuel(FuelType.SUPER, 6000f, 0f, 12000),
+ new Fuel(FuelType.SUPER_E10, 6000f, 0f, 12000),
+ new Fuel(FuelType.PREMIUM_DIESEL, 6000f, 0f, 12000),
+ new Fuel(FuelType.AUTOGAS, 6000f, 0f, 12000) };
+ super((byte) 2, Size.MEDIUM, fuels);
+ this.retail_space = retail_space;
+ }
+
+ /**
+ * Constructs large fuel stations
+ *
+ * @param retail_space m² of retail space
+ * @param number_of_employees Number of employees
+ * @see de.diejungsvondertanke.tankstelle.MediumFuelStation#retail_space
+ * retail_space
+ * @see de.diejungsvondertanke.tankstelle.FuelStation FuelStation
+ * @see de.diejungsvondertanke.tankstelle.FuelStation#number_of_employees
+ * number_of_employees
+ */
+ public MediumFuelStation(int retail_space, byte number_of_employees) {
+ Fuel[] fuels = { new Fuel(FuelType.SUPER, 6000f, 0f, 12000),
+ new Fuel(FuelType.SUPER_E10, 6000f, 0f, 12000),
+ new Fuel(FuelType.PREMIUM_DIESEL, 6000f, 0f, 12000),
+ new Fuel(FuelType.AUTOGAS, 6000f, 0f, 12000) };
+ super(number_of_employees, Size.MEDIUM, fuels);
+ this.retail_space = retail_space;
+ }
+}
+++ /dev/null
-package de.diejungsvondertanke.tankstelle;
-
-/**
- * Mittelgroße Tankstelle
- */
-public class MittlereTankstelle extends Tankstelle {
- /**
- * Quadratmeterzahl der Ladenverkaufsfläche
- */
- private int quadratmeterzahl_verkaufsflaeche;
-
- /**
- * Konstruktor für mittelgroße Tankstellen
- *
- * @param quadratmeterzahl_verkaufsflaeche Quadratmeterzahl der
- * Ladenverkaufsfläche
- * @see de.diejungsvondertanke.tankstelle.MittlereTankstelle#quadratmeterzahl_verkaufsflaeche
- * quadratmeterzahl_verkaufsflaeche
- * @see de.diejungsvondertanke.tankstelle.Tankstelle Tankstelle
- */
- public MittlereTankstelle(int quadratmeterzahl_verkaufsflaeche) {
- Treibstoff[] treibstoffe = { new Treibstoff(Treibstofftyp.SUPER, 6000f, 0f, 12000),
- new Treibstoff(Treibstofftyp.SUPER_E10, 6000f, 0f, 12000),
- new Treibstoff(Treibstofftyp.PREMIUM_DIESEL, 6000f, 0f, 12000),
- new Treibstoff(Treibstofftyp.AUTOGAS, 6000f, 0f, 12000) };
- super((byte) 2, Groesse.MITTEL, treibstoffe);
- this.quadratmeterzahl_verkaufsflaeche = quadratmeterzahl_verkaufsflaeche;
- }
-
- /**
- * Konstruktor für mittelgroße Tankstellen inklusive Mitarbeiteranzahl
- *
- * @param quadratmeterzahl_verkaufsflaeche Quadratmeterzahl der
- * Ladenverkaufsfläche
- * @param mitarbeiterzahl Mitarbeiteranzahl
- * @see de.diejungsvondertanke.tankstelle.MittlereTankstelle#quadratmeterzahl_verkaufsflaeche
- * quadratmeterzahl_verkaufsflaeche
- * @see de.diejungsvondertanke.tankstelle.Tankstelle Tankstelle
- * @see de.diejungsvondertanke.tankstelle.Tankstelle#mitarbeiterzahl
- * mitarbeiterzahl
- */
- public MittlereTankstelle(int quadratmeterzahl_verkaufsflaeche, byte mitarbeiterzahl) {
- Treibstoff[] treibstoffe = { new Treibstoff(Treibstofftyp.SUPER, 6000f, 0f, 12000),
- new Treibstoff(Treibstofftyp.SUPER_E10, 6000f, 0f, 12000),
- new Treibstoff(Treibstofftyp.PREMIUM_DIESEL, 6000f, 0f, 12000),
- new Treibstoff(Treibstofftyp.AUTOGAS, 6000f, 0f, 12000) };
- super(mitarbeiterzahl, Groesse.MITTEL, treibstoffe);
- this.quadratmeterzahl_verkaufsflaeche = quadratmeterzahl_verkaufsflaeche;
- }
-}
--- /dev/null
+package de.diejungsvondertanke.tankstelle;
+
+/**
+ * The size of a fuel station. Is more or less decorative, because you can infer
+ * the size from the fuel station's type
+ */
+public enum Size {
+ /**
+ * A large fuel station
+ */
+ LARGE,
+ /**
+ * A medium fuel station
+ */
+ MEDIUM,
+ /**
+ * A small fuel station
+ */
+ SMALL
+}
--- /dev/null
+package de.diejungsvondertanke.tankstelle;
+
+/**
+ * Small fuel station
+ */
+public class SmallFuelStation extends FuelStation {
+ /**
+ * Number of drink vending machines
+ */
+ private short number_of_vending_machines;
+
+ /**
+ * Constructs small fuel stations
+ *
+ * @param number_of_vending_machines Number of drink vending machines
+ * @see de.diejungsvondertanke.tankstelle.SmallFuelStation#number_of_vending_machines
+ * number_of_vending_machines
+ * @see de.diejungsvondertanke.tankstelle.FuelStation FuelStation
+ */
+ public SmallFuelStation(short number_of_vending_machines) {
+ Fuel[] fuels = { new Fuel(FuelType.SUPER, 4000f, 0f, 8000),
+ new Fuel(FuelType.DIESEL, 4000f, 0f, 8000) };
+ super((byte) 1, Size.SMALL, fuels);
+ this.number_of_vending_machines = number_of_vending_machines;
+ }
+
+ /**
+ * Constructs small fuel stations
+ *
+ * @param number_of_vending_machines Number of drink vending machines
+ * @param number_of_employees Number of employees
+ * @see de.diejungsvondertanke.tankstelle.SmallFuelStation#number_of_vending_machines
+ * number_of_vending_machines
+ * @see de.diejungsvondertanke.tankstelle.FuelStation FuelStation
+ * @see de.diejungsvondertanke.tankstelle.FuelStation#number_of_employees
+ * number_of_employees
+ */
+ public SmallFuelStation(short number_of_vending_machines, byte number_of_employees) {
+ Fuel[] fuels = { new Fuel(FuelType.SUPER, 4000f, 0f, 8000),
+ new Fuel(FuelType.DIESEL, 4000f, 0f, 8000) };
+ super(number_of_employees, Size.SMALL, fuels);
+ this.number_of_vending_machines = number_of_vending_machines;
+ }
+}
package de.diejungsvondertanke.tankstelle;
/**
- * Abstrakte Klasse
- * Alle Tankstellen erben hiervon
+ * Abstract class.
+ * All fuel station subtypes inherit from this class.
*
- * @see de.diejungsvondertanke.tankstelle.GrosseTankstelle Große Tankstelle
- * @see de.diejungsvondertanke.tankstelle.MittlereTankstelle Mittelgroße
- * Tankstelle
- * @see de.diejungsvondertanke.tankstelle.KleineTankstelle Kleine Tankstelle
+ * @see de.diejungsvondertanke.tankstelle.LargeFuelStation LargeFuelStation
+ * @see de.diejungsvondertanke.tankstelle.MediumFuelStation MediumFuelStation
+ * @see de.diejungsvondertanke.tankstelle.SmallFuelStation SmallFuelStation
*/
-abstract class Tankstelle {
+abstract class FuelStation {
/**
- * Anzahl der Mitarbeiter einer Tankstelle
+ * Number of employees of this fuel stations
*/
- private byte mitarbeiterzahl;
+ private byte number_of_employees;
/**
- * Treibstoffarten und -mengen.
+ * Fuel types and -amounts
*/
- public Treibstoff[] treibstoffe;
+ public Fuel[] fuels;
/**
- * Größe der Tankstelle. Ist eher dekorativ, da man das auch über den Objekttyp
- * (KleineTankstelle | MittlereTankstelle | GrosseTankstelle)
- * auslesen kann.
+ * The size of a fuel station. Is more or less decorative, because you can infer
+ * the size from the fuel station's type
+ *
+ * @see de.diejungsvondertanke.tankstelle.Size Size
*/
- private Groesse groesse;
+ private Size size;
/**
- * Abstrakter Superkonstruktor für Tankstellen.
+ * Protected superconstructor for fuel stations
*
- * @param mitarbeiterzahl Anzahl der Mitarbeiter dieser Tankstelle
- * @param groesse Größe der Tankstelle als Enum-Wert (KLEIN | MITTEL |
- * GROSS)
- * @param treibstoffe Array der Treibstoffe dieser Tankstelle
- * @see de.diejungsvondertanke.tankstelle.GrosseTankstelle Große Tankstelle
- * @see de.diejungsvondertanke.tankstelle.MittlereTankstelle Mittelgroße
- * Tankstelle
- * @see de.diejungsvondertanke.tankstelle.KleineTankstelle Kleine Tankstelle
- * @see de.diejungsvondertanke.tankstelle.Treibstoff Treibstoff
+ * @param number_of_employees Number of employees working at this fuel station
+ * @param size Size of the fuel station (see Size enum)
+ * @param fuels Array of fuels of this fuel station
+ * @see de.diejungsvondertanke.tankstelle.LargeFuelStation LargeFuelStation
+ * @see de.diejungsvondertanke.tankstelle.MediumFuelStation MediumFuelStation
+ * @see de.diejungsvondertanke.tankstelle.SmallFuelStation SmallFuelStation
+ * @see de.diejungsvondertanke.tankstelle.Fuel Fuel
+ * @see de.diejungsvondertanke.tankstelle.Size Size
*/
- protected Tankstelle(byte mitarbeiterzahl, Groesse groesse, Treibstoff[] treibstoffe) {
- this.mitarbeiterzahl = mitarbeiterzahl;
- this.groesse = groesse;
- this.treibstoffe = treibstoffe;
- }
-
- public byte getMitarbeiterzahl() {
- return mitarbeiterzahl;
- }
-
- public void setMitarbeiterzahl(byte mitarbeiterzahl) {
- this.mitarbeiterzahl = mitarbeiterzahl;
+ protected FuelStation(byte number_of_employees, Size size, Fuel[] fuels) {
+ this.number_of_employees = number_of_employees;
+ this.size = size;
+ this.fuels = fuels;
}
-
- // public Treibstoff[] getTreibstoffe() {
- // return treibstoffe;
- // }
-
- // public void setTreibstoffe(Treibstoff[] treibstoffe) {
- // this.treibstoffe = treibstoffe;
- // }
-
- public Groesse getGroesse() {
- return groesse;
- }
-
- // public void setGroesse(Groesse groesse) {
- // this.groesse = groesse;
- // }
}
+++ /dev/null
-package de.diejungsvondertanke.tankstelle;
-
-/**
- * Ein Treibstoff-Objekt. Beinhaltet Treibstofftyp, Preis pro Liter, Gelagerte
- * Menge und Lagerkapazität dieses Treibstoffs
- */
-public class Treibstoff {
- /**
- * Der Treibstofftyp. Wird sich innerhalb einer Instanz nicht ändern und ist
- * deshalb final
- *
- * @see de.diejungsvondertanke.tankstelle.Treibstofftyp Treibstofftyp
- */
- public final Treibstofftyp TREIBSTOFFTYP;
-
- /**
- * Vorhandener Treibstoffvorrat in L
- */
- private float menge;
-
- /**
- * Größtmöglicher Treibstoffvorrat in L
- */
- public final int KAPAZITAET;
-
- /**
- * Verkaufspreis in € / L
- */
- private float preis;
-
- /**
- * Konstruktor
- *
- * @param Treibstofftyp Die Treibstoffart dieser Instanz
- * @param menge Die aktuell vorhandene Lagermenge dieses Treibstoffs
- * @param preis Verkaufspreis in € / L
- * @param kapazitaet Maximaler Treibstoffvorrat / Lagerkapazität
- */
- public Treibstoff(Treibstofftyp Treibstofftyp, float menge, float preis, int kapazitaet) {
- this.TREIBSTOFFTYP = Treibstofftyp;
- this.menge = menge;
- this.preis = preis;
- this.KAPAZITAET = kapazitaet;
- }
-}
+++ /dev/null
-package de.diejungsvondertanke.tankstelle;
-
-/**
- * Mögliche Treibstoffypen
- *
- * @see de.diejungsvondertanke.tankstelle.Treibstoff Treibstoff
- */
-public enum Treibstofftyp {
- SUPER,
- DIESEL,
- SUPER_E10,
- PREMIUM_DIESEL,
- AUTOGAS
-}