..


Enllaços patrocinats

L'ús de mixins en Ruby

Article escrit per Alessio Saltarini
Pàgina 1 de 2

De vegades es vol crear una classe d'objectes que tenen "aquesta" característica, però "això" i "l'altre", que probablement ja s'ha escrit en una altra part del nostre codi font.

En altres paraules, volem crear una classe que pren prestats mètodes i propietats definides en altres parts del codi font o en qualsevol biblioteca.

Per contra, ens reuníem al voltant de la mateixa funcionalitat que el codi font en un lloc accessible per a tothom. Com?

Els puristes estan horroritzats per la programació orientada a objectes i el suport - per mi, no del tot sense raó - que qualsevol necessitat d'aquest tipus poden ser resolts mitjançant l'ús apropiat de polimorfisme.

Els altres, especialment si procedeixen de l'experiència amb altres llenguatges com C + +, argumenten que precisament a causa d'aquests requisits amb l'herència múltiple.

Llenguatges com Ruby pragmàtica, però, abordar la qüestió mitjançant una tècnica anomenada "mixins", el nom - el que sembla! - Aquesta és una Massuchussets gelat li va donar el gelat compost de diversos sabors (crema, xocolata ...)

El mixins en Ruby

Tècnicament, mixins Rubí s'implementen mitjançant classes dins, el codi es defineix en els diferents mòduls (mòdul).

Per prendre un exemple trivial, suposo que volia implementar un processador de text que s'imprimeix automàticament l'amabilitat d'una carta comercial. Ja que vostè desitja introduir únicament les dades necessàries, és a dir, el destinatari i el missatge. El programa que els diferents amigable com "Dear Sir" i "Atentament".

Comencem per la definició de la cordialitat d'un formulari:






 mòdul CordialitaLettera



    



 def inici (el receptor)



        



 return "Benvolgut Sr". + receptor + "\ n"



    



 final



    



 la signatura final (carta)



        



 retorn carta + "\ n" + "Sincerament, \ nCarlo Smith"



    



 final







 final



Res en particular, per tant, només dos mètodes que pot canviar l'entrada de text rebuts.

Anem a escriure una classe de "barreja" d'aquests mètodes, una nota de mixines:






 Cartes de classe



    



 inclou CordialitaLettera



    



 finals stampaLettera (receptor, missatge)



        



 = Punt d'inici (el receptor)



        



 carta + message =



        



 posa la signatura (carta)



    



 final







 final



Les cartes sobre de la classe té un mètode que pren com a entrada només les parts variables de la carta, amb format agradable definits en el mòdul.

Com es pot veure la sintaxi és molt similar a la de l'herència en Ruby, però, a diferència d'aquest, en una classe pot implementar qualsevol nombre de formes - i com és sabut, una classe pot derivar d'una i només un dels pares de classe (Ruby no suporta herència múltiple!)

Per exemple, podem escriure:






 def main ()



    



 Lengin = Lettere.new



    



 lEngine.stampaLettera ('Alessio Saltarini,



                          



 "Jo només va procedir a la transferència de



                           



 que vostè va sol · licitar. ")



    



 posa



    



 lEngine.stampaLettera (Matthew Pisconi,



                          



 "Puc enviar el fax a nr.038283873. ')







 final



que retorna:





 Benvolgut sig.Alessio Saltarini,







 Acabo d'arranjaments per a la transferència sol · licitada.







 Atentament,







 Carlo Rossi








 Benvolgut sig.Matteo Pisconi,







 Puc enviar el fax a nr.038283873.







 Atentament,







 Carlo Rossi



Aquesta tècnica, entre altres coses, ens permet assimilar l'ús de mixins a la de les interfícies de Java: de fet, si una classe és "barrejar" amb una forma, de fet, es compromet a aplicar els mètodes (és a dir, complir amb una determinada interfície) .

A la mateixa categoria ...
E-Learning
Ruby i Ruby on Rails (Curs) Ruby i Ruby on Rails (Curs)
Creació d'aplicacions de programari i la web amb Ruby i RoR. A partir de 39 €.
Enllaços patrocinats