..
Parfois, vous voulez créer une classe d'objets qui ont "cette" fonctionnalité, mais aussi «ce» et «cet autre», qui sont peut-être déjà été écrit ailleurs dans notre code source.
En d'autres termes, nous voulons créer une classe qui emprunte des méthodes et des propriétés définies dans d'autres parties du code source ou dans certaines bibliothèques.
Inversement, nous rassembler autour de mêmes caractéristiques de notre code source dans un endroit accessible à tous. Comment?
Les puristes sont horrifiés programmation orientée objet et le soutien - à mon avis pas totalement sans raison - que tout besoin de ce type peuvent être résolus avec l'utilisation correcte de polymorphisme.
D'autres, surtout si elles proviennent de l'expérience avec des langages comme le C + +, font valoir que c'est précisément à cause de ces exigences en utilisant l'héritage multiple.
Langues pragmatique comme Ruby, cependant, aborder la question en proposant une technique appelée "mixin", le nom - ça sonne! - Un homme de crème glacée lui a donné la Massuchussets composé de différents parfums de crème glacée (crème, chocolat ...)
Les mixins Ruby
Techniquement, mixins Ruby sont implémentées en utilisant l'intérieur des classes, le code défini dans les différents modules (module).
Pour prendre un exemple trivial, supposons que je voulais mettre en œuvre un traitement de texte qui imprime automatiquement mon amitié d'une lettre d'affaires. Puisque vous voulez entrer uniquement les données nécessaires, c'est à dire le destinataire et le message. Le programme sera le match amical pense différentes comme, "Monsieur" et "Sincèrement".
Commençons par définir sous une forme conviviale:
Module CordialitaLettera
def départ (adresse)
retour "Cher Monsieur." + bénéficiaire + "\ n"
fin
signature finale (lettre)
retour lettre + "\ n" + "Sincèrement, \ nCarlo Smith"
fin
fin
Rien de particulier, puis, seulement deux méthodes qui peuvent changer le texte reçu en entrée.
Nous allons écrire une classe «mixte» à ces méthodes, juste un mixin:
Lettres de classe
comprend CordialitaLettera
dernière stampaLettera (destinataire, message)
Point de départ = (récepteur)
= Lettre + après
met la signature (lettre)
fin
fin
Lettres-dessus de la classe a une méthode qui prend en entrée que les parties variables de la lettre, avec un format convivial définies dans le module.
Comme vous pouvez voir la syntaxe est assez similaire à l'héritage en Ruby, cependant, contrairement à ce dernier, dans une classe peut implémenter n'importe quel nombre de formes - et comme on le sait, une classe peut être dérivée d'une et une seule classe parente (Ruby ne supporte pas l'héritage multiple!)
Par exemple, nous pouvons écrire:
def main ()
Lengin = Lettere.new
lEngine.stampaLettera ('Alessio Saltarini »,
«Je vient de procéder au transfert
vous avez demandé. ')
met
lEngine.stampaLettera ('Matthew Pisconi,
«Je envoyer le fax à nr.038283873. ')
fin
qui renvoie:
Chers sig.Alessio Saltarini, Je viens de faire le transfert que vous avez demandé. Cordialement, Carlo Rossi
Chers sig.Matteo Pisconi, J'ai envoyer le fax à nr.038283873. Cordialement, Carlo RossiCette technique, entre autres choses, nous permet d'assimiler l'utilisation de mixins que des interfaces en Java: en effet, si une classe est un «mélange» avec un formulaire, en fait, il mettra en œuvre les méthodes (et répond donc à une certaine interface) .
| |
Ruby et Ruby on Rails (Cours)
Créer des applications logicielles et Web avec Ruby et RoR. A partir de 39 €. |