Bu yazımızda javascript nesne ve nesne yönelimli programlama nedir ve javascript nesne yönelimli programlama nasıl çalıştığına değineceğiz.
Object Oriented Programming (OOP) ingilizce kelimelerinin türkçesi Nesne Yönelimli Programlama dır. Yapılan işlevin nesneler olarak soyutlandığı programlama şeklidir. Bu yapıya olanak veren yazılım dilleri yüksek seviye yazılım dilleri diye tanımlanır. Javascriptte bu dillerdendir.
Yazılım dünyasındaki karmaşıklıkları çözmek üzere çıkmış bir yöntemdir. !960 lı yıllarda çıkmıştır. Bu yapının en önemli özelliklerinden biri birimselliği sahip olmasıdır.
Özellikleri :
- Soyutlama (Abstraction): Nesnenin farklı özelliklerinin ayrı tanımlanması diyebiliriz. Örneğin insanın boy, kilo vb. özellikleri ile davranışlarının farklı tanımlanması gibi…
- Kapsülleme (Encapsulation) : Nesnelerin özelliklerini diğer nesnelerden yada dışarıdan saklanmasını sağlayan bir kavramdır.
- Kalıtım-Miras Alma (Inheritance) : Nesnenin başka bir nesneden oluştuğu durumlara kalıtım denir. Yani nesne türediği nesnenin özelliklerini taşır.
- Çok biçimlilik (Polymorphism) : Nesnelerin belirli bir işi farklı yollar ile yapmasıdır.
- Bütünleme (Aggregation) : Her nesnenin alt nesnelerden oluşan bir yapıya sahip olmasıdır.
Javascript Nesne Yönelimli Programlama Yapmanın Faydaları
Nesne bir kez oluşturulup defalarca kullanılması. Bundan dolayı defalarca kod yazmaktan kurtarması. Bir projede bir nesneyi bir kez oluşturur ve projenin her yerinden çağrılıp kullanırız.
Oluşturulan ve üzerinde çalışılan nesne üzerinde değişiklik yapmanın kolay olması. Çünkü bir yer olduğu için tek bir değişiklik yeterli olması.
Oluşturulan nesnelerin birbirinden bağımsız olduğu için bilgilerin gizliliğinin kolaylığı.
Javascript Nesne Tanımlama ve Çağırma
Nesne tanımlarken iki yöntem vardır. İlk yöntemde nesne tanımlamanın mantığı değişken tanımlarken içeriğini süslü parantez içine alır ve özelliklerine atamalar yapılır. İkinci yöntem ise new terimi ile yapıyoruz.
Nesne{özellik1:deger1, özellik2:deger2, özellik3:deger3, …} şeklinde tanımlanır. Özelliğin değeri string ise tırnak içinde olmalıdır. Tırnak kullanımı kuralları string değişken tanımlama da olduğu gibidir.
Değişken tanımlama konusunu öğrenmek isterseniz dersimize gidebilirsiniz..
Nesne çağırırken nesneyi tanımladığımız adı ile çağırır ve özelliklerine ulaşmak için nesneadı.özellikler şeklinde ulaşılabilir.
Örnek 1 : Javascript Nesne Tanımlama Örneği ilk yöntemle:
var aracBilgi = { marka : "toyota",
uretimYıl : 2015,
serisi : "corolla",
vites :"manuel" };
Örnek 2 : Javascript Nesne Tanımlama Örneği ikinci yöntemle(new terimi ile):
var aracBilgi = new Object();
aracBilgi.marka = "toyota";
aracBilgi.üretimYil = 2015;
aracBilgi.serisi = "corolla";
aracBilgi.vites = "manuel";
Örnek 3:Javascript Nesne Tanımlama Örneği ikinci yöntemle(new terimi ile):
var aracBilgi = new Object();
aracBilgi["marka"] = "toyota";
aracBilgi["üretimYil"] = 2015;
aracBilgi["serisi"] = "corolla";
aracBilgi["vites"] = "manuel";
Örnek 4: Javascript Nesne Çağırma Örneği. Yukarıdaki tanımladığımız nesne üzerinden yapalım.
var aracMarka = aracBilgi.marka;
Bir Nesneyi Önceden Tanımlama ve İçeriği Sonra Atama
Nesne ismini yazıp ve değer girmeden süslü parantez açıp kapatarak nesneyi tanımlamış oluruz. Değerlerini sonradan ekleyebiliriz.
Örnek:
var arac = {};
arac.marka = "toyota";
arac.uretimYil = 2015;
arac. serisi = "corolla";
document.write( arac.marka );
Daha Önce İçeriği ile Tanımladığımız Nesneye Özellik Ekleme
“NesneAdı.YeniÖzellik = deger ” şeklinde yazdıktan sonra eşittir atama operatörü ile yeni özellik ve değerini atayabiliriz.
Örnek :
var aracBilgi = { marka : "toyota",
uretimYil : 2015,
serisi : "corolla",
vites : "manuel" };
aracBilgi.renk = "mavi";// özellik ekleme
Fonksiyon Şeklinde Nesne Tanımlama ve Çağırma
Nesne tanımlarken değişkene direk new ile fonksiyona bağlarız ve fonksiyon içerisinde nesne içeriğini tanımlarız. Bu şekilde tanımlanan fonksiyonlara yapıcı fonksiyonlar (constructor) denir.
Örnek ile hem oluşturalım hemde çağıralım :
function myFunc(){
this.marka = "suzuki",
this.uretimYil = 2016,
this.serisi = "swift",
this.vites = "otomatik"
}
var aracBilgi = new myFunc();
var arac = aracBilgi.marka + " " + aracBilgi.serisi;
document.write( arac );
Bir Nesneyi Başka Nesneye Aktarma İşlemini Örnek ile yapalım:
var aracBilgi = { marka : "toyota",
uretimYil : 2015,
serisi : "corolla",
vites : "manuel"}
var arac = aracBilgi;
document.write( arac.marka );
Nesnelerde Dizi Mantığı ile Özelliklerine Ulaşmak
Dizilerde elemanlarına dizi ismi ve köşeli parantezler içine index değerini yazarak ulaştığımız gibi nesnelerinde özellik isimlerini yazıp değerlerine ulaşabiliriz.. Ama çok tercih edilen bir yöntem değildir.
Örnek:
var aracBilgi = { marka : "toyota",
uretimYil : 2015,
serisi : "corolla",
vites : "manuel"}
var aracMarka = aracBilgi["marka"];
document.write( aracMarka );
Nesnelerin Özelliğinin Değerini Değiştirme
Nesnenin istediğimiz özelliğine ulaşıp değerini değiştirebiliriz.
Örnek:
var aracBilgi = { marka : "toyota",
uretimYil : 2015,
serisi : "corolla",
vites : "manuel" };
document.write( aracBilgi.vites + "<br/>");
aracBilgi.vites = "otomatik";
document.write( aracBilgi.vites );
Nesnelerin İçinde Fonksiyon Tanımlama ve Çağırma
Nesnelerin içerisinde fonksiyon tanımlayıp işlem yaptırabiliriz. Fonksiyonu çağırırken dikkat edilmesi gereken husus parantez açıp kapatmayı unutmamak. Diğer özellikleri çağırırken kullanmadığımız için fonksiyonda da unutulabilir. Unutursak hata verir.
Örnek :
var kisi = {
adi : "Tasarım",
soyadi : "Yazılım",
dgmTrh : 2019,
tamAdi : function () {
return kisi.adi + " " + kisi.soyadi;
}
}
document.write(kisi.tamAdi());
Nesne içindeki fonksiyonlarda nesnenin kendisine nesne adı ile ulaşabildiğimiz gibi this değeri ile de ulaşabiliriz.
Örnek :
var kisi = {
adi : "Tasarım",
soyadi : "Yazılım",
dgmTrh : 2019,
tamAdi : function () {
return this.adi + " " + this.soyadi;
}
}
document.write(kisi.tamAdi());
İçiçe Nesne Tanımlama ve Çağırma
Bir nesnenin özelliği detayları varsa onu yeni bir nesne gibi nesnenin içinde tanımlarız. Bu durumda da içiçe nesne oluşmuş olur. İçteki nesneye ulaşak için ilk nesnenin adı nokta içteki nesne yazarak ulaşılır. Örnekle yapalım.
Örnek:
var kisi = {
adi : "Mahir",
soyadi : "Mutlu",
dgmTrh : 2015,
vucutBilgisi:{
boy : 175,
kilo : 75,
gozRenk : "kahve" }
}
document.write(kisi.vucutBilgisi.gozRenk);
Nesnelerde Object.create Yöntemi ile Nesne Oluşturma
Daha önce oluşturduğumuz bir nesne üzerinden create yöntemi kullanarak oluştururuz. Bir örnek ile yapalım.
Örnek :
const person = {
name : "tasarım",
surname : "yazılım",
age : 2,
fullname : function () {
return this.name + " " + this.surname;
}
}
const person1 = Object.create(person);
person1.name = "kodlama";
person1.surname = "yazılım";
person1.age = 3;
console.log(person1);
console.log(person1.fullname());
Javascript Nesnelerde for in Döngüsünün Kullanımı
Nesnelerde for in döngüsünü kullanırken nesne içindeki her özellik sırayla döndürülür. Bir örnekte görelim:
var aracBilgi = { marka : "toyota",
uretimYil : 2015,
serisi : "corolla",
vites : "manuel" };
for (const item in aracBilgi) {
document.write( item + " : " + aracBilgi[item] + "<br/>" )
}
Javascript Nesneler de Kullanılan Metodlar
Javascript Nesnelerde delete() Metodu Kullanımı
Nesnelerde delete() Metodu, bir nesnenin bir özelliğini silmek için kullanılır. Örnek :
var kisi = {
adi : "Mahir",
soyadi : "Mutlu",
dgmTrh : 2015 };
delete kisi.dgmTrh;
document.write(kisi.dgmTrh);
Yukarıdaki örnekte dgmTrh özelliğini sildiğimiz için tanımlanmamış değer (undefined) döndürür.
Nesnelerde Prototype Özelliğinin Kullanımı
Nesnelerde tanımlama yaparken fonksiyon ile tanımlama yapıyorsak bu fonksiyonlara yapıcı fonksiyonlar diyoruz. Aşagıdaki örneğimizdede degerler fonksiyonu bu duruma örnektir. degerler fonsiyonunun prototype na inerek nesnemize ulaşıp işlemler yapabiliriz. Aşagıdaki örnekte olduğu gibi…
Örnek :
function degerler(sayi1, sayi2, sayi3) {
this.say1 = sayi1;
this.say2 = sayi2;
this.say3 = sayi3;
}
degerler.prototype.topla = function () {
return this.say1 + this.say2 + this.say3;
}
var sayilar = new degerler(12,23,34);
document.write(sayilar.topla());
Javascript Nesnelerde hasOwnProperty() Metodu Kullanımı
hasOwnProperty() Metodu, kendisine değer olarak verilen değeri nesnenin özelliklerinde varsa true yoksa false sonucunu döndürür.
Örnek :
var aracBilgi = { marka : "toyota",
uretimYil : 2015,
serisi : "corolla",
vites : "manuel" };
document.write(aracBilgi.hasOwnProperty("marka") + "<br/>" );
document.write(aracBilgi.hasOwnProperty("renk"));
Javascript Nesnelerde propertyIsEnumerable() Metodu Kullanımı
propertyIsEnumerable() Metodu, kendisine değer olarak verilen değeri nesnenin özelliklerinde varsa ve numaralandırabilir ise true yoksa false sonucunu döndürür.
Örnek :
var aracBilgi = { marka : "toyota",
uretimYil : 2015,
serisi : "corolla",
vites : "manuel" };
document.write(aracBilgi.propertyIsEnumerable("marka") + "<br/>" );
document.write(aracBilgi.propertyIsEnumerable("renk"));
Javascript Nesnelerde isPrototypeOf() Metodu Kullanımı
isPrototypeOf() Metodu, nesnenin prototype yapısında yapıcı metot (constructor) varsa true yoksa false değeri döndürür. Yapıcı metotlar nesne tanımlanırken nesne içeriğinin fonksiyon içerisinde tanımlanması ile oluşturulur.
Örnek :
function myFunc() {
this.nesneOzellik1 = "deger1",
this.nesneOzellik2 = "deger2" }
var nesne = new myFunc();
document.write( myFunc.prototype.isPrototypeOf(nesne));
Javascript Nesnelerde instanceof Operatörü Kullanımı
instanceof, nesnenin yapıcı metodu var mı diye kontrol eder varsa true sonucunu döndürür.
Örnek :
function myFunc() {
this.nesneOzellik1 = "deger1",
this.nesneOzellik2 = "deger2" }
var nesne = new myFunc();
document.write( nesne instanceof myFunc);
Javascript Nesnelerde constructor Kullanımı
Nesnenin yapıcı metoduna (constructor ) erişmek için kullanılır.
Örnek 1 : Aşağıdaki gibi yaptığımızda constructor içeriğini döndürür.
function myFunc() {
this.nesneOzellik1 = "deger1",
this.nesneOzellik2 = "deger2" }
var nesne = new myFunc();
document.write( nesne.constructor );
Örnek 2 : Aşağıdaki gibi yaptıgımızda ise dogru ise true döndürür. Bu şekilde yaparak koşul ifadelerinde kullanılabilir.
function myFunc() {
this.nesneOzellik1 = "deger1",
this.nesneOzellik2 = "deger2" }
var nesne = new myFunc();
document.write( nesne.constructor == myFunc );
Başka bir yazımızda görüşmek dileğiyle…