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 :)

Ruby Modülleri (Ruby Modules)” üzerine bir yorum

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir