L'essentiel de Ruby on Rails

Hériter d'autres classes

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
En compagnie de votre formateur, vous allez apprendre à écrire des classes Ruby héritant d'autres classes.
06:06

Transcription

Une autre notion importante en Ruby est la notion d'héritage. Pour découvrir cette notion, nous allons créer la classe Bear qui va hériter de SoftToy. N'oubliez pas d'utiliser le mot end pour terminer la déclaration de la classe Bear. Afin d'indiquer à Ruby que la classe Bear hérite de SoftToy nous utilisons le signe « < » suivi du nom de la classe SoftToy De cette manière, nous indiquons à Ruby que la classe Bear va hériter de l'ensemble des propriétés et méthodes de la classe SoftToy. Pour vous en convaincre, testez de créer une nouvelle instance de Bear. Nous l'appellerons teddy_bear, il va être de couleur marron, de taille 50 centimètres et doux. Exécutons le script. Vous remarquez qu'en Ruby, nous avons pu utiliser la méthode Bear.new sans avoir à ajouter de méthode initialize à l'intérieur de notre classe Bear. En effet, Bear va hériter de la méthode initialize, il aura donc la même méthode de construction par défaut que la classe SoftToy. Nous pouvons ajouter ses propres méthodes à la classe Bear. Par exemple, ajoutons-lui la méthode speak. Dans cette méthode, affichons simplement une petite phrase. Nous pouvons tester cette méthode sur notre variable teddy_bear. Nous avons bien le résultat escompté. Si maintenant nous créons une instance de notre classe SoftToy est-ce que vous pensez qu'il sera possible d'utiliser la méthode speak sur SoftToy ? Testons. Vous remarquez que Ruby nous indique que la méthode speak est non définie, c'est ce que signifie undefined. Vous comprenez donc que l'héritage permet à la classe Bear d'hériter de propriétés et méthodes de SoftToy mais que la réciproque n'est pas vraie, à savoir que SoftToy ne pourra pas utiliser la méthode speak qui, elle, est définie dans la classe Bear puisque SoftToy n'hérite pas de Bear. La classe Bear peut également avoir ses propres attributs accessibles. Nous pouvons, par exemple, lui ajouter l'attribut name, cela n'empêchera pas notre instance teddy_bear d'avoir accès aux autres attributs color, softness, size qui héritent de SoftToy. Par exemple, nous pouvons toujours afficher la propriété softness de notre variable teddy_bear. Nous avons également accès à sa propriété name et pouvons lui renseigner un nom, puis l'afficher. Testons. Vous voyez que nous avons bien le résultat escompté. De la même manière que nous ne pourrons utiliser la méthode speak sur une instance de la classe SoftToy, nous ne pourrons utiliser la propriété name sur une instance de cette classe SoftToy. J'aimerais maintenant vous montrer un exemple de surcharge ou de redéfinition. Si, par exemple, nous voulions que notre classe Bear ait une méthode constructeur initialize différente de celle de la classe SoftToy, nous le ferions de la manière suivante. En faisant ainsi, nous écrasons totalement la méthode initialize héritée de SoftToy. De fait, les paramètres renseignés ici ne seraient plus utiles et cela générerait même une erreur. Remarquez comme désormais la propriété softness vaut nil à savoir plus rien du tout. Si nous avions souhaité pouvoir conserver la possibilité de modifier la couleur et la taille d'une instance de notre classe Bear mais considérer que tous les ours en peluche sont forcément doux, nous aurions pu écrire ceci. Testons ce code et comprenons un peu ce qui se passe. Lorsque nous créons une nouvelle instance de la classe Bear, grâce à la méthode new, la méthode initialize de la classe Bear est alors exécutée. Cette méthode attend deux paramètres color et size que nous avons renseignés. Ici, le mot-clé super va faire référence à la méthode initialize de la classe parente à savoir celle de SoftToy. Vous remarquez comment je passe ici les paramètres color et size de la méthode initialize de Bear à la méthode parente initialize de SoftToy Enfin, le dernier paramètre Doux qui correspond à softness est ici passé par défaut. Nous aurions également pu écrire ceci. De cette manière, nous pouvons encore agir sur le paramètre softness. Le paramètre softness, ici, dans la méthode initialize de la classe Bear devient ce que l'on appelle un paramètre facultatif. À savoir que s'il n'est pas renseigné, il aura comme valeur par défaut celle qui est renseignée ici. Faites attention lorsque vous utilisez des paramètres facultatifs, il va toujours se situer après les paramètres non-facultatifs. À savoir, ceux qui n'ont pas de valeur par défaut, comme softness ici. Vous venez de voir, dans cette vidéo, un exemple simple d'héritage en Ruby. Comprenez bien ces mécanismes car ils vous seront fort utiles lorsque vous allez développer dans une application Ruby on Rails.

L'essentiel de Ruby on Rails

Concevez des applications web évolutives et intemporelles avec Ruby on Rails. Installez l’environnement, réalisez un projet de stack overflow, enrichissez-le, etc.

6h08 (85 vidéos)
Aucun commentaire n´est disponible actuellement

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !