Menu
CoddyTech

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 = 4

extends 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) # true

L’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.

challenge icon

Défi

Facile

Crée la classe Car dans car.gd :

  • son nom de classe est Car et elle étend RefCounted
  • une variable String brand dont la valeur initiale est "Generic"
  • une variable int wheels dont la valeur initiale est 4

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: Generic

Ton 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)
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