Menu
CoddyTech

Méthodes

Fait partie de la section Programmation orientée objet du Journey GDScript de Coddy. Leçon 5 sur 65.

Une fonction déclarée à l’intérieur d’une classe est une méthode : quelque chose que les objets de la classe peuvent faire. Comme toute fonction, une méthode peut prendre des paramètres et renvoyer une valeur, et elle peut lire et modifier les variables de l’objet :

# 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

Appelle une méthode sur un objet avec un point et transmets les arguments entre parenthèses :

var board := ScoreBoard.new()
board.greet() # Tableau des scores prêt
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15

À l’intérieur de la classe, une méthode appelle une autre méthode du même objet par son nom : add(10) dans add_bonus() signifie self.add(10).

Une méthode déclarée avec -> void ne retourne rien, et une méthode déclarée avec -> int doit retourner un int. Chaque appel agit sur son propre objet : board.add(5) modifie board.points et aucun autre tableau de scores.

L’appel doit correspondre à la déclaration : board.add() sans argument est une erreur signalée avant l’exécution du programme.

challenge icon

Défi

Facile

Complète les méthodes de la classe BankAccount dans bank_account.gd. Le compte conserve son argent dans la variable balance, qui commence à 0.

  • deposit(amount) ajoute amount au solde
  • withdraw(amount) soustrait amount et renvoie true. Lorsque amount est supérieur au solde, la méthode ne change rien et renvoie false
  • get_balance() renvoie le solde

Le code fourni lit le nombre de commandes qui suivent, puis une commande par ligne : deposit AMOUNT ou withdraw AMOUNT. Il affiche une ligne pour chaque commande et le solde final. Pour deposit 50 et withdraw 80, il affiche :

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

Ton code va dans bank_account.gd. main.gd contient le code fourni pour les entrées et les sorties et ne peut pas être modifié.

Essayez vous-même

extends Node

func _ready():
	# Code d’entrée/sortie fourni : conservez-le tel quel
	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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Compilateur GDScript en ligne