..
Понекад желите да креирате класу објеката који су "ову" функцију, али "ово" и "овај други", који су вероватно већ написано на другим местима у нашој изворног кода.
Другим речима, желимо да створимо класи која позајмљује методе и својства дефинисана у другим деловима изворног кода или у било којој библиотеци.
Насупрот томе, ми би се окупили око исту функционалност нашег кода на једном месту доступни свима. Како да?
Чистунци су ужаснути објектно-оријентисаног програмирања и подршка - по мом мишљењу није у потпуности без разлога - да било која потреба за оваквом врстом може решити одговарајућим коришћењем полиморфизма.
Други, посебно ако су из искуства са језицима као што су Ц + +, тврде да управо због тих захтева користећи више наслеђе.
Прагматичан језицима као што су Руби, међутим, баве питањем пружајући технику под називом "микинс", име - изгледа! - То је сладолед Массуцхуссетс јој сладолед састављена од различитих укуса (креме, чоколаде ...)
Микинс у Рубин
Технички, Руби микинс се реализују коришћењем класе у себи, код дефинисани у различитим модулима (модул).
Да узмемо тривијалан пример, претпоставимо да сам хтео да спроведе процесор речи који сам аутоматски штампа пријатељство пословно писмо. Пошто желите да унесете само потребне податке, односно примаоца и поруку. Програм ће мислити разне пријатељски као што су "Поштовани господине" и "С поштовањем".
Почињемо дефинисањем срдачност у облику:
модул ЦордиалитаЛеттера
деф почетка (прималац)
повратак "Деар Мр." + + примаоца "\ н"
крај
коначни потпис (писмо)
повратак писмо + "\ н" "С поштовањем, \ нЦарло Смит"
крај
крај
Ништа посебно, дакле, само два метода која може да промени начин уноса текста примили.
Хајде да напише класе "мешовитог" да ове методе, Миксин Мемо:
Класа Писма
укључује ЦордиалитаЛеттера
коначно стампаЛеттера (прималац, порука)
= Почетну тачку (прималац)
писмо + = поруку
ставља потпис (писмо)
крај
крај
Слова изнад класа има метод који узима као улаз само променљиве делове писма, са пријатељским формата дефинисане у модулу.
Као што можете видети синтакса је веома сличан оном који наслеђивања у Руби, али је, за разлику од другог, у класи може да примени било који број облика - и као што је познато, класе се могу извести из и само један родитељ класе (Руби не подржава више наследство!)
На пример, можемо писати:
деф маин ()
Ленгин = Леттере.нев
лЕнгине.стампаЛеттера ('Алессио Салтарини',
"Само сам наставио да пренесе
коју сте тражили ').
ставља
лЕнгине.стампаЛеттера ('Матеј Писцони',
"Шаљем факс нр.038283873. ')
крај
која враћа:
Поштовани сиг.Алессио Салтарини, Само сам организовао за пренос сте тражили. С поштовањем, Царло Роси
Поштовани сиг.Маттео Писцони, Шаљем факс нр.038283873. С поштовањем, Царло РосиОва техника, између осталог, омогућава нам да се асимилују употребу микинс том Јава интерфејса: у ствари, ако је класа је "микс" са форме, у ствари, она ће се имплементирати методе (тј. у складу са одређеним интерфејс) .
| |
Наравно Руби и Руби Он Раилс
Креирање софтвера и Веб апликација са рубином и РОР. Полазећи од 39 €. |