Search

Javascript ile Kalıtım (Inheritance)



0 yorum

Javascript ile Kalıtım (Inheritance)

Nesne Yönelimli Programlamanın(OOP) olmazsa olmaz özelliklerinden birisi olan kalıtımı(inheritance) javascript ile nasıl gerçekleştirdiğimizden bahsedeceğim. Eğer temel anlamda javascript sınıf yapısına hakim değilseniz, öncelikle Javascript ile Nesne Yönelimli Programlama makalemi okumanızı öneririm.

Kalıtımı sunucu taraflı yazılım dillerinde hızlıca kullanabiliyoruz. Örneğin CSharp dilinde iki nokta üst üste(:) karakteriyle, Java dilinde ise extends anahtar kelimesi ile gerçekleştiriyoruz. Javascript ile kalıtımda ise durum biraz farklı.

Gerçekleştireceğimiz senaryo Personel isimli bir sınıftan miras alan bir Yönetici sınıfı oluşturacağız. Bu senaryo ile kalıtım yoluyla Personel sınıfının özelliklerini, Yönetici sınıfı üzerinden nasıl kullanıldığını göreceğiz.

Personel isimli sınıfımızı aşağıda yazıyorum.
function Personel(pAdi, pSoyad, pYas, pMeslek)
{
    this.Adi = pAdi;
    this.Soyad = pSoyad;
    this.Yas = pYas;
    this.Meslek= pMeslek;
}

Personel sınıfından prototype ile KisiBilgileri adında bir fonksiyon oluşturuyoruz.
 
  Personel.prototype.KisiBilgileri = function()
  {
    console.log(
      "Adı: " + this.Adi + "\n" +  
      "Soyadı: " + this.Soyad + "\n" + 
      "Yaş: " + this.Yas + "\n" +
      "Meslek: " + this.Meslek  
    );
  }

Yönetici sınıfımızda ise bu sınıfa ek olarak Unvan özelliği bulunacaktır. 
function Yonetici(pAdi, pSoyad, pYas, pMeslek, pUnvan)
{
    Personel.call(this, pAdi, pSoyad, pYas, pMeslek); 
    this.Unvan = pUnvan; 
}

Personel.call satırında, kalıtım alacağımız sınıfı call ile çağırarak ortak olan değişkenlerimizi gönderiyoruz.
this anahtar sözcüğü ise bu değişikliklerin Yonetici sınıfına uygulanacağını söylemiş oluyor.

Farklı olan değişkeni(Unvan) ise dışarıdan gelecek olan parametreye eşitledim. 

Prototip eşitlemesi yaparak kalıtımı tamamlayalım.
Yonetici.prototype = Object.create(Personel.prototype);
Yonetici.prototype.constructor = Yonetici;

Burada Object.create ile Personelin prototiplerini kopyalarak Yonetici sınıfımızın prototiplerine atamış olduk. Artık Yonetici sınıfı, Personel sınıfının özelliklerini kullanabilir duruma gelmiştir. 
Dikkat edilmesi gereken diğer bir nokta ise prototype atamasıyla birlikte Yoneticinin constructorı da değişmiş, Personel olmuştur. Prototype atamasından hemen sonra constructor kendi sınıfından atanır.

Şimdi gerçekleştirmiş olduğumuz kalıtımı daha iyi görebilmek için iki farklı nesne oluşturup, KisiBilgileri fonksiyonunu kullanalım.
var personel = new Personel("Eren","Güvercin",25,"Bilgisayar Mühendisi");
var yonetici = new Yonetici("Mete","Deniz",34,"Bilgisayar Mühendisi","Yazılım Müdürü"); 

personel.KisiBilgileri();
yonetici.KisiBilgileri();

Yukarıdaki kod blogunu çalıştırdığımızda, personel ve yonetici nesnelerinin bilgilerini ekranda göreceksiniz.

0 yorum:

Yorum Gönder

Check Page Rank
DMCA.com