..
Czasami chcesz utworzyć klasę obiektów, które mają "to" cecha, ale "to" i "tego drugiego", które prawdopodobnie są już zostało napisane w innym miejscu naszego kodu źródłowego.
Innymi słowy, chcemy utworzyć klasę, która zapożycza metody i właściwości określone w innych częściach kodu źródłowego lub w bibliotece.
Z drugiej strony, staraliśmy się zebrać w tym samym funkcjonalność naszego kodu źródłowego w jednym miejscu dostępne dla wszystkich. Jak zrobić?
Puryści są przerażone programowania obiektowego i wsparcie - moim zdaniem nie do końca bez powodu - że zapotrzebowanie na tego rodzaju może być rozwiązany poprzez właściwe wykorzystanie polimorfizmu.
Inni, zwłaszcza jeśli pochodzą z doświadczenia z języków takich jak C + +, twierdzą, że właśnie z powodu tych wymagań poprzez wielokrotne dziedziczenie.
Pragmatyczny języków takich jak Ruby, jednak rozwiązania problemu poprzez techniki zwanej "wstawek", nazwa - jak się wydaje! - To Massuchussets lody podał jej lody składa się z różnych odmianach (śmietana, czekolada ...)
Wstawek w Ruby
Technicznie, wstawki Ruby są realizowane poprzez zajęcia w ramach, kod zdefiniowany w różnych modułach (moduł).
Aby zrobić banalny przykład, załóżmy, że chciałem wprowadzić w edytorze tekstu, że automatycznie drukuje życzliwość list biznesu. Od chcesz wprowadzić tylko niezbędne dane, tj. odbiorca i wiadomości. Program będzie myśleć różnych przyjazne jak: "Szanowny Panie" i "Z poważaniem".
Zaczynamy od zdefiniowania serdeczności w postaci:
Moduł CordialitaLettera
def start (odbiorcy)
zwrotu "Drogi Panie". + odbiorca + "\ n"
koniec
ostatecznego podpisu (pisma)
powrót litera + "\ n" + "Z poważaniem, \ nCarlo Smith"
koniec
koniec
Nic szczególnego, więc tylko dwie metody, które mogą zmienić wprowadzania tekstu otrzymał.
Napiszmy klasy "mieszane" do tych metod, notatki wstawek:
Listy klasy
obejmuje CordialitaLettera
końcowego stampaLettera (odbiorca, komunikat)
= Punkt początkowy (odbiorcy)
list + message =
stawia podpisu (pisma)
koniec
koniec
Listy nad klasa ma metody, która przyjmuje jako wejście tylko zmiennej części listu, z przyjaznym formacie zdefiniowane w module.
Jak widać, składnia jest bardzo podobna do dziedziczenia w Ruby, ale, w przeciwieństwie do drugiego, w klasie może wprowadzić dowolną ilość formularzy - a jak wiadomo, klasy mogą być uzyskane z i tylko jedną klasę rodzica (Ruby nie obsługuje wielokrotnego dziedziczenia!)
Na przykład, możemy napisać:
def main ()
Lengin = Lettere.new
lEngine.stampaLettera ('Alessio Saltarini "
"I właśnie przystąpił do transferu
na Twoją prośbę. ")
stawia
lEngine.stampaLettera ("Matthew Pisconi"
"I wysłać faks do nr.038283873. ')
koniec
która zwraca:
Drodzy sig.Alessio Saltarini, I tak rozmieszczone, aby przenieść na Twoją prośbę. Z poważaniem, Carlo Rossi
Drodzy sig.Matteo Pisconi, Wysłać faks na nr.038283873. Z poważaniem, Carlo RossiTechnika ta, między innymi, pozwala na przyswojenie używać wstawek do interfejsów Java: w rzeczywistości, jeśli klasa jest "mix" z formularzem, w rzeczywistości będzie wdrożenie metody (tj. zgodne z danym interfejsie) .
| |
Ruby i Ruby On Rails (Kurs)
Tworzenie oprogramowania i aplikacji webowych w języku Ruby RoR. Począwszy od 39 €. |