..


Sponsored Links

Verwendung von Mixins in Ruby

Artikel von Alessio Saltarini geschrieben
Seite 1 von 2

Manchmal möchte man eine Klasse von Objekten, die "this"-Funktion haben zu schaffen, sondern auch "dieses" und "das andere", die vielleicht schon an anderer Stelle in den Quellcode geschrieben.

Mit anderen Worten, wir wollen eine Klasse, die Methoden und Eigenschaften in anderen Teilen des Quellcodes oder in manchen Bibliothek definiert leiht erstellen.

Umgekehrt würden wir um die gleichen Merkmale zu sammeln unseren Quellcode in einem Ort für alle zugänglich. Wie?

Meiner Meinung nach nicht ganz ohne Grund - -, das keine Wünsche dieser Art mit der richtigen Verwendung von Polymorphismus gelöst werden können Die Puristen werden objekt-orientierten Programmierung und Betreuung entsetzt.

Andere, vor allem wenn sie aus Erfahrung mit Sprachen wie C + +, argumentieren, dass gerade wegen dieser Anforderungen mit Mehrfachvererbung.

Pragmatische Sprachen wie Ruby, aber das Problem durch die Bereitstellung einer Technik namens "mixin", der Name - es klingt! - Ein Eis Mann gab ihr die Massuchussets verschiedener Eissorten zusammengesetzt (Creme, Schokolade ...)

The Ruby Mixins

Technisch gesehen sind Ruby Mixins unter Verwendung innerhalb der Klassen, Code in verschiedene Module (Modul) definiert.

Um ein triviales Beispiel: Angenommen, ich wollte eine Textverarbeitung, die automatisch ausgedruckt meine Freundlichkeit einen Geschäftsbrief zu implementieren. Da Sie nur die notwendigen Daten eingeben wollen, dh der Empfänger und die Nachricht. Das Programm wird denken, die verschiedenen freundlich wie "Sir" und "Mit freundlichen Grüßen."

Lassen Sie uns durch die Definition in einer freundlichen Form zu starten:






 Modul CordialitaLettera



    



 def starten (Adresse)



        



 return "Sehr geehrter Herr." + Empfänger + "\ n"



    



 Ende



    



 letzte Unterschrift (Brief)



        



 Rückkehr Brief + "\ n" + "Mit freundlichen Grüßen, \ nCarlo Smith"



    



 Ende







 Ende



Nichts Besonderes, dann erhielt nur zwei Methoden, die den Text ändern kann als Eingabe.

Schreiben wir eine Klasse "mixed", diese Methoden, nur mixin:






 Klasse Letters



    



 umfasst CordialitaLettera



    



 Finale stampaLettera (Empfänger, Nachricht)



        



 = Startpunkt (Empfänger)



        



 Punkt + = Nachricht



        



 setzt Signatur (Brief)



    



 Ende







 Ende



Briefe über die Klasse hat eine Methode, die als Eingabe nur die variablen Teile des Briefes, mit freundlichen Format in das Modul definiert.

Wie Sie sehen können die Syntax ist sehr ähnlich der Vererbung in Ruby, aber im Gegensatz zu diesen können in einer Klasse implementiert eine beliebige Anzahl von Formularen - und wie bekannt ist, eine Klasse kann aus einer abgeleitet werden und nur eine übergeordnete Klasse (Ruby unterstützt keine Mehrfachvererbung!)

Zum Beispiel können wir schreiben:






 def main ()



    



 Lengin = Lettere.new



    



 lEngine.stampaLettera ('Alessio Saltarini "



                          



 "Ich ging zu übertragen



                           



 Sie beantragt. ')



    



 stellt



    



 lEngine.stampaLettera ('Matthew Pisconi "



                          



 "Ich schicke das Fax an nr.038283873. ')







 Ende



die Renditen:





 Sehr geehrte sig.Alessio Saltarini,







 Ich habe gerade die Übertragung von Ihnen angeforderte getan.







 Mit freundlichen Grüßen,







 Carlo Rossi








 Sehr geehrte sig.Matteo Pisconi,







 Ich schicke das Fax an nr.038283873.







 Mit freundlichen Grüßen,







 Carlo Rossi



Diese Technik, unter anderem ermöglicht es uns, den Einsatz von Mixins, dass von Schnittstellen in Java zu assimilieren: in der Tat, wenn eine Klasse "Mischen" mit einem Formular, in der Tat wird es die Methoden zu implementieren (und erfüllt damit eine bestimmte Schnittstelle) .

In der selben Kategorie ...
E-Learning
Ruby und Ruby on Rails (Kurs) Ruby und Ruby on Rails (Kurs)
Neues Software-und Web-Anwendungen mit Ruby und RoR. Von 39 €.
Sponsored Links