Programmation Ruby/Classes
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 | modifier le wikicode]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 | modifier le wikicode]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