Wiederholung – Einfacher Taschenrechner
Teil des Abschnitts Objektorientierte Programmierung der GDScript-Journey von Coddy. Lektion 8 von 65.
Aufgabe
MittelSchreibe die Klasse Calculator in calculator.gd. Sie speichert ein laufendes Ergebnis in der float-Eigenschaft result, die mit 0.0 beginnt.
add(number),subtract(number),multiply(number)unddivide(number)führen die jeweilige Operation mitnumberaufresultaus, speichern das neue Ergebnis und geben es zurück- Wenn
divide()0erhält, gibt die MethodeError: Division by zeroaus, lässtresultunverändert und gibt es zurück clear()setztresultwieder auf0.0und gibt es zurückget_result()gibtresultzurück
Der bereitgestellte Code liest ein, wie viele Befehle folgen, und anschließend einen Befehl pro Zeile, zum Beispiel add 5, divide 0 oder clear. Nach jedem Befehl gibt er den Befehlsnamen und den Wert aus, den die Methode zurückgegeben hat, und am Ende das endgültige Ergebnis. Bei add 5, multiply 3, subtract 2, divide 0 und divide 2 gibt er Folgendes aus:
add -> 5.0
multiply -> 15.0
subtract -> 13.0
Error: Division by zero
divide -> 13.0
divide -> 6.5
Final result: 6.5Dein Code gehört in calculator.gd. main.gd enthält den bereitgestellten Ein-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
extends Node
func _ready():
# Vorgegebener Ein-/Ausgabecode: unverändert lassen
var calc := Calculator.new()
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
var value := 0.0
match parts[0]:
"add":
value = calc.add(float(parts[1]))
"subtract":
value = calc.subtract(float(parts[1]))
"multiply":
value = calc.multiply(float(parts[1]))
"divide":
value = calc.divide(float(parts[1]))
"clear":
value = calc.clear()
print("%s -> %s" % [parts[0], value])
print("Final result: %s" % calc.get_result())
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