In navolging van de Spaarrekening opgave uit de vorige module, zul je nu een zichtrekening implementeren. Een zichtrekening is een rekening waarop transacties naar andere zichtrekeningen mogelijk zijn. In tegenstelling tot de Spaarrekening-opgave, zul je deze opgave implementeren als een klasse.

Bedragen en afrondingsfouten

Om afrondingsfouten te vermijden, zullen bedragen in deze opgave worden voorgesteld door integers. Dit is namelijk ook hoe in echte financiële applicaties wordt omgegaan met valuta. De werkwijze is voordehandliggend, het bedrag wordt in cent-waarde opgeslagen.

Het bedrag € 54,81 wordt bijvoorbeeld voorgesteld door de integer 5481. Dit heeft als limitatie dat je maximaal met bedragen van om en bij de € 21 miljoen kan werken, maar dat is voor deze opgave niet belangrijk.

Opgave

Schrijf een Java-klasse CurrentAccount. Deze klasse stelt een zichtrekening voor en moet volgende constructor en minstens volgende methoden bevatten. Je bent volledig vrij om de nodige instantievariabelen te kiezen en het is ook toegelaten (en aangeraden!) om extra methodes toe te voegen, dit kan je helpen bij het zoeken naar fouten.

Constructor

De constructor heeft 2 argumenten:

public CurrentAccount(String name, int balance)

Methodes

Je klasse moet minstens onderstaande methoden hebben. Deze zijn gerangschikt in alfabetische volgorde, niet volgens moeilijkheid.

deposit()

public boolean deposit(int amount)

Deze methode verhoogt de balans op de rekening met amount. Indien dit lukt, geeft de methode true terug, anders false. Het mag enkel mogelijk zijn om een positief bedrag te storten.

getBalance()

public int getBalance()

Deze methode geeft de huidige balans op de rekening terug.

getName()

public String getName()

Deze methode geeft de naam van de rekeninghouder terug.

receive()

public boolean receive(CurrentAccount sender, int amount)

Deze methode schrijft amount over van de rekening van sender naar de huidige rekening. Indien dit lukt, geeft de methode true terug, anders false. Het mag enkel mogelijk zijn om een positief bedrag over te schrijven en de rekening van de verzender mag niet in het rood gaan.

send()

public boolean send(CurrentAccount receiver, int amount)

Deze methode schrijft amount over van de huidige rekening, naar de rekening van receiver. Indien dit lukt, geeft de methode true terug, anders false. Het mag enkel mogelijk zijn om een positief bedrag over te schrijven en de rekening van de verzender mag niet in het rood gaan.

withdraw()

public boolean withdraw(int amount)

Deze methode haalt amount af van de huidige rekening. Indien dit lukt, geeft de methode true terug, anders false. Het mag niet mogelijk zijn om een negatief bedrag af te halen en de rekening mag niet in het rood gaan.

Lokaal testen

Het is aangeraden om je oplossing lokaal uit te proberen en optioneel wat print-statements toe te voegen om je te helpen debuggen. Dit kan je simpelweg doen door aan je klasse een main-methode toe te voegen, net zoals in vorige opgaves.

public class CurrentAccount {
    // Constructor en andere methodes staan hierboven.

    public static void main(String[] args){
        CurrentAccount rekening1 = new CurrentAccount("Tibo", 5000);
        CurrentAccount rekening2 = new CurrentAccount("Lander", 2000);
        System.out.println(rekening1.receive(rekening2, 1000)); // output: true
    }
}