Classes et objets
Fait partie de la section Programmation orientée objet du Journey GDScript de Coddy. Leçon 3 sur 65.
Une classe et ses objets contiennent des éléments différents. Un const dans une classe appartient à la classe elle-même : il n’y a qu’une seule valeur, et tu la lis en utilisant le nom de la classe sans créer d’objet.
# dog.gd
class_name Dog
extends RefCounted
const SPECIES = "Canis familiaris"
var dog_name: String = "Unnamed"
var breed: String = "Unknown"print(Dog.SPECIES) # Canis familiarisLes lignes var décrivent ce que contient chaque objet. Chaque objet créé avec new() obtient sa propre copie de ces variables, avec leurs valeurs par défaut initiales :
var dog1 := Dog.new()
var dog2 := Dog.new()
dog1.dog_name = "Nicky"
dog1.breed = "Husky"
print(dog1.dog_name) # Nicky
print(dog2.dog_name) # UnnamedModifier dog1 laisse dog2 tel qu’il était. Un objet peut aussi lire la constante : dog1.SPECIES a la même valeur que Dog.SPECIES.
Un objet ne possède que les variables déclarées par sa classe. dog1.color = "brown" arrête le programme avec une erreur, car Dog n’a pas de variable color. Toutes les variables dont un objet a besoin vont dans la classe.
Défi
FacileComplétez la classe Student dans student.gd :
- une constante
SCHOOLavec la valeur"Godot High School", partagée par toute la classe - une variable
Stringstudent_name - une variable
Stringgradedont la valeur initiale est"N/A"
Le code fourni lit le nombre d’étudiants à suivre, puis une ligne par étudiant : un nom, éventuellement suivi d’un espace et d’une note. Il crée un Student pour chaque ligne, définit son nom et ne définit sa note que si la ligne en contient une. Il affiche ensuite Student.SCHOOL, puis chaque étudiant. Pour les lignes Alice A et Bob, il affiche :
School: Godot High School
Alice has grade A
Bob has grade N/AVotre code va dans student.gd. main.gd contient le code d’entrée/sortie fourni 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 count := int(OS.read_string_from_stdin())
var students: Array[Student] = []
for i in count:
var parts := OS.read_string_from_stdin().split(" ", false)
var student := Student.new()
student.student_name = parts[0]
if parts.size() > 1:
student.grade = parts[1]
students.append(student)
print("School: %s" % Student.SCHOOL)
for student in students:
print("%s has grade %s" % [student.student_name, student.grade])
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