Propriétés
Fait partie de la section Programmation orientée objet du Journey GDScript de Coddy. Leçon 6 sur 65.
Les variables qu’une classe déclare sont ses propriétés (également appelées variables membres) : les données que chaque objet contient. Déclare-les en haut de la classe, chacune avec un type et une valeur initiale :
# player.gd
class_name Player
extends RefCounted
var player_name: String = "Hero"
var level: int = 1
var hp: float = 100.0
var inventory: Array[String] = []Une propriété déclarée sans valeur prend la valeur par défaut de son type : 0 pour int, "" pour String, false pour bool et un tableau vide pour Array[String].
En dehors de la classe, tu lis et modifies une propriété avec un point. Dans les méthodes de la classe, tu utilises son nom :
var p := Player.new()
p.level += 1
p.inventory.append("sword")
print(p.level) # 2
print(p.inventory) # ["sword"]Chaque objet reçoit sa propre copie de chaque propriété, y compris les tableaux : [] crée un nouveau tableau vide pour chaque joueur, ainsi l’inventaire des autres joueurs reste vide.
Le type est vérifié : p.level = "max" est une erreur signalée avant l’exécution du programme, car level contient un int.
Défi
FacileComplète la classe Player dans player.gd. Déclare ces propriétés :
player_name, unStringinitialisé à"Hero"level, unintinitialisé à1hp, unintinitialisé à100inventory, unArray[String]initialisé à vide
Complète ensuite la méthode describe(). Elle renvoie NAME (level LEVEL, HP hp): ITEMS, où ITEMS correspond à l'inventaire dont les éléments sont joints avec ", ", ou à no items lorsque l'inventaire est vide.
Le code fourni lit un nom pour un joueur, puis le nombre de commandes qui suivent, puis les commandes : hit AMOUNT, item NAME ou level. Il modifie directement les propriétés du joueur et affiche finalement describe() pour ce joueur et pour un deuxième joueur qu'il n'a jamais modifié. Pour Ada et les commandes hit 30, item sword, level et item shield, il affiche :
Ada (level 2, 70 hp): sword, shield
Hero (level 1, 100 hp): no itemsÉcris ton code dans player.gd. main.gd contient le code fourni pour les entrées/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 hero := Player.new()
hero.player_name = OS.read_string_from_stdin()
var guest := Player.new()
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
match parts[0]:
"hit":
hero.hp -= int(parts[1])
"item":
hero.inventory.append(parts[1])
"level":
hero.level += 1
print(hero.describe())
print(guest.describe())
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