..


Links Patrocinados

Uso de mixins em Ruby

Artigo escrito por Alessio Saltarini
Página 1 de 2

Às vezes você quer criar uma classe de objetos que têm recurso de "isto", mas "isso" e "esse outro", que são, provavelmente, já foi escrito em outros lugares em nosso código fonte.

Em outras palavras, queremos criar uma classe que toma emprestado métodos e propriedades definidas em outras partes do código-fonte ou em qualquer biblioteca.

Por outro lado, nos reuníamos em torno da mesma funcionalidade nosso código fonte em um lugar acessível a todos. Como fazer?

Os puristas ficam horrorizados com a programação orientada a objeto e suporte - na minha opinião, não inteiramente sem razão - que qualquer necessidade deste tipo podem ser resolvidos pelo uso apropriado de polimorfismo.

Outros, especialmente se forem provenientes de experiência com linguagens como C + +, argumentam que, precisamente por causa destes requisitos usando herança múltipla.

Linguagens como Ruby pragmática, no entanto, abordar a questão, fornecendo uma técnica chamada "mixins", o nome - que parece! - Isso é uma Massuchussets sorvete deu-lhe sorvete composto de vários sabores (chocolate, creme ...)

O mixins em Ruby

Tecnicamente, mixins Ruby são implementados usando classes dentro, código definido em diferentes módulos (módulo).

Para dar um exemplo trivial, suponha que eu queria implementar um processador de texto que eu imprime automaticamente a simpatia de uma carta comercial. Desde que você deseja inserir apenas os dados necessários, ou seja, o destinatário ea mensagem. O programa vai pensar o amistoso diversos como, "Dear Sir" e "Sincerely".

Começamos por definir a cordialidade em um formulário:






 módulo CordialitaLettera



    



 def start (o destinatário)



        



 return "Dear Mr.." + destinatário + "\ n"



    



 final



    



 assinatura final (letra)



        



 retorno carta + "\ n" + "Atenciosamente, \ nCarlo Smith"



    



 final







 final



Nada em particular, portanto, apenas dois métodos que podem alterar a entrada de texto recebidas.

Vamos escrever uma classe "misto" para esses métodos, um memorando mixin:






 Cartas de classe



    



 inclui CordialitaLettera



    



 finais stampaLettera (destinatário, mensagem)



        



 = Ponto de partida (o destinatário)



        



 carta + message =



        



 coloca assinatura (letra)



    



 final







 final



Letras acima da classe tem um método que recebe como entrada apenas as partes variáveis ​​da carta, com formato amigável definido no módulo.

Como você pode ver a sintaxe é bastante semelhante ao de herança no Ruby, mas, ao contrário deste último, em uma classe pode implementar qualquer número de formas - e como é sabido, uma classe pode ser derivada de uma e apenas uma classe pai (Ruby não suporta herança múltipla!)

Por exemplo, podemos escrever:






 def main ()



    



 Lengin = Lettere.new



    



 lEngine.stampaLettera ('Alessio Saltarini',



                          



 "Eu só procedeu à transferência



                           



 que você pediu. ')



    



 coloca



    



 lEngine.stampaLettera ('Matthew Pisconi',



                          



 'Eu enviar o fax para nr.038283873.')







 final



que retorna:





 Caro sig.Alessio Saltarini,







 Eu só dispostos a transferi-lo solicitado.







 Atenciosamente,







 Carlo Rossi








 Caro sig.Matteo Pisconi,







 Eu enviar o fax para nr.038283873.







 Atenciosamente,







 Carlo Rossi



Esta técnica, entre outras coisas, permite-nos assimilar o uso de mixins ao de interfaces Java: na verdade, se uma classe é "mix" com um formulário, na verdade, vai implementar os métodos (ou seja, cumprir uma determinada interface) .

Na mesma categoria ...
E-Learning
Ruby e Ruby On Rails (Curso) Ruby e Ruby On Rails (Curso)
Criação de software e aplicações Web com Ruby e RoR. A partir de 39 €.
Links Patrocinados