Menu
CoddyTech

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 = 4

extends 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) # true

Der 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.

challenge icon

Aufgabe

Einfach

Erstelle die Klasse Car in car.gd:

  • ihr Klassenname ist Car und sie erweitert RefCounted
  • eine String-Variable brand, die mit "Generic" beginnt
  • eine int-Variable wheels, die mit 4 beginnt

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: Generic

Dein 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)
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-GDScript-Compiler