Object Oriented Programming

Ahmet Aslan
4 min readMar 22, 2017

--

Programlama akışında kullanılacak her şeyin, nesne olarak kullanıldığı, ufak modüllere bölündüğü bir kod yönetim şeklidir. En büyük avantajı kod tekrarını ortadan kaldırmasıdır.

Mesela bir kediyi modellediğimizi düşünelim. Kedi bir hayvandır. Hayvanların ortak özellikleri vardır. Her hayvan türüne, ayrı ayrı ortak özellikleri tanımlamak yerine bir seferde hayvanı tanımlayıp ortak özellikleri ekleriz. Daha sonra kedi, köpek vs. hayvan türlerini de hayvan nesnesinden türetiriz.

JAVASCRIPT CLASS

Javascripte diğer programlama dilleri gibi direk class ‘Name’ ile başlayıp class oluşturamıyoruz bu yapıyı function ile kurup içerisini Property’lerini atayıp oluşturduğumuz Variable’lara New anahtar sözcüğü ile instance edip objemizi oluşturuyoruz

Veya

Encapsulation

Verilerin ve işlemlerin gizlenmesine veya bir grup içerisinde toplanmasına encapsulation denir. Encapsulation ile sınıfımız içinde kullandığımız alanların dışarıdan herhangi bir etki ile doğrudan değiştirilmelerini engellemiş oluruz.

Yukarıda oluşturduğumuz Class’daki public değişkenine instance edilen tüm objelerden uğlaşılıp müdahale edilebilir ama private olan değişkene sadece o class içerisinden müdehale edilebilir

INHERITANCE

Birçok nesne tarafından paylaşılacak özelliklerin bir kez tanımlanıp diğer sınıflar tarafından miras alınarak genişletilmesi olayıdır.Türetilen her bir sınıf, türediği sınıfın özelliklerini de devralır. Amaç tüm sınıflarda ortak olan özellikleri tek bir sınıf içerisinde toparlamak.

Görüldüğü üzere Game objesine prototype metodundan faydalanarak start isimli bir metot ve Ad isimli bir değişken tanımladım. Sıra geldi oluşturacağım Ninja objesine

Böylelikle Game de kullandığım gerek metotlara gerek özelliklere erişebileceğim. ninja objemden instance alıp canlı daki Start metodunu çalıştırıyorum

bu şekilde Game objesinde bulunan Start isimli metodum çalışmış oldu. Yine aynı şekilde Ninja üzerinden Game deki ad isimli özelliği ekrana yazdırıyorum

Böylelikle OOP prensiplerinden miras almayı javascript dilinde uygulamış oldum. Dilersem Game objeme constructor tanımlayıp Ninja üzerinden de aynı şekilde ulaşabilirim

Polymorphism

Polymorphism base class daki bir methodun extend edildiği classlar da override edilerek farklı davranması veya farklı sonuç üğretmesi olayıdır.

CONSTRUCTOR

Bir ninja objesi oluşturuyoruz ve bu obje içerisine ninja nın adını alıp bu adı ekrana yansıtmakta.

Oluşturduğmuz objenin constructor metodunun aldığı değerleri aşağıda kullandığımız metotla daha sonra değiştirebiliriz.

Prototype

Javascript Object tipinde bulunan prototype adlı özel bir metod, tüm nesnelerde bulunur. Bu metod sayesinde nesnelere yeni property veya metodlar ekleyebilirsiniz.

Örnek-2 de alan hesaplayıcı metod olan Area metodu Örnek-2 de tipin prototype metoduna tanımlanmıştır.

Bu bize ne fayda sağlamıştır? Örnek-1 de constructor içinde tanımlanan fonksiyon için her Rectangle nesnesi oluşturulduğunda bellekte anonim bir fonksiyon oluşturulacak ve yer tutacak. Ancak Örnek-2 de durum farklı olacaktır. Prototype property’ler static olduklarından her Rectangle nesnesi prototype içine tanımlanan metodları referans olarak görecektir.

Ayrıca Rectange tipine ait değer tutucu (x,y) üyeler ve fonksiyonlar ayrılmış oldu. Bu ayrımı farklı Javascript dosyalarına bile dağıtmak mümkündür.

Prototype kullanımı öncelikli olarak performans artışı sağlamakla birlikte kodun okunabilirliğini de arttırmak açısından faydalı olmaktadır.

--

--