..
Belki de zaten başka bir yerde bizim kaynak kodu yazılmış olan, bazen "Bu" özelliğe sahip nesnelerin bir sınıf oluşturmak istiyorum, ancak aynı zamanda "bu" ve "bu başka".
Diğer bir deyişle, kaynak kodu diğer bölgelerinde ya da kütüphane tanımlanan yöntemleri ve özellikleri ödünç bir sınıf oluşturmak istiyorum.
Tersine, hepimiz için ulaşılabilir bir yerde aynı özellikleri çapındaki kaynak kodu toplamak olacaktır. Nasıl?
Bence değil tamamen bir neden olmadan - - Bu tür her türlü ihtiyacı polimorfizminin doğru kullanımı ile çözülebileceğini titiz nesne tabanlı programlama ve destek dehşete düşüyoruz.
Onlar gibi dillerle deneyim gelen özellikle Diğerleri, C + +, çünkü çoklu kalıtım kullanarak bu gereksinimleri olduğunu tam savunuyorlar.
Ruby gibi Pragmatik dil, ancak, "mixin" adlı bir tekniği adı sağlayarak sorunu gidermek - sesi! - Bir dondurma adam onu çeşitli dondurma tatlar oluşan Massuchussets verdi (krema, çikolata ...)
Ruby katmalar
Teknik olarak, Ruby katmalar sınıflar, farklı modüller (modül) tanımlanan kodu içinde kullanılarak uygulanır.
Önemsiz bir örnek vermek gerekirse, ben otomatik olarak bir iş mektubu benim dostu çıktısını bir kelime işlemci uygulamak istedim varsayalım. Sadece gerekli verileri girmek istediğim için, alıcı ve mesaj yani. Program farklı dost gibi "Efendim" ve düşünür "Saygılarımızla."
Samimi bir şekilde tanımlayarak başlayalım:
modül CordialitaLettera
def start (adresi)
"Dear Mr." + alıcı + "\ n" dönüş
son
son imza (mektup)
mektup + "\ n" + "Saygılarımızla, \ nCarlo Smith" dönüş
son
son
Özellikle hiçbir şey, daha sonra, metni değiştirmek yalnızca iki yöntem girdi olarak aldı.
Kullanıcı, bu yöntemler için bir sınıf "karma" sadece bir mixin yazmak istiyorum:
Sınıf Mektuplar
CordialitaLettera içerir
son stampaLettera (alıcı, mesaj)
= Başlangıç noktası (alıcı)
= Mektup + mesaj
imza atıyor (mektup)
son
son
Sınıf yukarıda Mektuplar Modülde tanımlanan dostu formatında, girdi olarak mektubun tek değişken parça alan bir yöntemi vardır.
Sözdizimi Ruby miras oldukça benzer görebileceğiniz gibi, ancak ondan farklı olarak, bir sınıf oluşturur herhangi bir sayıda uygulayabilir - ve bilindiği gibi, bir sınıf elde edilebilir ve sadece bir üst sınıf (Ruby çoklu mirası desteklemez!)
Örneğin biz yazabilirsiniz:
def main ()
Lengin = Lettere.new
lEngine.stampaLettera ('Alessio Saltarini'
'Ben sadece transfer devam
İstediğiniz. ')
koyar
lEngine.stampaLettera ('Matthew Pisconi'
'Ben nr.038283873 için faks gönderin.')
son
hangi döndürür:
Sevgili sig.Alessio Saltarini, Sadece istediğiniz transferi yaptık. Saygılarımızla, Carlo Rossi
Sevgili sig.Matteo Pisconi, Ben nr.038283873 için faks gönderin. Saygılarımızla, Carlo RossiDiğer şeyler arasında bu teknik, bize Java arayüzleri bu katmalar kullanımı asimile olanak verir: bir sınıf bir form ile "karıştırma" ise aslında, aslında (ve bu nedenle belli bir arabirim karşılayan) yöntemleri uygulayacak .
| |
Ruby on Rails ve Ruby (Ders)
Ruby ve RoR ile yazılım ve Web uygulamaları oluşturun. En düşük € 39. |