Contrôle d’accès

1. Attributs et méthodes

Lorsque l’on réalise une classe, on essaye d’éviter que l’état de l’objet soit modifié sans contrôle. C’est la raison pour laquelle par défaut les attributs ne sont pas manipulables en dehors de méthodes dans Ruby. Cela ne va cependant pas suffire à garantir un état cohérent car certaines méthodes pourraient être utilisées dans un mauvais contexte d’usage.

Exemple :

class Chronometre
  def initialize()
    @tictac = 0
  end
  def augmenter()
    @tictac = @tictac + 1
  end
  def compterJusqua( duree )
    if ( @tictac == duree ) then
      "Fin du chronometre"
    else
      augmenter()
      "Chronometre en cours"      
    end
  end
end 

Pour utiliser ce chronomètre, nous utilisons la méthode compterJusqua en passant en argument une durée, en retour cette méthode indique au fur et à mesure des appels si le chrono est terminé.

Exemple :

chronos = Chronometre.new
puts chronos.compterJusqua( 2 )
puts chronos.compterJusqua( 2 )
puts chronos.compterJusqua( 2 ) 

Nous avons alors en sortie :

Chronometre en cours
Chronometre en cours
Fin du chronometre 

Le problème de notre classe est la présence de la méthode augmenter. Cette méthode, par un simple appel, pourrait rendre notre chronomètre inopérant.

Exemple :

puts chronos.compterJusqua( 2 )
puts chronos.compterJusqua( 2 )
chronos.augmenter()
puts chronos.compterJusqua( 2 ) 

Avec...

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
La classe Object
Suivant
Modules