JavaScript’te Sınıflar ve Objeler

Yükleniyor

OOP – kısa adıyla Object Oriented Programming, yani Türkçe mealiyle Nesne Yönelimli Programlama, günümüz web uygulamaları için de olmazsa olmaz bir önem taşıyor. JavaScript’te de birçok yazılım dilinde olduğu gibi Sınıf (class)’lar mevcut. Hadi bunların kullanımından bahsedelim.

JavaScript’te sınıfların standart fonksiyonlardan aslında pek de farkı yok. Tıpkı fonksiyonlar gibi sınıflar da Sakın-Kendini-Tekrarlama (Don’t-Repeat-Yourself: DRY) düşüncesine katkıda bulunuyor ve daha az kod yazarak daha fazla işlem yapabilmemize olanak tanıyor.

Sınıf ve Obje Nedir? Ne İşe Yarar?

Sınıfları birer canlı türü olarak düşünebilirsiniz. Örneğin “Bitkiler” bir canlı türüdür ve her bitkinin ortak olarak sahip olduğu özellikler vardır. Bitkiler’in içinde “çiçekler” de bir türdür ve çiçekler hem tüm bitkilerin sahip olduğu özelliklere sahiptir, hem de çiçeklere mahsus özelliklere sahiptir. Çiçekler’in içerisinde “papatyalar” da bir türdür ve hem bitkilerin, hem de çiçeklerin kendine has özelliklerinin yanında papatyalara has özelliklere de sahiptir.

Objeleri ise tekil varlıklar olarak düşünebiliriz. Sınıf tanımındaki papatyalar türüne ait tek bir papatya, bir objedir. Ve bu obje papatyalar sınıfına aittir. Bir sınıftan yüzlerce obje oluşturulabilir ve her obje, ait olduğu sınıfın özelliklerine sahip olur. Bu durum da kodu yazan kişinin daha az emekle daha fazla iş çıkarmasını sağlar.

JavaScript Sınıf Kullanımı

1.1 Klasik Yöntem:

SinifAdi = function(parametre) {
this.ozelik1 = parametre;
this.ozellik2 = deger;
}

1.2 Prototype Yöntemi:

SinifAdi = function(parametre) {
this.ozellik1 = parametre;
}
SinifAdi.prototype.ozellik2 = deger;

JavaScript Obje Kullanımı

var objeAdi = new SinifAdi(parametre);

JavaScript Sınıf Kullanım Örneği

Insan = function(isim, yas, gorev) {
this.yasiyor = true;
this.isim = isim;
this.yas = yas;
this.gorev = gorev;
document.write(this.isim+', '+this.yas+' yaşında ve '+this.gorev+' olarak çalışıyor.');
}
var mht = new Insan('Muhammet Arslantaş', 21, 'boş gezenin boş kalfası');
var mark = new Insan('Mark Zuckerberg', 26, 'Facebook\'ta CEO');

Bu kodların çıktısı şu şekilde olacaktır:

Muhammet Arslantaş, 21 yaşında ve boş gezenin boş kalfası olarak çalışıyor.
Mark Zuckerberg, 26 yaşında ve Facebook’ta CEO olarak çalışıyor.

JavaScript Sınıf Kullanım Örneği 2

Yukarıdaki Bitki – Çiçek – Papatya örneğini kullanarak kompleks bir sınıf sistemi oluşturalım. Alt türlerin üst türlerin özelliklerini alması için prototype‘i kullanacağız.

Bitkiler = function() {
this.yasiyor = true;
this.fotosentez = true;
}

Cicekler = function() {
this.yaprak = true;
}
Cicekler.prototype = new Bitkiler();
Cicekler.prototype.constructor = Cicekler;

Papatyalar = function(yaprakSayisi) {
this.yaprak = yaprakSayisi;
}
Papatyalar.prototype = new Cicekler();
Papatyalar.prototype.constructor = Papatyalar;

/* objeleri oluşturalım */
var bitki1 = new Bitkiler();
var cicek1 = new Cicekler();
var papatya1 = new Papatyalar(12);

/* Prototype kullanımımızı test edelim */
alert(bitki1.yasiyor); // -> true çıktısı.
alert(cicek1.yasiyor); // -> true çıktısı.
alert(papatya1.yasiyor); // -> true çıktısı.

alert(bitki1.yaprak); // -> undefined çıktısı.
alert(cicek1.yaprak); // -> true çıktısı.
alert(papatya1.yaprak); // -> 12 çıktısı verir.

bitki1’in ait olduğu sınıf olan “Bitkiler”de yaprak özelliği tanımlanmadığından, undefined çıktısı aldık. Ancak Çiçekler’de ve Papatyalar’da “yasiyor” özelliği tanımlanmamasına rağmen true çıktısı aldık. Neden mi? Çünkü ikisi de Bitkiler’in bir alt sınıfı. Bitkiler’in sahip olduğu tüm özellikleri taşıyorlar.

Son Sözler

Aslında çok detaylı bir açıklama yapmayı planlıyordum ama bu kadar yazabildim. Şu sıralar JavaScript ile bir oyun hazırlama uğraşındayım ve sınıflar bana oldukça fayda sağladı. Projem tamamlandığında buraya linkini koyarım. Kendinize iyi bakın ve Sakın-Kendinizi-Tekrarlamayın. :)

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir