Search

Javascript ile Nesne Yönelimli Programlama



0 yorum

Javascript ile Nesne Yönelimli Programlama

Javascript dili, CSharp veya Java gibi gelişmiş bir Nesne Yönelimli Programlama(OOP) desteğine sahip olmasa da esnek yapılı bir OOP dilidir. Bu makalemde javascript'i nesne yönelimli bir şekilde class yapılarıyla nasıl kullanacağız bundan bahsedeceğim.
Javascript herhangi bir class anahtar sözcüğüne(keyword) bile sahip değil, öyle ki bu dil üzerinde class yapıları function anahtar sözcüğü kullanılarak gerçekleştirilir. Function anahtar sözcüğü ile hem sınıf tanımlanır hem de metod tanımlamaları yapılır.

Basit bir sınıf oluşturalım. Sınıfımın adı Personel olsun.
function Personel(pAdi, pSoyad, pYas, pMeslek)
{
    this.Adi = pAdi;
    this.Soyad = pSoyad;
    this.Yas = pYas;
    this.Meslek= pMeslek;
}

Burada parametre değişkenlerinin önüne p harfini, parametre olduğunu belirtmek için kullandım. this anahtar sözcüğü ile Personel sınıfımıza işaret ediyoruz. Bu kod blogu ile personel sınıfımızı tanımlamış olduk.
Şimdi oluşturmuş olduğumuz sınıf üzerinden bir nesne oluşturalım.
  
   var personel = new Personel("Eren","Güvercin",25,"Bilgisayar Mühendisi");
   //Personel sınıfına bizden beklediği parametreleri veriyoruz ve nesnemizi oluşturmuş oluyoruz.

Şimdi oluşturmuş olduğumuz personel isimli nesnemizin içindeki ifadelere erişelim ve console ekranında yazdıralım.
 console.log("Adı: " + personel.Adi);
 console.log("Soyadı: " + personel.Soyad);
 console.log("Yaş: " + personel.Yas);
 console.log("Meslek: " + personel.Meslek);

Nesne adından sonra nokta koyularak nesnenin üzerinde tanımlı olan değişkenlere eriştik.

Prototype Kullanımı

Javascript dilinde nesne yönelim kullanımında sıklıkla kullanılan anahtar kelimelerin biriside prototype anahtar kelimesidir. Prototype belleği verimli kullanma açısından bize yardımcı olur.
Prototypler sınıf için bir özelliktir denilebilir. Prototype fonksiyon yada değişken olabilir ve sınıf parantezlerinin dışına yazılır. Sınıfın dışında sınıf için tanımlandığı için, bu sınıftan üretilen her nesne için tekrar tekrar oluşturulmaz.
Örnek bir prototype kullanımı yapalım. PersonelBilgileri isminde bir fonksiyon tanımlayalım ve bu fonksiyon personelin tüm bilgilerini ekranda göstersin.
 
  Personel.prototype.PersonelBilgileri = function()
  {
    console.log(
      "Adı: " + this.Adi + "\n" +  
      "Soyadı: " + this.Soyad + "\n" + 
      "Yaş: " + this.Yas + "\n" +
      "Meslek: " + this.Meslek  
    );
  }
  //Fonksiyonumuzu tanımladık şimdi ekranda göstermek için nesnemiz üzerinden çağırıyoruz
  personel.PersonelBilgileri();

Bu fonksiyonu bir de prototype kullanmadan, direk sınıf içerisinde tanımlayalım ve daha sonra prototype kullanmanın avantajından bahsedelim.
  function Personel(pAdi, pSoyad, pYas, pMeslek)
  {
     this.Adi = pAdi;
     this.Soyad = pSoyad;
     this.Yas = pYas;
     this.Meslek= pMeslek;
     this.PersonelBilgileri = function()
     {
         console.log(
           "Adı: " + this.Adi + "\n" +
           "Soyadı: " + this.Soyad + "\n" +
           "Yaş: " + this.Yas + "\n" +
           "Meslek: " + this.Meslek  
      );
    }
}
   personel.PersonelBilgileri();

Bu şekilde kullanarak da aynı sonucu elde edebilirdik. Peki biz neden prototype kullanmalıyız?
Dikkat ederseniz prototype sınıfın dışında tanımlandığından dolayı, ne kadar nesne tanımlanırsa tanımlansın, sadece bellekte bir defa tanımlanacaktır. Bu durum bize nesnelerin sıklıkla oluşturulduğu bir senaryoda büyük bir performans kazancı sağlayacaktır.

0 yorum:

Yorum Gönder

Check Page Rank
DMCA.com