playlist Introduction à Ruby - création de classes

Publié il y a presque 3 ans dans la série : Ruby - Formation complète
Nicolas Cavigneaux
Votre formateur
Nicolas Cavigneaux

A la recherche d'un langage polyvalent, j'ai fait la découverte de Ruby en 2003. J'ai donc très vite commencé à utiliser Ruby au quotidien pour des tâches diverses et variées (scripting, applications lourdes…).

Courant 2004, une vague de fraicheur est apparue avec l'arrivée de Ruby on Rails qui m'a de suite conquis. J'ai donc décidé de participer activement à la communauté (forums, patches, librairies, …). En 2010, je fais la rencontre de Martin Catty et retrouve dans sa vision la rigueur et les bonnes pratiques que j'aime mettre en place, le déclic a donc été immédiat.

Synbioz met en place des solutions robustes sur la base d'outils modernes et funs, je veux faire partie de l'aventure.

Catégories : Développement


Vidéo dédiée à la découverte de la création de classe en ruby. Cette vidéo fait partie d'une série qui a pour but de vous faire découvrir les bases de la programmation en Ruby et des éléments de langage les plus utilisés au quotidien.

Afficher le transcript complet de la vidéo

Bienvenue dans cette vidéo consacrée à la création d’une classe en Ruby.


Pour ce screencast nous utilisons la version 2.2 de Ruby.


Pour illustrer nos exemples, nous allons utiliser la console interactive IRB. Cette fois nous utiliserons aussi un éditeur de texte pour améliorer la lisibilité du code. Nous chargerons le fichier directement depuis IRB pour pouvoir utiliser et tester ce code.


La théorie


Ruby propose de base de nombreuses classes qui vous faciliteront le travail quotidien mais dans la plupart des cas, vous aurez besoin de créer vos propres classes.


L’intérêt d’une classe est de permettre d’encapsuler les comportements spécifiques à un objet métier et d’isoler sa logique du reste du code. Cette encapsulation va faciliter la maintenance et l’évolution des fonctionnalités liées à cet objet métier.


Comme vous avez pu le voir dans les épisodes précédents, une classe en Ruby se construit grâce au mot-clé class qui permet d’ouvrir une classe pour y définir des attributs et des méthodes.


Ce mot-clé class sera suivi du nom de la classe que vous voulez créer. Le nom de la classe est une constante et à ce titre il doit commencer par une majuscule.


Dans une classe on pourra stocker des constantes, des variables de classe, des variables d’instance, des méthodes de classe et des méthodes d’instance.


Les données stockées dans des variables de classe sont disponibles dans tous les objets de cette classe. Les données stockées dans des variables d’instance seront disponibles uniquement dans l’objet qui les a définies.


Il est intéressant de noter que puisqu’en Ruby tout est objet, les classes elles même sont des objets. Ce sont en fait des instances de la classe Class.


La pratique


Créons une classe Animal qui permettra de gérer des animaux.

class Animal
  WILD = true

  @@counter = 0

  def initialize(name, sex, age)
    @@counter += 1
    @name, @sex, @age = name, sex, age
  end

  def description
    puts "#{@name} is #{@age} years old."
  end

  def self.instances_count
    puts "We created #{@@counter} animals."
  end
end


On a donc créé une classe dans laquelle on a définie une constante WILD, une variable de classe @@counter qui est initialisée à 0 directement dans la définition de la classe.


On a ensuite définie la méthode initialize qui sert de constructeur. Cette méthode est appelée automatiquement dès qu’une instance est allouée. On profite de cette méthode pour stocker nos différents paramètres dans des variables d’instance mais aussi pour incrémenter notre compteur. On aura donc un historique du nombre d’animaux qu’on a instancié.


On a également définie une méthode d’instance description qui aura pour but d’afficher des informations concernant l’animal, ici on ré-utilise nos variables d’instance @name et @age pour construire une phrase descriptive.


Finalement on a définie une méthode de classe instances_count qui est donc précédée par le mot-clé self. Cette méthode a pour but de nous informer sur le nombre d’instances qui ont été créées.


On va maintenant utiliser cette classe pour tester son comportement. On commence par charger notre fichier dans IRB grâce à la méthode load

load 'animal.rb'


On peut utiliser notre classe.

a1 = Animal.new('Simba', 'male', 5)
a2 = Animal.new('Cheetah', 'male', 20)

a1.description
a2.description


Vérifions maintenant le nombre d’instances créées :

Animal.instances_count


On peut également accéder à la constante depuis l’extérieur de la classe grâce à la notation :: :

Animal::WILD


C’est très souvent utilisé pour accéder à la valeur depuis une autre partie du code.


Conclusion


Vous connaissez maintenant les bases de la création d’une classe en Ruby. Vous allez donc pouvoir commencer à organiser votre code de façon plus modulaire. Il reste évidemment beaucoup d’autres choses relatives aux classes à découvrir pour prétendre les maitriser, c’est ce que nous verrons dans les prochains épisodes.