..
Ponekad želite stvoriti klase objekata koji su "to" lice, ali "ovo" i "ovo drugi", koji su vjerojatno već napisan negdje drugdje u izvorni kod.
Drugim riječima, želimo stvoriti klasa koja posuđuje metode i svojstva definirana u drugim dijelovima izvornog koda ili na bilo koji knjižnici.
Isto tako, mi bi okupiti oko iste funkcionalnosti našeg izvornog koda na jednom mjestu budu dostupni svima. Kako?
Čistunce su užasnuti objektno-orijentirano programiranje i podršku - po mom mišljenju nije u potpunosti bez razloga - da je bilo potrebe za ovakav mogu riješiti odgovarajuće korištenje polimorfizma.
Drugi, osobito ako oni dolaze iz iskustva s jezicima poput C + +, tvrde da je upravo zbog tih uvjeta korištenja više baštinu.
Pragmatični jezika poput Ruby, međutim, pozabaviti pitanjem pružajući tehniku pod nazivom "mixins", ime - čini se! - To je sladoled Massuchussets joj sladoled sastoji od raznih okusa (vrhnje, čokolada ...)
Mixins u Ruby
Tehnički, Ruby mixins provode pomoću klasa unutar, broj definiran u različitim modulima (modul).
Da biste trivijalan primjer, pretpostavimo da sam htjela provesti program za obradu teksta koji sam automatski ispisuje razumljivim poslovno pismo. Budući da želite unijeti samo nužne podatke, odnosno primatelju i poruku. Program će misliti razne prijateljski poput: "Poštovani gospodine" i "S poštovanjem".
Mi smo započeli definiranjem srdačnosti u obliku:
modul CordialitaLettera
def početak (primatelj)
povratak "Poštovani gospodine." + + primatelja "\ n"
kraj
konačni potpis (slovo)
povratak pismo + "\ n" + "S poštovanjem, \ nCarlo Smith"
kraj
kraj
Ništa posebno, dakle, samo dvije metode koje se mogu mijenjati za unos teksta dobio.
Idemo napisati klasu "mješovita" za ove metode, mixin dopis:
Klasa Pisma
uključuje CordialitaLettera
konačni stampaLettera (primatelja, poruka)
= Početna točka (primatelj)
pismo + poruke =
stavlja potpis (pismo)
kraj
kraj
Pisma iznad klasa ima metodu koja uzima kao ulaz samo varijabla dijelove pisma, s prijateljski format definiran u modulu.
Kao što možete vidjeti sintaksa je vrlo slična onoj nasljeđivanja u Ruby, no, za razliku od drugi, u klasi može provesti bilo koji broj oblika - i kao što je poznato, klasa mogu biti izvedeni iz i samo jedan roditelj klasa (Ruby ne podržava višestruke baštinu!)
Na primjer, možemo pisati:
def main ()
Lengin = Lettere.new
lEngine.stampaLettera ('Alessio Saltarini',
'Samo sam nastavio za prijenos
ste zatražili. ')
stavlja
lEngine.stampaLettera ('Matej Pisconi',
'Šaljem faks nr.038283873.')
kraj
koji se vraća:
Dragi sig.Alessio Saltarini, Upravo sam uređen za prijenos ste zatražili. S poštovanjem, Carlo Rossi
Dragi sig.Matteo Pisconi, Šaljem faks nr.038283873. S poštovanjem, Carlo RossiOva tehnika, između ostalog, omogućuje nam da asimilirati korištenje mixins tom Java sučelja: u stvari, ako klasa je "mix" s obliku, u stvari, to će se provoditi metode (tj. u skladu s određenim sučelje) .
| |
Tečaj Ruby i Ruby On šina
Izrada softvera i web aplikacija uz Ruby i ROR. Počevši od 39 €. |