16. Tekil Yöntemler

Bir örneğin davranışı ait olduğu sınıf tarafından belirlenir. Ancak bazen belirli bir örneğin özel bir davranışı olmasını isteyebiliriz. Çoğu yazılım geliştirme dilinde, sadece bir kere kullanacağımız bir sınıf tanımlamak gibi karmaşık bir yol seçebiliriz. Ruby'de her nesneye kendine ait yöntemler verebiliriz.

ruby> class TekilDeneme
    |    def boyut
    |       print "25\n"
    |    end
    | end
   :boyut
ruby> dnm1 = TekilDeneme.new
   #<TekilDeneme:0x000055e097dc8f48>
ruby> dnm2 = TekilDeneme.new
   #<TekilDeneme:0x000055e097e6faa0>
ruby> def dnm2.boyut
    | print "10\n"
    | end
   :boyut
ruby> dnm1.boyut
25
   nil
ruby> dnm2.boyut
10
   nil

Yukarıdaki örnekte, dnm1 ve dnm2 aynı sınıfa mensup olmalarına rağmen, dnm2'nin boyut yöntemi yeniden tanımlandığı için farklı davranır. Sadece tekil bir nesneye verilen yönteme tekil yöntem (singleton method) denir.

Tekil yöntemler genelde grafik arayüzü elemanlarında (GUI) değişik düğmelerin değişik eylemler yapması gerektiğinde kullanılır.

Tekil yöntemler CLOS, Dylan vb. yazılım geliştirme dillerinde olduğu üzere Ruby'ye özgü değildir. Self ve NewtonScript gibi bazı diller ise sadece tekil yöntemlerden oluşmuştur. Bu tür diller prototip tabanlı diller olarak anılırlar.