Introduction à la POO
Fait partie de la section Programmation orientée objet du Journey GDScript de Coddy. Leçon 2 sur 65.
La programmation orientée objet (POO) organise un programme autour d’objets. Un objet regroupe des données (variables) et les fonctions qui manipulent ces données. Une classe décrit ce que ses objets contiennent et font, et tu en crées autant d’objets que nécessaire.
En GDScript, chaque fichier de script est une classe. Nomme-la avec class_name et déclare les variables que chaque objet contient :
# car.gd
class_name Car
extends RefCounted
var brand: String = "Generic"
var wheels: int = 4extends RefCounted permet à Godot de libérer un objet Car tout seul dès qu’aucune variable ne le référence plus. Utilise-le pour chaque classe qui contient des données et qui n’est pas un nœud. Un script sans ligne extends étend lui aussi RefCounted.
Appelez new() sur la classe pour créer un objet, puis accédez à ses variables avec un point :
# main.gd
var my_car := Car.new()
print(my_car.wheels) # 4
print(my_car is Car) # trueL’opérateur is vérifie à partir de quelle classe un objet a été créé. Afficher l’objet lui-même ne montre qu’un identifiant tel que <RefCounted#-9223372009860233781>, affichez donc plutôt ses variables.
La classe est le plan de conception, et chaque objet est une chose distincte créée à partir de celui-ci : appeler Car.new() deux fois vous donne deux voitures.
Défi
FacileCrée la classe Car dans car.gd :
- son nom de classe est
Caret elle étendRefCounted - une variable
Stringbranddont la valeur initiale est"Generic" - une variable
intwheelsdont la valeur initiale est4
Le code fourni lit le nombre de voitures à construire et crée chacune d'elles avec Car.new(). Il affiche le nombre de voitures et le nombre total de leurs roues. Lorsqu'il a construit au moins une voiture, il lit une marque pour la première voiture et affiche les marques de la première et de la dernière voiture. Pour les entrées 3 et Tesla, il affiche :
Cars: 3
Wheels: 12
First car: Tesla
Last car: GenericTon code doit être placé dans car.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 count := int(OS.read_string_from_stdin())
var garage: Array[Car] = []
for i in count:
garage.append(Car.new())
var total := 0
for car in garage:
total += car.wheels
print("Cars: %d" % garage.size())
print("Wheels: %d" % total)
if count > 0:
garage[0].brand = OS.read_string_from_stdin()
print("First car: %s" % garage[0].brand)
print("Last car: %s" % garage[-1].brand)
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