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 pointsAppelle 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.
Défi
FacileComplè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)ajouteamountau soldewithdraw(amount)soustraitamountet renvoietrue. Lorsqueamountest supérieur au solde, la méthode ne change rien et renvoiefalseget_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: $50Ton 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())
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
1Fondamentaux de la POO
Fichiers externesIntroduction à la POOClasses et objetsLe mot-clé selfMéthodesPropriétésConstructeur (_init)Récapitulatif - Calculatrice simple4Polymorphisme
Retour sur la redéfinition des méthodesTypage canardClasses et méthodes abstraitesConception d’interfacesRécapitulatif – Calculateur de formes7Signaux
Qu’est-ce qu’un signal ?Déclarer et émettreSe connecter aux signauxSignaux avec argumentsRécapitulatif - système de santé10Patrons de conception, partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode modèlePatron ÉtatPatron Composite2Propriétés de classe
Variables d’instance et variables statiquesFonctions statiquesSetters de propriétésGetters de propriétésPrivé par conventionRécapitulatif - Gestionnaire de comptes bancaires5Encapsulation
Membres publics et privésValidation avec les méthodes setterMasquage de l’informationPropriétés en lecture seuleRécapitulatif - Système de dossiers étudiants8Concepts avancés de la POO
Composition ou héritageClasses internesLes nœuds comme composantsRefCounted ou NodeEnums dans les classes3Héritage
Héritage de baseLe mot-clé superRedéfinition de méthodesChaînes d’héritageVérifier les types avec isRécapitulatif – Hiérarchie des employés6Méthodes spéciales
Introduction aux méthodes virtuellesLa méthode _to_stringItérateurs personnalisésRécapitulatif – Liste personnalisée9Patrons de conception, partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FactoryPatron ObserverPatron StrategyEntraînez-vous par vous-même : Compilateur GDScript en ligne