La classe Object

Toutes les classes Ruby héritent directement ou indirectement de la classe Object. L’héritage n’a pas besoin d’être précisé, il est implicite. Cela offre l’avantage de disposer de méthodes pratiques pour tous les objets.

1. Égalité d’objets

L’opérateur == retourne vrai (true) si deux objets sont identiques.

Exemple :

class Photo
  def initialize( largeur, hauteur )
    @largeur = largeur
    @hauteur = hauteur
  end
end

p = Photo.new( 100, 100 )
o = Photo.new( 100, 100 )
q = o

puts p == o
puts q == o 

Dans cet exemple, nous avons une classe Photo avec deux attributs largeur et hauteur renseignés par le constructeur. Les objets p et o ont les mêmes proportions, pourtant ils ne sont pas considérés comme identiques car l’implémentation par défaut vérifie seulement si les deux objets représentent une même instance (un même objet en mémoire). Le deuxième test entre q et o lui retourne vrai à cause de l’opération précédente q = o.

Pour que notre premier cas fonctionne, nous pouvons redéfinir l’opérateur == selon le code suivant :

class Photo
  attr_reader :largeur, :hauteur

  def initialize( largeur, hauteur )
    @largeur = largeur
    @hauteur = hauteur
  end

  def ==( photo )
    (@largeur==photo.largeur) and (@hauteur==photo.hauteur )
  end
  
end 

Comme nous avons besoin d’accéder aux attributs et à l’objet passé en argument...

Pour consulter la suite, découvrez le livre suivant :
couv_Ruby.PNG
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Héritage
Suivant
Contrôle d'accès