1.1 Klassendiagramm erweitern
Von VIPKunde geht ein Pfeil nach Loge mit Multiplizität 1 und Rollenname dieLoge.
Von FanKunde geht ein Pfeil nach Loge mit Multiplizität 0..1 und Rollenname dieLoge.
1.2 Quellcode Klassen
import java.time.LocalDate; import java.util.ArrayList; public abstract class Kunde { private String name; private ArrayList<Karte> dieKarten = new ArrayList<Karte>(); public Kunde(String name){ this.name=name; } public double berechneKartenPreis(){ double preis =0; int i; for (i=0;i<dieKarten.size();i++){ preis+=dieKarten.get(i).berechneKartenPreis(); } return preis; } public void kaufeKarte(double grundPreis, LocalDate kaufTag, LocalDate spielTag){ Karte k = new Karte(grundPreis,kaufTag,spielTag); dieKarten.add(k); } }
import java.util.ArrayList; public class VIPKunde extends Kunde { private String telefonnummer; private ArrayList<VIPKunde> VIPFreunde = new ArrayList<VIPKunde>(); public VIPKunde(String name, String telefonN){ super(name); telefonnummer=telefonN; } public VIPKunde(String name, String telefonN, ArrayList<VIPKunde>freunde) { super(name); telefonnummer=telefonN; VIPFreunde=freunde; } public double berechneKartenPreis(){ double preis; preis = super.berechneKartenPreis(); if(VIPFreunde.size()>1){ preis = preis*0.95; } return preis; } }
import java.time.LocalDate; import java.time.temporal.ChronoUnit; //https://www.javabrahman.com/java-8/java-8-how-to-calculate-difference-between-two-java-time-localdate-instances/ public class Karte { private double grundPreis; private LocalDate spielTag; private LocalDate gekauftAm; public Karte(double grundPreis, LocalDate kaufTag, LocalDate spielTag){ this.grundPreis=grundPreis; this.spielTag=spielTag; this.gekauftAm=kaufTag; } public double berechneKartenPreis(){ long diff = ChronoUnit.DAYS.between(gekauftAm, spielTag); if (diff>30){ return grundPreis*0.9; } return grundPreis; } }
1.3 Testprogramm
import java.time.LocalDate; import java.util.ArrayList; public class Test { public static void main(String[] args) { VIPKunde freund1 = new VIPKunde("Toni","023 11038"); VIPKunde freundin2 = new VIPKunde("Tonja","023 110382"); ArrayList<VIPKunde> freunde = new ArrayList<VIPKunde>(); freunde.add(freund1); freunde.add(freundin2); VIPKunde klopp = new VIPKunde("Adam Klopp","032 6289347",freunde); klopp.kaufeKarte(24.90, LocalDate.parse("2020-06-01"),LocalDate.parse("2020-07-04")); klopp.kaufeKarte(22.90,LocalDate.parse("2020-06-01"),LocalDate.parse("2020-06-06")); System.out.println("Gesamtpreis: "+klopp.berechneKartenPreis()); } }
Projekt mit IntelliJ: 2020-So-FIA-A1.zip