..
Dažreiz jūs vēlaties izveidot klases objektu, kas ir "šo" funkciju, bet arī "šo" un "šo citu", kas, iespējams, jau ir rakstīts citur mūsu avota kodu.
Citiem vārdiem sakot, mēs vēlētos izveidot klases, kas aizņemas metodes un īpašības noteiktas citās pirmkodu vai kādā bibliotēkā.
Un otrādi, mēs varētu savākt ap pašas iezīmes mūsu pirmkodu vienā vietā pieejamu visiem. Kā?
Purists ir šausmās objektorientētā programmēšana un atbalsts -, manuprāt, nav pilnīgi bez iemesla - ka katrs šāda veida nepieciešama, var atrisināt ar pareizu izmantošanu polimorfisms.
Citi, īpaši, ja tie nāk no pieredzes ar valodām kā C + +, apgalvo, ka tieši tāpēc šīs prasības, izmantojot vairākas mantojuma.
Pragmatiskie valodas, piemēram, Ruby, tomēr, pievērsīsies jautājumam, nodrošinot tehnika sauc par "mixlv" nosaukums - tas skan! - Saldējums vīrs viņai deva Massuchussets veido dažādi saldējuma garšas (krējums, šokolāde ...)
Ruby mixins
Tehniski, Ruby mixins ir realizēti, izmantojot robežās klasēs, kods, kas noteikts dažādos moduļos (modulis).
Lai ņemtu trivial, piemēram, domāju, ka es gribēju, lai īstenotu vārdu procesoru, kas automātiski izdrukā savu draudzīgumu uzņēmējdarbības vēstuli. Tā kā jūs vēlaties, lai ievadītu tikai vajadzīgos datus, ti, saņēmēju un ziņu. Programma domā dažādi draudzīgas, piemēram, "Sir" un "cieņu".
Sāksim ar to definējot draudzīgā veidā:
modulis CordialitaLettera
def sākums (adrese)
atgriezties "Dear Mr." + saņēmējs + "\ n"
beigas
galīgā parakstu (burts)
atbildes vēstuli + "\ n" + "Ar cieņu, \ nCarlo Smith"
beigas
beigas
Nekas īpaši tad, tikai divas metodes, kas var mainīt teksta saņēma kā priekšnodokli.
Let 's uzrakstīt klase "jauktās", lai šīs metodes, vienkārši mixlv:
Klases vēstules
ietver CordialitaLettera
galīgā stampaLettera (adresāts, ziņas)
= Sākumpunktu (uztvērējs)
= Burts + post
liek paraksts (burts)
beigas
beigas
Vēstules virs klasē ir metode, kas ņem, ko ievada tikai mainīgās daļas, vēstules, ar draudzīgu formātu, modulī.
Kā jūs varat redzēt, sintakse ir diezgan līdzīgs mantojumā Ruby, tomēr atšķirībā no pēdējā, klasē var īstenot jebkādu skaitu veidu - un kā zināms, klasi var iegūt no un tikai viens no vecākiem klase (Ruby neatbalsta vairākas mantojuma!)
Piemēram, mēs varam rakstīt:
def galvenais ()
Lengin = Lettere.new
lEngine.stampaLettera ("Alessio Saltarini"
"Es tikko sācis nodot
jūs pieprasījāt ").
izvirza
lEngine.stampaLettera (Mateja Pisconi "
"Es sūtīt faksu nr.038283873. ')
beigas
kas atgriež:
Cienījamie sig.Alessio Saltarini, Esmu tikko veikts nodošanas jūs pieprasījāt. Ar cieņu, Carlo Rossi
Cienījamie sig.Matteo Pisconi, Es varu sūtīt faksu uz nr.038283873. Ar cieņu, Carlo RossiŠis paņēmiens, cita starpā, ļauj mums to uztvert izmantošanu mixins ka uz saskarņu Java: patiesībā, ja klasē ir "sajaukšanu" ar formu, patiesībā tā īstenos metodes (un tādējādi atbilst noteiktu interfeisu) .
| |
Ruby un Ruby on Rails (Course)
Izveidot programmatūras un Web lietojumprogrammas ar Ruby un ROR. Sākot no € 39. |