..


Sponzorované odkazy

Použitie mixins v Ruby

Článok napísal Alessio Saltarini
Strana 1 z 2

Niekedy chcete vytvoriť triedy objektov, ktoré majú "to" funkcie, ale "toto" a "to ostatné", ktoré sú pravdepodobne už bolo napísané na inom mieste v našom zdrojovom kóde.

Inými slovami, chceme vytvoriť triedu, ktorá si požičiava metódy a vlastnosti sú definované v iných častiach zdrojového kódu alebo v knižnici.

Naopak by sme zhromažďovali okolo rovnaké funkcie zdrojový kód na jednom mieste, prístupné všetkým. Ako to?

Puristi sú zdesení objektovo orientovaného programovania a podpora - podľa môjho názoru nie celkom bez dôvodu - že by bolo nutné pre tento druh je možné vyriešiť vhodným použitím polymorfizmu.

Iní, najmä ak pochádzajú zo skúseností s jazyky ako C + +, argumentovať, že práve preto, že tieto požiadavky za použitia viacnásobné dedičnosti.

Pragmatický jazyky ako Ruby, ale riešiť problém tým, že techniku ​​zvanú "mixins", meno - zdá sa! - To je Massuchussets zmrzlina jej zmrzlinu skladá z rôznych príchutí (smotana, čokoláda ...)

Mixins v Ruby

Technicky sú Ruby mixins implementované pomocou triedy v rámci, kód definovaný v rôznych moduloch (modul).

Ak chcete triviálne príklad, že by som chcel implementovať textový procesor, ktorý sa automaticky vytlačí ústretovosť obchodného listu. Vzhľadom k tomu chcete zadať len potrebné údaje, tj príjemcu a správu. Program budú myslieť, že rôzne priateľské ako: "Vážený pane" a "úprimne."

Začneme tým, že definuje srdečnosť v tvare:






 Modul CordialitaLettera



    



 def štart (príjemcu)



        



 return "Vážený pane." + + príjemca "\ n"



    



 koniec



    



 posledný podpis (list)



        



 návrat list + "\ n" + "S pozdravom, \ nCarlo Smith"



    



 koniec







 koniec



Nič konkrétneho, teda len dve metódy, ktoré môžu zmeniť text získaným informáciám.

Poďme písať triedy "zmiešané", aby tieto metódy, Memo mixin:






 Triedy písmená



    



 Zahŕňa CordialitaLettera



    



 posledné stampaLettera (príjemca správy)



        



 = Počiatočný bod (príjemcu)



        



 list + message =



        



 dá podpis (list)



    



 koniec







 koniec



Listy nad trieda má metódu, ktorá berie ako vstup len variabilná časť listu, s priateľským formát definovaný v module.

Ako môžete vidieť, syntax je veľmi podobná tomu dedičstva v Ruby, ale na rozdiel od druhej, môže v triede implementovať ľubovoľný počet formulárov - a ako je známe, môžu byť odvodené z triedy a len jeden rodič triedy (Ruby nepodporuje viacnásobnú dedičnosť!)

Napríklad, my môžeme písať:






 def main ()



    



 Lengin = Lettere.new



    



 lEngine.stampaLettera ("Alessio Saltarini"



                          



 "Len som pristúpil k prenosu



                           



 ste požadovali. ")



    



 kladie



    



 lEngine.stampaLettera ("Matthew Pisconi"



                          



 "Poslal som fax nr.038283873.")







 koniec



, Ktorý sa vracia:





 Vážení sig.Alessio Saltarini,







 Len som zariadil, aby transfer ste požadovali.







 S pozdravom,







 Carlo Rossi








 Vážení sig.Matteo Pisconi,







 Aj odoslať fax nr.038283873.







 S pozdravom,







 Carlo Rossi



Táto technika, okrem iného, ​​umožňuje prispôsobiť použitie mixins k tomu rozhraní Java: V skutočnosti, ak trieda je "mix" sa formulár, v skutočnosti to bude robiť metódy (tj v súlade s určitým rozhraním) .

V rovnakej kategórii ...
E-Learning
Ruby a Ruby on Rails (kurz) Ruby a Ruby on Rails (kurz)
Tvorba softvéru a webových aplikácií s Ruby a ROR. Od 39 €.
Sponzorované odkazy