
IBAN staat voor International Bank Account Number en in België bestaat een IBAN-nummer uit 16 tekens. Aan het begin staan de letters ‘BE’, gevolgd door 2 controlecijfers. Daarna volgen de 12 cijfers van het nationaal rekeningnummer. Om de leesbaarheid te verbeteren worden de 16 karakters ingedeeld in groepen van 4 en gescheiden door spaties of koppeltekens. Een Belgisch rekeningnummer wordt dus vaak getoond als BE68-5390-0754-7034 of BE68 5390 0754 7034.
Definieer een class met de naam “BankAccount” met als attributen “IBAN_number” en “balance”. Attribuut “balance” heeft een default parameterwaarde van 0.0 (float).
Voor deze oefening houden we geen rekening met een correctheid van de controlecijfers. Een correct aangemaakt banknummer start met de landcode “BE” gevolgd door 14 cijfers (aan elkaar, dus niet opgesplits door koppeltekens of spaties). Dit controleren we met een assertation error en tonen de tekst “Incorrect IBAN-number” indien hier niet aanvoldaan is.
Let op: bij de creatie van een object van de class BankAccount mag de landcode in kleine letters zijn en het rekeningnummer ingegeven worden met of zonder de scheiding door koppeltekens of spaties, dus volgende statements maken een geldig object aan met als self.IBAN_number = “BE12345678901234” en self.balance = 0.0:
Als je de inhoud van het object toont met het print() commando, dan is het formaat “Account <IBAN_nummer>: <balance> EUR waarbij balance een een kommagetal is met 2 cijfers na de komma, de landcode in hoofdletters en koppeltekens voor een betere leesbaarheid, bv. “Account BE68-5390-0754-7034: 1250.40 EUR”. Als je het object opvraagt in de CLI zonder print(), wordt het getoond in het formaat “<IBAN_nummer>”, de landcode in hoofdletters en de cijfers achter elkaar, dus zonder scheidingen. Maar hiervoor gebruik van de magic methods “__repr__” en “__str__“.
De class “BankAccount” heeft ook nog volgende 3 methoden: deposit, withdraw en check_balance.
Opmerking: Er is verder geen error-afhandeling nodig, de opgegeven waarden zijn positief en de bankrekening mag onder 0 gaan.
Test de class en zijn methoden eventueel zoals in onderstaand voorbeeld. Deze test-code moet je niet indienen in Dodona.
account1 = BankAccount("BE12-3456-7890-1234")
print(account1) #Output: Account BE12-3456-7890-1234: 0.00 EUR
print(account1.__repr__()) #Output: BE12345678901234
account2 = BankAccount("be23456789012345", 100)
print(account2) #Output: Account BE23-4567-8901-2345: 100.00 EUR
account3 = BankAccount("BE24-158a-1230-52") #Output: Incorrect IBAN-number
account1.deposit(50)
account1.check_balance() #Output: Het saldo van rekeningnummer BE12-3456-7890-1234 is 50.00 EUR.
account1.withdraw(25)
account1.check_balance() #Output: Het saldo van rekeningnummer BE12-3456-7890-1234 is 25.00 EUR.