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!
Flux RSS