Menu
CoddyTech

Methoden

Teil des Abschnitts Objektorientierte Programmierung der GDScript-Journey von Coddy. Lektion 5 von 65.

Eine innerhalb einer Klasse deklarierte Funktion ist eine Methode: etwas, das die Objekte der Klasse tun können. Wie jede Funktion kann eine Methode Parameter annehmen und einen Wert zurückgeben. Außerdem kann sie die Variablen des Objekts lesen und ändern:

# score_board.gd
class_name ScoreBoard
extends RefCounted

var points: int = 0

func greet() -> void:
	print("Scoreboard ready")

func add(amount: int) -> void:
	points += amount

func doubled() -> int:
	return points * 2

func add_bonus() -> int:
	add(10)
	return points

Rufe eine Methode auf einem Objekt mit einem Punkt auf und übergib die Argumente in Klammern:

var board := ScoreBoard.new()
board.greet() # Scoreboard bereit
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15

Innerhalb der Klasse ruft eine Methode eine andere Methode desselben Objekts über deren Namen auf: add(10) in add_bonus() bedeutet self.add(10).

Eine Methode, die mit -> void deklariert ist, gibt nichts zurück, und eine Methode, die mit -> int deklariert ist, muss ein int zurückgeben. Jeder Aufruf wirkt sich auf sein eigenes Objekt aus: board.add(5) ändert board.points und keine andere Anzeigetafel.

Der Aufruf muss mit der Deklaration übereinstimmen: board.add() ohne Argument ist ein Fehler, der gemeldet wird, bevor das Programm ausgeführt wird.

challenge icon

Aufgabe

Einfach

Vervollständige die Methoden der Klasse BankAccount in bank_account.gd. Das Konto speichert sein Geld in der Variable balance, die mit 0 beginnt.

  • deposit(amount) addiert amount zum Kontostand
  • withdraw(amount) zieht amount ab und gibt true zurück. Wenn amount größer als der Kontostand ist, ändert sich nichts und die Methode gibt false zurück
  • get_balance() gibt den Kontostand zurück

Der bereitgestellte Code liest, wie viele Befehle folgen, und anschließend einen Befehl pro Zeile: deposit AMOUNT oder withdraw AMOUNT. Für jeden Befehl wird eine Zeile ausgegeben sowie der endgültige Kontostand. Für deposit 50 und withdraw 80 wird Folgendes ausgegeben:

Deposited 50
Not enough money for 80
Current balance: $50

Dein 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: Lass ihn unverändert
	var account := BankAccount.new()
	var count := int(OS.read_string_from_stdin())
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		var amount := int(parts[1])
		if parts[0] == "deposit":
			account.deposit(amount)
			print("Deposited %d" % amount)
		elif account.withdraw(amount):
			print("Withdrew %d" % amount)
		else:
			print("Not enough money for %d" % amount)
	print("Current balance: $%d" % account.get_balance())
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