En programmation objet ou orienté objet, une classe est un modèle d'objet constitué d'attributs (ses variables et constantes), de méthodes (ses fonctions), ainsi que des contraintes d'accès. Les méthodes et attributs peuvent être plus ou moins accessibles aux autres classes ou au programme principal.

En Ruby, par défaut, les attributs ne sont pas accessibles.

Déclaration d'une classe

modifier

Une classe est déclarée à l'aide du mot-clé class et se termine par le mot-clé end Les définition de classe étant des constantes, leurs noms doivent commencer par une majuscule en Ruby. Une classe a au minimum une méthode dite constructeur qui sert à initialiser les objets créés par l'opérateur new. En Ruby le constructeur est nommé initialize. Les méthodes sont définies à l'aide du mot-clé def et se terminent par le mot-clé end

class Point
  def initialize( x = 0, y = 0 )
    @x = x
    @y = y
  end
  def coords()
    puts "x : #{@x}"
    puts "y : #{@y}"
  end
end

En Ruby, les variables commençant par @ sont des attributs d'objet, les autres sont des variables locales. @x est donc différent de x et @y est différent de y.

Dans cette méthode initialize, on a donné des valeurs par défaut aux paramètres (x=0, y=0), cela permet de créer des instances de cette classe sans préciser la valeur des arguments.

Instanciation

modifier

Une instance de la classe (un objet) est créé par la méthode new de la classe :

 p = Point.new

Ici les valeurs par défaut (0,0) seront utilisées

p.coords
#  => x : 0
#     y : 0

On peut passer des valeurs à la méthode d'initialisation entre parenthèses :

p2 = Point.new(2,5)
p2.coords
#   => x : 2
#      y : 5

On peut obtenir le type de la classe grâce à la méthode class :

p.class
#   => Point