..
Kartais jūs norite sukurti objektai, kurie "tai" funkcija klasės, bet ir "tai" ir "tai kiti", kurie galbūt jau parašyta kitur mūsų kodą.
Kitaip tariant, mes norime sukurti klasės, kad skolinasi metodus ir savybes, apibrėžtas kitose kodo arba kai biblioteka.
Priešingai, mes turėtume surinkti apie pačias funkcijas mūsų kodą vienoje vietoje prieinamą visiems. Kaip?
Puristų yra pasibaisėjusi Objektinis programavimas ir palaikymas - mano nuomone, nėra visiškai be priežasties - kad kiekvienas šio tipo reikia, gali būti išspręsta tinkamai naudoti polimorfizmas.
Kiti, ypač jei jie kilę iš patirties kalbų kaip C + +, teigia, kad būtent dėl šių reikalavimų naudojant keletą paveldėjimo.
Pragmatinė kalbų, pavyzdžiui, Ruby, tačiau spręsti šį klausimą suteikiant technika vadinama "Mixin" pavadinimas - tai skamba! - Ledų žmogus davė jai Massuchussets sudaro įvairių ledų skonio (grietinėlės, šokolado ...)
Ruby mixins
Techniškai, Ruby mixins yra įgyvendinamos naudojant per klases, kodu, apibrėžtu skirtingus modulius (modulis).
Siekiant atsižvelgti trivialus pavyzdys, tarkime, kad aš norėjau įgyvendinti žodį procesorių, kuris automatiškai spausdinti mano patogumas verslo laišką. Kadangi jūs norite įvesti tik reikalingus duomenis, ty gavėjo ir pranešimą. Programa bus galvoti skirtingų draugiškas, pavyzdžiui, "seras" ir "Pagarbiai".
Pradėkime nustatant ir patogiu būdu:
modulis CordialitaLettera
def pradžios (adresas)
grįžti "Dear Mr." + gavėjas + "\ n"
pabaiga
galutinis parašas (raidė)
atsakomajame laiške + "\ n" + "Pagarbiai, \ nCarlo Smith"
pabaiga
pabaiga
Jokia kita ko, tada tik du metodus, kuriuos galite pakeisti tekstą gavo kaip pirkimo.
Leiskite rašyti klasės "mišrios" šių metodų, tik Mixin:
Class
apima CordialitaLettera
galutinis stampaLettera (gavėjui, pranešimą)
= Pradžios tašką (imtuvas)
= Raidė + Paskelbkite
kelia parašą (raidė)
pabaiga
pabaiga
Raidės virš klasė turi metodą, kad mano, kaip įvesti tik kintamojo dalių laišką, su draugiška formatu apibrėžtas modulis.
Kaip matote sintaksė yra gana panaši į paveldėjimo Ruby, tačiau, skirtingai nuo pastarojo, kad klasė gali įgyvendinti bet kurį formų skaičius - ir, žinoma, klasės gali būti gauta iš ir tik vienas iš tėvų klasė (Ruby nepalaiko kelių paveldėjimo!)
Pavyzdžiui, mes galime parašyti:
def main ()
Lengin = Lettere.new
lEngine.stampaLettera ("Alessio Saltarini"
"Aš ką tik pradėjo perdavimo
prašėte. ')
kelia
lEngine.stampaLettera ("Mato Pisconi"
"Aš siunčia faksu nr.038283873. ')
pabaiga
kuri grąžina:
Gerbiami sig.Alessio Saltarini, Aš ką tik padaryta perdavimo prašėte. Pagarbiai, Carlo Rossi
Gerbiami sig.Matteo Pisconi, Galiu siųsti faksu nr.038283873. Pagarbiai, Carlo RossiŠis metodas, be kita ko, leidžia įsisavinti apie mixins kad sąsajas Java naudoti: iš tiesų, jei klasėje yra "maišymo" su forma, tai ji įgyvendins metodus (ir todėl atitinka tam tikrą sąsają) .
| |
Ruby ir Ruby on Rails (kurso)
Sukurti programinę įrangą ir interneto programų su Ruby ir RoR. Nuo 39 €. |