Constante de Classe

Une constante permet de garder une valeur fixe au sein d’une classe. Il faut voir cette constante comme s’appliquant à la classe, plutôt qu’à une instance de la classe. Par exemple, dans ma classe Equipe, je peux mettre une constante qui serait la définition d’Equipe. Ca s’applique donc à la classe (toutes les équipes), et non à une seule équipe.

class Equipe
DEFINITION = "Groupe de sportifs."
end

Par convention (je crois), les constantes sont en majuscules.

Variable de Classe

Là aussi, c’est une variable qui au lieu de s’appliquer uniquement à une instance de la classe, s’applique à la classe entière (et donc à toutes les instances on peut dire). Si je continue mon exemple de ma classe Equipe, on pourrait mettre une variable pour savoir qui est le champion d’Europe en titre. C’est une valeur qui change chaque année (elle n’est donc pas constante), et elle s’applique à toutes les équipes (vu que c’est la meilleure équipe parmi toutes les autres).

class Equipe
def vainqueur(club)
@@champion = club
end
end

Une variable de classe s’écrit avec @@. A ne pas confondre avec les variables d’instance qui n’ont qu’une @.

Méthode de Classe

Une méthode de classe ne peut accéder qu’aux variables de classe. On peut par exemple créer une méthode qui afficherait le champion d’Europe en titre. Je vois ces méthodes de classe comme des actions appliquées… à la classe. Donc on fait “quelque chose” avec la classe plutôt qu’avec une instance de la classe. Bref, petit exemple :

class Equipe
def Equipe.champion_en_titre
puts @@champion
end
end

Pour définir une méthode de classe, il faut précéder le nom de la méthode du nom de la classe. Ici, j’affiche le nom du champion en titre en utilisant une variable de classe : @@champion. Je n’ai pas réécrit tout le code bien sûr.

C’était un post un peu court, mais ce qu’il faut retenir c’est que les variables et méthodes de classe sont identiques aux variables et méthodes d’instance, à part qu’elles s’appliquent à la classe entière. Ca sert surtout à obtenir des informations et réaliser des actions qui concernent l’ensemble des instances (en les comparant par exemple).

Demain : les modules!