..


Рекламные ссылки

Использование Mixins в Рубине

Статья написана Алессио Saltarini
Страница 1 из 2

Иногда вы хотите создать класс объектов, которые "это" особенность, но и "это" и "это другое", которые, возможно, уже было написано в другом месте в нашем исходном коде.

Другими словами, мы хотим создать класс, который заимствует методы и свойства, определенные в других частях исходного кода или в некоторых библиотек.

Наоборот, мы собирались вокруг те же самые особенности нашего исходного кода в одном месте, доступном для всех. Как?

Пуристов с ужасом объектно-ориентированное программирование и поддержка - на мой взгляд, не совсем без оснований, - что все потребности такого рода могут быть решены с правильного использования полиморфизма.

Другие, особенно если они приходят из опыта применения языков, как C + +, утверждают, что именно из-за этих требований с использованием множественного наследования.

Прагматические языков, таких как Ruby, однако, решения проблемы, предоставляя технику, называемую "примесь", имя - это звучит! - Человек мороженое дал ей Massuchussets состоит из различных вкусов мороженого (сливки, шоколад ...)

Рубин Mixins

Технически, Ruby Mixins реализованы с использованием внутри классов, код, определенный в различных модулей (модуль).

Для того, чтобы тривиальный пример, предположим, что я хотел реализовать текстовый процессор, который автоматически распечатать мои дружелюбие делового письма. Так как вы хотите ввести только необходимые данные, то есть получателя и сообщение. Программа будет думать, как различные дружественные ", сэр" и "С уважением".

Давайте начнем с определения в дружественной форме:






 Модуль CordialitaLettera



    



 четкости начала (адрес)



        



 возвращение "Уважаемый г-н". + + получателя "\ п"



    



 конец



    



 Окончательный подписи (письмо)



        



 возвращение письма + "\ п" + "С уважением, \ nCarlo Смит"



    



 конец







 конец



Ничто в частности, тогда, только два метода, которые могут изменить текст получил в качестве входных данных.

Давайте напишем класс «смешанных» к этим методам, просто подмешать:






 Класс Письма



    



 включает в себя CordialitaLettera



    



 Окончательный stampaLettera (получателя, сообщение)



        



 = Начальная точка (приемник)



        



 = + Разместить письмо



        



 ставит подпись (письмо)



    



 конец







 конец



Письма выше класс имеет метод, который принимает в качестве входных данных только переменной части письма, с дружественными формате, определенном в модуле.

Как вы можете видеть синтаксис очень похож на наследование в Ruby, однако, в отличие от последнего, в класс может реализовать любую форму - и, как известно, класс может быть получена из и только один родительский класс (Ruby не поддерживает множественное наследование!)

Например, мы можем написать:






 четкости основных ()



    



 Lengin = Lettere.new



    



 lEngine.stampaLettera ("Алессио Saltarini»,



                          



 "Я только что приступил к передаче



                           



 Вы просили. ')



    



 ставит



    



 lEngine.stampaLettera (Мэтью Pisconi »,



                          



 "Я посылаю факс nr.038283873. ')







 конец



, которая возвращает:





 Уважаемые sig.Alessio Saltarini,







 Я только что сделал передачу вы просили.







 С уважением,







 К. И. Росси








 Уважаемые sig.Matteo Pisconi,







 Я посылаю факс nr.038283873.







 С уважением,







 К. И. Росси



Эта технология, помимо прочего, позволяет усваивать использование Mixins что интерфейсов в Java: в самом деле, если класс "смешивания" с формой, на самом деле это будет реализовывать методы (и, следовательно, соответствует определенный интерфейс) .

В той же категории ...
E-Learning
Руби и Ruby On Rails (курс) Руби и Ruby On Rails (курс)
Создание программного обеспечения и веб-приложений с Рубином и RoR. С 39 €.
Рекламные ссылки