Ruby Modülleri (Ruby Modules)

Merhabalar,

Bugün Ruby’nin çok güçlü olduğu bir konuya değineceğim, modüller. Özellikle çok büyük uygulamalar yazarken, bazı durumlarda ‘Object Oriented’ tasarım yaklaşımının sınırlarını zorlamak gerekir. Günümüzdeki pek çok programlama dilinde olduğu gibi Ruby’nin tasarımcıları da ‘multiple inheritance’ kavramını desteklememiştir. Fakat bu Özelliğin bulunmaması elbetteki bazı kısıtlamaları beraberinde getirmiştir. Bu engelleri ortandan kaldırmak için modüllerin kullanımı ve Özellikleri arttırmış ve sonuçta ortaya çok güzel bir yapı ortaya çıkmıştır.

Aslında ‘module’ kavramı Ruby dili içerisinde pek çok alanda kullanılabilir. Bir modül ‘static’ bir sınıf gibi davranabileceği gibi, bir ‘namespace’ gibi de kullanılabilir. Tüm bu kullanım alanlarına ek olarak sınıfların genişletilmesi için kullanılır ki, bu gerçekten çok güzel bir Özelliktir.

Hemen birkaç kullanım Örneği verelim;
İlk kullanım Örneği olarak durağan (static) bir sınıf gibi davranmasını inceleyelim;
[ruby]module LogHelper
NAME = “Default Logger”

def LogHelper.create
printf “%s LogHelper.create\n”, NAME
end

def LogHelper.info
printf “%s LogHelper.info\n”, NAME
end

def LogHelper.error
printf “%s LogHelper.error\n”, NAME
end
end[/ruby]
İkinci kullanım Örneği olarak ‘namespace’;
[ruby]
module UordekWs

ROProp = 0 # Read-only property
RWProp = 1 # Read-write property
WOProp = 2 # Write-only property
class BaseGenerator
# …
end

class ExtendedGenerator
# …
end
end
[/ruby]
Ve son olarak ‘module mixin’ :) ; Bu adreste çok daha güzel bir Örnek mevcut, bakmanızı tavsiye ederim. Umarım sizlere yardımcı olur. Bir sonraki yazımıza ‘module mixin’ başlığı ile devam edeceğiz. Şimdilik, kolay gelsin :)

Share