..
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 RossiDiese 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) .
| |
Ruby und Ruby on Rails (Kurs)
Neues Software-und Web-Anwendungen mit Ruby und RoR. Von 39 €. |