Classes

Le monde réel est plein d’objets, et nous pouvons classifier ceux-la. Par exemple, un très petit enfant dira peut-être « Ouah Ouah » en voyant un chien, quelle que soit la race ; et nous voyons naturellement le monde à travers ce genre de catégories.

Dans la terminologie de la programmation orientée objet, une catégorie d’objets comme les « chiens » est appelée une classe, et les objets appartenant à une classe sont appelés des instances de cette classe.

En général, pour fabriquer un objet en ruby ou dans les autres langages orientées objet, on commence par définir les caractéristiques d’une classe, puis on crée une instance. Pour illustrer cette démarche, nous allons définir une classe Chien toute simple.

ruby> class Chien
   |   def parle
   |     print "Ouah Ouah\n" 
   |   end
   | end
  nil

En ruby, une définition de classe est une portion de code comprise en les mots-clés class et end. Un def dans cette zone commence la définition d’une méthode de la classe, qui, comme on l’a vu au chapitre précédent, correspond à la spécification d’un comportement particulier aux objets de cette classe.

Maintenant que nous avons défini la classe Chien, nous pouvons nous en servir pour fabriquer un chien :

ruby> pochi = Chien.new
 #

Nous avons créé une instance de la classe Chien, et nous lui avons donné le nom pochi. La méthode new (nouveau) de toute classe en crée une nouvelle instance. Du fait que pochi est un Chien conformément à notre définition de classe, il a toutes les propriétés que nous avons décidé d’attribuer aux objets de type Chien. Notre idée de la Chien-néité étant très sommaire, il n’y a qu’une chose que nous puissions demander à pochi de faire.

ruby> pochi.parle
Ouah Ouah
  nil

Fabriquer une nouvelle instance d’une classe est parfois appelé instancier cette classe. Nous devons avoir un chien avant de jouir des plaisirs de sa conversation. Nous ne pouvons pas demander à la classe Chien d’aboyer pour nous.

ruby> Chien.parle
ERR: (eval):1: undefined method `parle' for Chien:class

Ca n’a pas plus de sens que d’essayer de manger le concept d’un sandwich.

D’un autre côté, si nous voulons entendre le son de la voix d’un chien sans risquer de trop nous attacher à lui, nous pouvons toujours créer (instancier) un chien éphémère, temporaire, et tirer de lui un peu de bruit avant qu’il ne disparaisse.

ruby> (Chien.new).parle   # ou, plus couramment, Chien.new.parle
Ouah Ouah
  nil

« Attendez un peu, » direz-vous, « qu’est-ce-que c’est que cette histoire de la pauvre bête disparaissant comme ça ? » C’est vrai : si on ne prend pas la peine de lui donner un nom (comme nous l’avions fait pour pochi), le ramasse-miettes (garbage collector) automatique de ruby décide que c’est un chien abandonné, et l’élimine sans pitié. En fait, ça n’est pas gênant, vous savez, parce qu’on peut faire autant de chiens qu’on veut.

Guide de l’utilisateur

Précédent : GDU : Méthodes Suivant : GDU : Héritage