#Ruby'de bir class birden fazla class'tan
kalıtım alamaz. Yani şöyle bir kullanım yoktur:
class ucabilirHayvanlar < hayvanlar
end
end
class ucabilirHayvanlar <
canlilar
end
#Böylesi bir işlemi ancak -modüller- ile
başarabiliriz. Ruby'de modüllerin bu şekilde kullanımına "mixins"
denir. Örneğin şöyle bir kullanım mümkündür:
class
Laptop
<
makine
include klavye
include mouse
include monitor
end
#Bu örnekteki:
#"include" ettiğimiz öğelerin
herbiri "class" tır.
#Kalıtım işlemindeki "makine"
bir "class" tır.
#Bir örnek daha yapalım.
class
insan
end
class
hayvan
end
class
bocek
end
class
canli
#Yukarıda görüldüğü üzere insan, hayvan ve
bocek class'larını tanımladık. Şimdi modüllerin kullanımını görelim.
#Bu örnekte, tüm class'larımızı
"canli" class'ına dahil etmemiz mümkündür. Çünkü insan, hayvan ve
böcek'ten her biri birer canlıdır.
# Fakat insanları "memeli hayvanlar"
gibi bir gruba dahil edebilirken, böcekleri bu gruba dahil etmemeliyiz. Bu gibi
durumlarda modülleri kullanabiliriz.
module
Memeli
def memeli
puts "memeliyim"
end
end
module
Penceli
def pence
puts "penceliyim"
end
end
module
AnalitikZeka
def analitik
puts "analitik zekaya sahibim"
end
end
#pençeliler modülünü hayvanlar için
kullanabiliriz.
# Şimdi class'lara modülleri enjekte edelim.
class
Insan
include Memeli
include AnalitikZeka
end
class
Hayvan
include Penceli
end
class
Bocek
end
obje
=
Insan.new
obje.analitik
#Modüllerden yeni objeler oluşturulamaz. Yeni
objeler class'lardan oluşturulabilir. Modüller sadece gruplama işlemleri için
kullanılır.
Yeni bir obje Instantiate etmeye çalışmak hata verecektir.
Yeni bir obje Instantiate etmeye çalışmak hata verecektir.
Hiç yorum yok:
Yorum Gönder