Avant de terminer, nous pouvons encore voir deux petites choses intéressantes concernant notre classe Carnet.
Prenez Carnet#par_nom. Cette méthode est différente des autres sur un point très important: elle est utilisée à l'intérieur même de la classe. C'est ce qu'on appelle une méthode interne, ou privée.
Lorsque vous programmerez une méthode comme celle-ci, il est possible de la déclarer comme étant privée. Une méthode privée ne peut être appelée que par l'objet lui-même, et jamais par l'utilisateur. Une méthode normale (comme toutes celles que nous avons écrites), est appelée méthode publique.
Vous pouvez déclarer des méthodes en utilisant les mots clefs public et private. Quand vous ajoutez le mot clef private, toutes les méthodes définies à partir de là seront privées, jusqu'à ce que vous rajoutiez le mot clef public.
Par exemple:
class UneClasse # Par défaut, les méthodes sont publiques def methode1 # ... end private # Maintenant, les méthodes sont privées def methode2 # ... end def methode3 # ... end public # Sauf celle-ci, qui sera publique def methode4 # ... end end
Donc, dans notre carnet d'adresses, nous devons rajouter le mot clef private juste avant la définition de Carnet#par_nom:
class Carnet # # Méthodes fondamentales: # initialize # ajoute # retire # def initialize @personnes = [] end # ... private # Début des méthodes privées # # Fonction de tri. # def par_nom(a, b) if a.prenom == b.prenom a.nom <=> b.nom else a.prenom <=> b.prenom end end end
Nous avons passé beaucoup de temps à écrire les trois classes pour notre carnet d'adresses. Nous ne voulons pas copier et coller éternellement le code chaque fois que nous allons l'utiliser dans un programme. Fort heureusement, nous n'avons pas besoin de le faire.
Copiez le code des trois classes dans un fichier, et sauvez-le sous le nom carnet.rb. Maintenant, créez un nouveau fichier (dans le même répertoire) et tapez:
require 'carnet' # Nicolas adresse = Adresse.new adresse.rue = "Rue du port, 32" adresse.code_postal = "56000" adresse.ville = "Vannes" adresse.pays = "France" puts "Nicolas:" puts adresse
Sauvez-le sous le nom nicolas.rb par exemple. Maintenant, invoquez Ruby:
Vous l'aurez compris, le mot clef require permet de charger du code existant.