..


Link-uri sponsorizate

Utilizarea mixins în Ruby

Articol scris de Alessio Saltarini
Pagina 1 din 2

Uneori doriţi să creaţi o clasă de obiecte care au "această" facilitate, dar, de asemenea, "acest lucru" şi "acest alt", care sunt, probabil, deja a fost scris în altă parte, în codul nostru sursa.

Cu alte cuvinte, vrem să creăm o clasă care împrumută metode si proprietati definite în alte părţi ale codului sursă sau, în unele bibliotecă.

În schimb, ne-ar aduna în jurul valorii de aceleaşi caracteristici codul nostru sursa într-un singur loc accesibil tuturor. Cum?

Puristii sunt îngrozit programarea orientată pe obiecte şi de sprijin - în opinia mea, nu în întregime fără motiv - că fiecare nevoie de acest tip pot fi rezolvate cu utilizarea corectă a polimorfismului.

Alţii, mai ales în cazul în care vin din experienta cu limbaje ca C + +, susţin că tocmai din cauza acestor cerinţe folosind mostenirea multipla.

Limbi pragmatice ca Ruby, cu toate acestea, aborda problema prin furnizarea de o tehnica numita "mixin", numele - sună! - Un om inghetata ia dat Massuchussets compus din diverse arome inghetata (crema, ciocolata ...)

Ruby mixins

Punct de vedere tehnic, mixins Ruby sunt implementate folosind în cadrul claselor, codul definit la diferite module (modul).

Pentru a lua un exemplu banal, să presupunem că am vrut să pună în aplicare un procesor de cuvinte care imprimă automat pe prietenia mea de o scrisoare de afaceri. Din moment ce doriţi să introduceţi numai datele necesare, şi anume destinatarul şi mesajul. Programul se va gândi prietenos diferite cum ar fi, "Sir" si "sinceritate".

Să începem prin definirea într-o forma prietenoasa:






 Modul CordialitaLettera



    



 def start (adresa)



        



 întoarcere "Draga domnule." destinatar + + "\ n"



    



 capăt



    



 semnătura finală (scrisoare)



        



 întoarcere scrisoare + "\ n" + "cu sinceritate, \ nCarlo Smith"



    



 capăt







 capăt



Nimic, în special, apoi, doar două metode care pot modifica textul primit ca intrare.

Să scrie o clasa "mixt", la aceste metode, doar o mixin:






 Clasa scrisori



    



 include CordialitaLettera



    



 finală stampaLettera (destinatar, mesaj)



        



 = Punctul de start (receptor)



        



 = Scrisoare + mesaj



        



 pune semnătura (scrisoare)



    



 capăt







 capăt



Scrisori mai sus, clasa are o metodă care ia ca date de intrare numai părţile variabil al scrisorii, cu format prietenos definite în modulul.

După cum puteţi vedea sintaxa este destul de similar cu moştenirea, în Ruby, cu toate acestea, spre deosebire de acesta din urmă, într-o clasă poate pune în aplicare orice număr de formulare - şi după cum se ştie, o clasă poate fi derivată dintr-o şi un singur părinte Class (Ruby nu suportă moştenirea multiplă!)

De exemplu, putem scrie:






 def main ()



    



 Lengin = Lettere.new



    



 lEngine.stampaLettera ("Alessio Saltarini",



                          



 "Am procedat doar pentru a transfera



                           



 le-aţi solicitat ").



    



 pune



    



 lEngine.stampaLettera ("Matei Pisconi",



                          



 "Am trimis fax la nr.038283873.")







 capăt



care returnează:





 Stimati sig.Alessio Saltarini,







 Am făcut doar de transfer le-aţi solicitat.







 Cu stimă,







 Carlo Rossi








 Stimati sig.Matteo Pisconi,







 Am trimis fax la nr.038283873.







 Cu stimă,







 Carlo Rossi



Aceasta tehnica, printre altele, ne permite să asimileze utilizarea mixins că de interfeţe în Java: în fapt, dacă o clasa este "amestecarea" cu un formular, de fapt, aceasta va pune în aplicare metodele (şi îndeplineşte, prin urmare, o interfata anumit) .

În aceeaşi categorie ...
E-Learning
Ruby şi Ruby on Rails (Curs) Ruby şi Ruby on Rails (Curs)
Crearea aplicatii software si web cu Ruby şi RoR. De la 39 €.
Link-uri sponsorizate