H12 Watersportclub met pedalo Flashcards
(8 cards)
Pas de code van de watersportclub met zeil- en motorboten aan zodat ook pedalo’s toegevoegd kunnen worden.
➡️ Dit betekent: er bestonden al Zeilboot en Motorboot,
en die hadden wel radar-opties.
Dus: RadarBoot is een extra tussentype waar je dingen zet die geldig zijn voor beide (zeil- én motorboot), zoals:
radarAanBoord
berekenPrijsPerUur() mét toeslag als radar aanstaat
👉 Zo hoef je dat niet dubbel te schrijven in Zeilboot en Motorboot.
❓ Waarom is RadarBoot een public abstract class RadarBoot extends Boot
Het is een gedeeld type met radarlogica
Maar: je mag geen “pure RadarBoot” huren, alleen Zeilboot of Motorboot
➡️ Daarom: abstract → mag geen object van maken
➡️ Daarom: extends Boot → want het is een soort Boot
❓ Waarom is Boot abstract?
public abstract class Boot {
…
}
Iedere boot moet zijn eigen prijs per uur berekenen
(Pedalo is anders dan RadarBoot, Zeilboot, enz.)
Maar de basisklasse weet die berekening niet zelf
(die weet niet of het met radar is, of met kwartieren)
➡️ Daarom: abstracte methode public abstract double berekenPrijsPerUur();
➡️ En dus ook: abstracte klasse Boot, want hij bevat een abstracte methode
📦 Wat gebeurt er in class Reservatie implements Comparable<Reservatie>?</Reservatie>
“Reservatie-objecten kunnen vergeleken worden met elkaar.”
Dat komt door de interface Comparable<T>.
Die dwingt je om deze methode te maken:
@Override
public int compareTo(Reservatie o) {
// bepaalt wie kleiner/groter/gelijk is
}</T>
📊 Hoe werkt compareTo()?
Als deze reservatie minder kost dan de andere → -1
Als duurder → 1
Als even duur → 0
Zo kun je bijvoorbeeld een lijst van reservaties sorteren op prijs.
@Override
public int compareTo(Reservatie o) {
if (this.teBetalen() < o.teBetalen()) {
return -1;
} else if (this.teBetalen() > o.teBetalen()) {
return 1;
} else {
return 0;
}
}
“Een pedalo heeft geen instrumenten zoals fishfinder, radar of GPS.”
→ zegt: andere boten hebben dat wél → dus daar komt radarlogica bij.
Kijk wat alleen boten met radar gemeen hebben
Radarboot:
basisprijsPerUur
boolean radarAanBoord
Extra berekening: toeslag als radar aanstaat
➡️ Deze logica geldt voor Zeilboot én Motorboot,
maar niet voor Pedalo.
Pedalo:
Geen radar
Prijs per kwartier
Heeft ook een naam → komt uit Boot
➡️ Pedalo erft alleen van Boot, niet van RadarBoot.
public class Pedalo extends Boot {
blablablabla
@Override
public double berekenPrijsPerUur() {
return 4 * prijsPerKwartier;
}
}
De basishuurprijs van een pedalo is 6.25€ per kwartier. Een prijs die aanpasbaar en opvraagbaar is.
let op
public void setPrijsPerKwartier(double prijsPerKwartier) {
this.prijsPerKwartier = prijsPerKwartier;
}
public double getPrijsPerKwartier() { return prijsPerKwartier; }