RabbidRobin
Ex-Teamleider Forum
[04] Gekko
[08] Sam
[06] Jaspenia
[08] Sam
[06] Jaspenia
public abstract class IJsje {
protected String beschrijving = "onbekend ijsje";
public String geefBeschrijving() {
return beschrijving;
}
public abstract int prijs();
}
public class VanilleIJs extends IJsje{
public VanilleIJs() {
beschrijving = "Vanille-ijsje";
}
@Override
public int prijs() {
return 150;
}
}
public class YoghurtIJs extends IJsje {
public YoghurtIJs() {
beschrijving = "Yoghurtijsje";
}
@Override
public int prijs() {
return 200;
}
}
public abstract class Topping extends IJsje {
private final IJsje ijsje;
public Topping(IJsje ijsje) {
this.ijsje = ijsje;
beschrijving = "onbekende topping";
}
@Override
public String geefBeschrijving() {
return ijsje.beschrijving.equals("Vanille-ijsje") || ijsje.beschrijving.equals("Yoghurtijsje")
? ijsje.geefBeschrijving() + " met als topping " + beschrijving
: ijsje.geefBeschrijving() + " en " + beschrijving;
}
@Override
public int prijs() {
return ijsje.prijs();
}
}
public class SpikkelsTopping extends Topping{
public SpikkelsTopping(IJsje ijsje) {
super(ijsje);
beschrijving = "spikkels";
}
@Override
public int prijs(){
return super.prijs();
}
}
public class SlagroomTopping extends Topping {
public SlagroomTopping(IJsje ijsje) {
super(ijsje);
beschrijving = "slagroom";
}
@Override
public int prijs(){
return super.prijs() + 50;
}
}
public class ChocoDipTopping extends Topping {
public ChocoDipTopping(IJsje ijsje) {
super(ijsje);
beschrijving = "chocodip";
}
@Override
public int prijs(){
return super.prijs() + 30;
}
}
public class IJscoboer {
public static void main(String[] args) {
IJsje ijsje = new SlagroomTopping(new ChocoDipTopping(new VanilleIJs()));
IJsje ijsje2 = new SlagroomTopping(new SpikkelsTopping(new ChocoDipTopping(new YoghurtIJs())));
System.out.println("Het eerste bestelde ijsje is: " + ijsje.geefBeschrijving() + ". Dit kost " + ijsje.prijs() + "ct.");
System.out.println("Het tweede bestelde ijsje is: " + ijsje2.geefBeschrijving() + ". Dit kost " + ijsje2.prijs() + "ct.");
}
}
Onder constructie