metotlar
Önceki
İçindekiler
İçindekiler
Miras
Sonraki

 Ruby Kullanıcı KılavuzuSınıflar 

Gerçek dünya sınıflandırabileceğimiz nesnelerle doludur. Örneğin küçük bir çocuk bir köpek gördüğünde, cinsine bakmaksızın "hav hav" demesi gibi biz de dünyadaki nesneleri kategorize ederiz.

Nesneye yönelik terminolojide, "köpek" gibi nesnelerin kategorize edilmiş haline sınıf, sınıfın özelleştirilmiş nesnelerinde örnek (instance) denir.

Genelde Ruby'de ya da herhangi başka bir nesneye yönelik programlama dilinde nesne yapmak için önce sınıfın karakteristikleri tanımlanır sonra da bir örnek tanımlanır. Bu süreci görebilmek için Kopekadında ilk basit sınıfımızı tanımlıyoruz:

ruby> class Kopek
    |   def konus
    |     print "Hav Hav\n"
    |   end
    | end
   nil

Sınıf tanımlaması class ile end arasında yapılmaktadır. Bu alanda bulunan def, önceki bölümlerde açıkladığımız gibi sınıfa bazı özel davranışlar kazandıran metodları tanımlamak için kullanılır.

Artık bir Kopek sınıfı tanımladık, öyleyse şimdi bir köpek yapabiliriz:

ruby> pochi = Kopek.new
   #<Kopek:0xbcb90>

Kopek sınıfından yeni bir örnek yarattık ve pochi adını verdik. new metodu her sınıf için yeni bir örnek yapmaya yarar. pochi sınıf tanımımıza göre bir Kopek olduğu için, bir köpekte olmasına karar verdiğimiz tüm özellikleri taşır. Kopek sınıfımız çok basit olduğu için pochi'den yapmasını istediğimiz küçük bir hile var.

ruby> pochi.konus
Hav Hav
   nil

Bir sınıftan yeni bir örnek yaratmak bazen, örnekleme olarak adlandırılır. Köpeğimizin havlamasını test etmek için öncelikle bir köpeğimizin olması lazım, Kopek sınıfından bizim için havlamasını isteyemeyiz.

ruby> Kopek.konus
ERR: (eval):1: undefined method `konus' for Kopek:class

Bunun sandiviç kavramını yemeye çalışmaktan bir farkı yoktur.

Diğer taraftan, duygusal olarak bağlanmamış bir köpeğin sesini duymak istersek, geçici bir köpek yaratabilir ve kaybolmadan önce bizim için küçük bir ses çıkarmasını isteyebiliriz.

ruby> (Kopek.new).konus   # daha genel olarak, Kopek.new.konus
Hav Hav
   nil

"Bekle," diyebilirsiniz, "bu kerata nereye kayboldu böyle?" Bu doğru: eğer ona bir isim vermezseniz (pochi'de yaptığımız gibi) Ruby'nin otomatik çöp toplama mekanizması devreye girer ve bunun istenmeyen aylak bir köpek olduğuna karar verir ve merhametsizce yok eder. Gerçekten, sorun yok; biliyorsunuz ki tüm köpekleri istediğimizi söyleyebiliriz.


metotlar
Önceki
İçindekiler
İçindekiler
Miras
Sonraki