Accueil - Forum - Bibliothèque de ressources
____

Auteur : Åvygeil

V) Héritage

Le concept d'héritage est étroitement lié à la conception orientée objet.
On dit qu'une classe A hérite ou dérive d'une autre B lorsque, conceptuellement, A est une spécification de B.
Ainsi, A aura accès aux mêmes méthodes que B, et également aux siennes plus spécifiques, alors que B n'aura pas accès aux méthodes de A.
On dit que A est une sous-classe de B, et B une super-classe de A.

- Créons par exemple une sous-classe de Voiture.
Dans le script Voiture (ce n'est pas obligatoire, c'est simplement par soucis de place...) créez une nouvelle classe Porshe dérivant de Voiture.

Code Rubyclass Porshe < Voiture

end

Le < définit le lien d'héritage entre Voiture et Porshe.

Passons à présent à la méthode constructeur.

Code Rubydef initialize(v,p)
    super(v)
    @puissance = p
end
super appelle le constructeur de la super-classe Voiture.

- On peut également redéfinir des méthodes ; par exemple la méthode accelere : au lieu d'ajouter «a» à la vitesse, on la multiplie en plus par la puissance.
Tapez dans la classe Porshe 

Code Rubydef accelere(a)
   @vitesse = (@vitesse+a)*@puissance
end

Ainsi, si on tape dans le script Main

Code Ruby$porshe1 = Porshe.new(0,10)
$porshe1.accelere(10)
 
on appelle la méthode accelere de Porshe et non celle de Voiture.
Testez le en modifiant les 2 évènements créés plus haut.

Une autre manière, plus difficile à appréhender, est d'utiliser le mot clé super ainsi :

Code Rubydef accelere(a)
    super(a)
    @vitesse *= @puissance
end

Déjà vu dans la méthode initialize, le vrai rôle de super est d'appeler la méthode ayant le même nom au sein de la super-classe.

L'opérateur *= multiplie la vitesse par la puissance.

Mais attention avec les redéfinitions de méthodes, car plus jamais une Porshe ne pourra appeler la méthode accelere de Voiture.

Informations
Page vue 2315 fois | Auteur : Samarium

RPG Creative version 5 - Libérez votre créativité ! ; Mai 2005 - Mai 2012
0.025s - Optimisé pour une résolution 1024*728 - Tous droits réservés.

Contact - Partenaires - Historique - A propos