Wiederholung – Bankkontenverwaltung
Teil des Abschnitts Objektorientierte Programmierung der GDScript-Journey von Coddy. Lektion 14 von 65.
Aufgabe
MittelSchreibe die Klasse BankAccount in bank_account.gd. Sie vereint alles aus diesem Kapitel.
- Eine statische
int-Variableinterest_percent, die mit2beginnt und von allen Konten gemeinsam genutzt wird - Zwei private Eigenschaften:
_owner_name(einString) und_balance(einint, der mit0beginnt) - Eine schreibgeschützte Eigenschaft
owner_name, deren Getter_owner_namezurückgibt - Eine Eigenschaft
balance, deren Getter_balancezurückgibt und deren Setter bei einem negativen WertBalance cannot be negativeausgibt und andernfalls den Wert in_balancespeichert - Der Konstruktor
_init(account_owner, start_balance)speichert den Kontoinhaber und weiststart_balancebalancezu, sodass der Setter den Wert überprüft
Und diese Methoden:
deposit(amount): GibtDeposit amount must be positiveaus und gibtfalsezurück, wennamount0oder kleiner ist; andernfalls addiert er den Betrag und gibttruezurückwithdraw(amount): GibtWithdrawal amount must be positiveaus und gibtfalsezurück, wennamount0oder kleiner ist; gibtInsufficient fundsaus und gibtfalsezurück, wenn der Betrag größer als der Kontostand ist; andernfalls zieht er den Betrag ab und gibttruezurückapply_interest(): Addiert_balance * interest_percent / 100(ganze Dollar) zum Kontostand und gibt diesen Zinsbetrag zurückdisplay_info(): Gibt drei Zeilen aus:Account Owner: NAME,Balance: $BALANCEundInterest Rate: PERCENT%
Der bereitgestellte Code liest owner start_balance, die Anzahl der folgenden Befehle und die Befehle deposit N, withdraw N, set N (weist balance einen Wert zu), interest, rate N (setzt BankAccount.interest_percent) und info ein. Er gibt für jede erfolgreiche Einzahlung, Abhebung und Zinsgutschrift eine Zeile sowie am Ende den Kontostand des Kontoinhabers aus. Für Coddy 1000 und die Befehle deposit 500, withdraw 200, interest, info, set 5000 und withdraw 10000 gibt er Folgendes aus:
Deposited $500
Withdrew $200
Interest earned: $26
Account Owner: Coddy
Balance: $1326
Interest Rate: 2%
Insufficient funds
Coddy has $5000Dein Code gehört in bank_account.gd. main.gd enthält den bereitgestellten Ein-/Ausgabecode und kann nicht bearbeitet werden.
Probier es selbst
extends Node
func _ready():
# Vorgegebener Ein-/Ausgabecode: unverändert lassen
var first := OS.read_string_from_stdin().split(" ")
var account := BankAccount.new(first[0], int(first[1]))
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
match parts[0]:
"deposit":
if account.deposit(int(parts[1])):
print("Deposited $%s" % parts[1])
"withdraw":
if account.withdraw(int(parts[1])):
print("Withdrew $%s" % parts[1])
"set":
account.balance = int(parts[1])
"interest":
print("Interest earned: $%d" % account.apply_interest())
"rate":
BankAccount.interest_percent = int(parts[1])
"info":
account.display_info()
print("%s has $%d" % [account.owner_name, account.balance])
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort selfMethodenEigenschaftenKonstruktor (_init)Wiederholung – Einfacher Taschenrechner4Polymorphie
Methodenüberschreibung erneut betrachtetDuck-TypisierungAbstrakte Klassen und MethodenSchnittstellendesignRückblick – Formrechner2Klassenattribute
Instanz- vs. statische VariablenStatische FunktionenProperty-SetterProperty-GetterPrivat nach KonventionWiederholung – Bankkontenverwaltung5Kapselung
Öffentliche und private MemberValidierung mit SetternInformationsverbergenSchreibgeschützte EigenschaftenRückblick – System zur Schülerverwaltung8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungInnere KlassenNodes als KomponentenRefCounted vs. NodeEnums in Klassen11Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen3Vererbung
Grundlegende VererbungDas Schlüsselwort superMethodenüberschreibungVererbungskettenTypprüfungen mit isWiederholung – Mitarbeiterhierarchie6Spezielle Methoden
Einführung in virtuelle MethodenDie _to_string-MethodeBenutzerdefinierte IteratorenRückblick – Benutzerdefinierte Liste9Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBeobachter-MusterStrategie-Muster12Abschließende Herausforderungen
E-Learning-PlattformBankensystemEntwicklung von SpielfigurenFahrzeugvermietungÜbe selbstständig: Online-GDScript-Compiler