Einführung in die OOP
Teil des Abschnitts Objektorientierte Programmierung der GDScript-Journey von Coddy. Lektion 2 von 65.
Die objektorientierte Programmierung (OOP) organisiert ein Programm rund um Objekte. Ein Objekt bündelt Daten (Variablen) mit den Funktionen, die mit diesen Daten arbeiten. Eine Klasse beschreibt, welche Daten ihre Objekte enthalten und was sie tun, und du erstellst so viele Objekte daraus, wie du benötigst.
In GDScript ist jede Skriptdatei eine Klasse. Benenne sie mit class_name und deklariere die Variablen, die jedes Objekt enthält:
# car.gd
class_name Car
extends RefCounted
var brand: String = "Generic"
var wheels: int = 4extends RefCounted sorgt dafür, dass Godot ein Car-Objekt selbstständig freigibt, sobald keine Variable mehr darauf verweist. Verwende es für jede Klasse, die Daten enthält und kein Node ist. Ein Skript ohne eine extends-Zeile erweitert ebenfalls RefCounted.
Rufe new() für die Klasse auf, um ein Objekt zu erstellen, und greife dann mit einem Punkt auf seine Variablen zu:
# main.gd
var my_car := Car.new()
print(my_car.wheels) # 4
print(my_car is Car) # trueDer Operator is prüft, von welcher Klasse ein Objekt erstellt wurde. Wenn du das Objekt selbst ausgibst, wird nur eine ID wie <RefCounted#-9223372009860233781> angezeigt. Gib daher stattdessen seine Variablen aus.
Die Klasse ist der Bauplan, und jedes Objekt ist ein eigenes daraus erstelltes Ding: Wenn du Car.new() zweimal aufrufst, erhältst du zwei Autos.
Aufgabe
EinfachErstelle die Klasse Car in car.gd:
- ihr Klassenname ist
Carund sie erweitertRefCounted - eine
String-Variablebrand, die mit"Generic"beginnt - eine
int-Variablewheels, die mit4beginnt
Der bereitgestellte Code liest ein, wie viele Autos erstellt werden sollen, und erstellt jedes davon mit Car.new(). Er gibt die Anzahl der Autos und die Gesamtzahl ihrer Räder aus. Wenn mindestens ein Auto erstellt wurde, liest er eine Marke für das erste Auto ein und gibt die Marken des ersten und des letzten Autos aus. Für die Eingabe 3 und Tesla gibt er Folgendes aus:
Cars: 3
Wheels: 12
First car: Tesla
Last car: GenericDein Code gehört in car.gd. main.gd enthält den bereitgestellten Eingabe-/Ausgabecode und kann nicht bearbeitet werden.
Probier es selbst
extends Node
func _ready():
# Vorgegebener Ein-/Ausgabecode: unverändert lassen
var count := int(OS.read_string_from_stdin())
var garage: Array[Car] = []
for i in count:
garage.append(Car.new())
var total := 0
for car in garage:
total += car.wheels
print("Cars: %d" % garage.size())
print("Wheels: %d" % total)
if count > 0:
garage[0].brand = OS.read_string_from_stdin()
print("First car: %s" % garage[0].brand)
print("Last car: %s" % garage[-1].brand)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
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