
Exemple : ajouter une méthode `meow` à la classe `Cat`
Suivez un exemple pratique pour donner vie à vos objets. Apprenez à ajouter une méthode d'instance `meow` à une classe `Cat` en Ruby, lui donnant un comportement simple et concret.
Le point de départ : un objet avec un état, mais sans comportement
Reprenons notre classe Cat. Pour l'instant, elle est capable de construire des objets qui mémorisent leur nom grâce à la méthode initialize et à la variable d'instance @name. C'est un excellent début, mais nos objets sont passifs. Ils stockent de l'information, mais ne peuvent rien faire avec.
Notre objectif est de rendre notre objet 'actif' en lui donnant une capacité, un comportement. L'action la plus simple et la plus logique pour un chat est de miauler. Cet exemple, bien que simple, illustre parfaitement le processus d'ajout d'une capacité à n'importe quel objet.
Etape 1 : Modifier le plan pour inclure le nouveau comportement
Conseil pro : Notez que nous avons rendu la méthode un peu plus intéressante en utilisant la variable d'instance @name. Ainsi, le miaulement est personnalisé pour chaque chat. C'est un parfait exemple de la synergie entre l'état (les données) et le comportement (les méthodes).
Etape 2 : Créer une instance et lui demander d'agir
Maintenant que le plan a été mis à jour, nous pouvons l'utiliser. Dans notre fichier main.rb, le processus de création d'une instance ne change pas. La nouveauté est que nous pouvons maintenant 'envoyer un message' à notre objet felix pour lui demander d'exécuter sa méthode meow.
L'appel se fait en utilisant la notation 'point' (.) : nom_de_linstance.nom_de_la_methode. Cette syntaxe est au coeur de la programmation orientée objet. C'est la façon de dire : 'Objet felix, exécute ton comportement meow'.
Etape 3 : Exécution du code complet et analyse du résultat
Cet exemple prouve que nous avons réussi. Nous avons créé des objets qui non seulement contiennent des données uniques, mais qui peuvent aussi agir en fonction de ces données. C'est la base de la construction de composants logiciels complexes et réutilisables.