Menu
CoddyTech

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 familiaris

Les 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) # Unnamed

Modifier 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.

challenge icon

Défi

Facile

Complétez la classe Student dans student.gd :

  • une constante SCHOOL avec la valeur "Godot High School", partagée par toute la classe
  • une variable String student_name
  • une variable String grade dont 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/A

Votre 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])
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