180 likes | 351 Views
OPLOSSINGEN H9. Oefening 1 H9. Definieer een superklasse Rekening: Attributen: rekeningNr (long), saldo (double) en houder (String) Methoden: constructor(met 3 arg), accessors en mutators, storten, afhalen en overschrijven. Definieer nu de subklasse ZichtRekening:
E N D
Oefening 1 H9. • Definieer een superklasse Rekening: • Attributen: rekeningNr (long), saldo (double) en houder (String) • Methoden: constructor(met 3 arg), accessors en mutators, storten, afhalen en overschrijven. • Definieer nu de subklasse ZichtRekening: • Extra attributen: maxKrediet (double). • Extra methoden: constructor, get en set MaxKrediet. • Override methode: setSaldo. • En de subklasse SpaarRekening: • Extra attributen: aangroeiIntrest (double) : voor alle spaarRekeningen dezelfde waarde!. • Extra methoden: constructor, get en set AangroeiIntrest. • Override methode: setSaldo.
class Rekening { private long rekeningNr; private double saldo; private String houder; Rekening(long rek, double sal, String houd) { setRekeningNr(rek); setSaldo(sal); setHouder(houd); } private void setRekeningNr( long reknr) { if ( reknr/100 % 97 != reknr %100 ) throw new IllegalArgumentException("Ongeldig rekeningnr"); else rekeningNr = reknr; }
public long getRekeningNr() { return rekeningNr; } public void setSaldo(double sal) { saldo = sal; } public double getSaldo() { return saldo; } public void setHouder(String houd) { if (houd==null||houd.length()==0) throw new IllegalArgumentException("Houder ongeldig"); else houder = houd; } public double getHouder() { return saldo; }
public void storten( double bedrag) { if (bedrag < 0.0) throw new IllegalArgumentException("Bedrag negatief"); else saldo+=bedrag; } public void afhalen(double bedrag) { if (bedrag < 0.0) throw new IllegalArgumentException("Bedrag negatief"); else setSaldo(getSaldo()-bedrag); }
public void overschrijven(Rekening naarRek, double bedrag) { if ( !(naarRek instanceof Rekening) ) throw new IllegalArgumentException ("NaarRekening geen Rekening"); else { afhalen(bedrag); naarRek.storten(bedrag); } } }
class ZichtRekening extends Rekening { private double maxKrediet; public ZichtRekening(double max, long rek, double sal, String houd) { super(rek, sal, houd); setMaxKrediet(max); } public void setMaxKrediet(double max) { if (max >0.0) throw new IllegalArgumentException("MaxKrediet positief"); else maxKrediet = max; } public double getMaxKrediet() { return maxKrediet;}
public void setSaldo(double sal) { if (sal < maxKrediet) throw new IllegalArgumentException("Maxkrediet bereikt"); else super.setSaldo(sal); } } class SpaarRekening extends Rekening { private static double aangroeiIntrest; public SpaarRekening(long rek, double sal, String houd) { super(rek, sal, houd); } public static void setAangroeiIntrest(double aangroei) { if (aangroei < 0.0) throw new IllegalArgumentException("Intrest negatief"); else aangroeiIntrest = aangroei; }
public static double getAangroeiIntrest() { return aangroeiIntrest; } public void setSaldo(double sal) { if (sal < 0) throw new IllegalArgumentException ("Saldo kan niet negatief worden"); else super.setSaldo(sal); } }
Oefening 2 H9. • Definieer een abstracte klasse Voertuig: • Attributen: snelheid (int), personen (int), brandstof (char), verplaatsingswijze (String). • Methoden: accessors en mutators. • Definieer een concrete subklasse Auto: • Extra attributen: nummerplaat (String), daktype (char). • Methoden: constructors, accessors en mutators. • En nog een concrete subklasse Auto: • Attributen: loydsnummer (int), naam (String), diepgang (int). • Methoden: constructors, accessors en mutators.
abstract class Voertuig { private int snelheid; private int personen; private char brandstof; private char verplaatsingswijze; public void setSnelheid(int s) { snelheid = s> 0? s : 0; } public int getSnelheid() { return snelheid; } public void setPersonen(int p) { personen = p> 0? p : 0; } public int getPersonen() { return personen; } public void setBrandstof(char b) { brandstof = b=='D'||b=='B'||b=='L'||b=='K' ? b : 'D';} public char getBrandstof() { return brandstof; } public void setVerplaatsingswijze(char v) {verplaatsingswijze = v=='V'||v=='R'||v=='F'||v=='S'|| v=='v' ? v : 'R';} public char getVerplaatsingswijze() { return verplaatsingswijze; } public Voertuig(int s, int p, char b, char v) { setSnelheid(s); setPersonen(p); setBrandstof(b); setVerplaatsingswijze(v); } }
class Auto extends Voertuig { private String nrplaat; private char daktype; public void setNrplaat(String nr) { nrplaat = nr!=null ? nr : "ZZZ000"; } public String getNrplaat() { return nrplaat; } public void setDaktype( char d) { daktype = d=='G'||d=='H'||d=='S' ? d :'G';} public char getDaktype() { return daktype; } public Auto(String nr, char d, int s, int p, char b, char v) { super(s, p, b, v); setNrplaat(nr); setDaktype(d); } }
class Schip extends Voertuig { private int loydsnr; private String naam; private int diepgang; public void setLoydsnr(int nr) { loydsnr = nr; } public int getLoydsnr() { return loydsnr; } public void setNaam(String n) { naam = n; } public String getNaam() { return naam; } public void setDiepgang(int d) { diepgang = d> 0? d : 0;} public int getDiepgang() { return diepgang; } public Schip(int nr, String n, int d, int s, int p, char b, char v) { super(s, p, b, v); setLoydsnr(nr); setNaam(n); setDiepgang(d); } }
Oefening 3 H9. • Definieer de klasse Restaurant: • Attributen: aantalSter (int),… • Methoden: accessor(s) en mutator(s), … • Herschrijf de klasse Voertuig van Oefening 2 als een interface. • Definieer Restauratiewagen als een subklasse van Restaurant, die eveneens de interface Voertuig implementeert. • Extra attributen: zelf invullen. • Extra methoden: zelf invullen.
class Restaurant { private int aantalSter; public void setAantalSter(int a) { aantalSter = a>0 ? a : 0; } public int getAantalSter() { return aantalSter; } public Restaurant(int n) { setAantalSter(n); } } interface Voertuig { public void setSnelheid(int s); public int getSnelheid(); public void setPersonen(int p); public int getPersonen(); public void setBrandstof(char b); public char getBrandstof(); public void setVerplaatsingswijze(char v); public char getVerplaatsingswijze(); }
class VoertuigClass implements Voertuig { private int snelheid; private int personen; private char brandstof; private char verplaatsingswijze; public void setSnelheid(int s) { snelheid = s> 0? s : 0; } public int getSnelheid() { return snelheid; } public void setPersonen(int p) { personen = p> 0? p : 0; } public int getPersonen() { return personen; } public void setBrandstof(char b) { brandstof = b=='D'||b=='B'||b=='L'||b=='K' ? b : 'D';} public char getBrandstof() { return brandstof; } public void setVerplaatsingswijze(char v) {verplaatsingswijze = v=='V'||v=='R'||v=='F'||v=='S'|| v=='v' ? v : 'R';} public char getVerplaatsingswijze() { return verplaatsingswijze; }
public VoertuigClass(int s, int p, char b, char v) { setSnelheid(s); setPersonen(p); setBrandstof(b); setVerplaatsingswijze(v); } }
class RestauratieWagen extends Restaurant implements Voertuig { //hier nog specifieke attributen ... private VoertuigClass voertuig; public void setSnelheid( int s) { voertuig.setSnelheid(s); } public int getSnelheid() { return voertuig.getSnelheid(); } public void setPersonen(int p) { voertuig.setPersonen(p); } public int getPersonen() { return voertuig.getPersonen(); } public void setBrandstof(char b) { voertuig.setBrandstof(b); } public char getBrandstof() { return voertuig.getBrandstof(); } public void setVerplaatsingswijze(char v) {voertuig.setVerplaatsingswijze(v); } public char getVerplaatsingswijze() { return voertuig.getVerplaatsingswijze(); } public RestauratieWagen(int n, int s, int p, char b, char v) { super(n); voertuig = new VoertuigClass(s, p, b, v); } }