#7 ES6 Class Kavramı

Nesneye dayalı programlama dillerinden de aşina olduğumuz class kavramı artık Ecmascript6 ile birlikte javacript tarafında daha kolay ve okunaklı bir yapı sunuyor. ES6 öncesi standartlarda bir nesne üretmek istediğimiz zaman constructor fonksiyonları oluşturuyorduk. Bu oluşturduğumuz objelerden kalıtım yolu ile yeni objeler oluşturmak istediğimiz zaman ise prototype metotlarından yararlanıyorduk. ES6 class kavramı bizlere OOP presiplerini daha verimli ve kolay bir şekilde kullanma olanağı sunuyor.

ES6 class kavramına geçmeden, önceki standartlarda yeni bir obje üretmek için neler yapıyoduk inceleyelim:

1
2
3
4
5
6
7
8
9
10
11
// Yapıcı metot fonksiyonumuzu tanımlayarak Student ismini verdiğimiz değişkene atıyoruz.
// Değişkene atamadan fonksiyona isim vererek de tanımlayabiliriz. function Student(name,surname,scholl)... gibi.
var Student = function (name,surname,scholl) {
this.name = name;
this.surname = surname;
this.scholl = scholl;
};

var ogrenci1 = new Student("Güner","Bilgili","YTU");
console.log(ogrenci1)
//Console: Student { name: 'Güner', surname: 'Bilgili', scholl: 'YTU' }

Burada yapıcı metodumuzun içerisine istediğimiz amaçla bir metot oluşturabiliriz. Fakat ürettiğimiz her bir örnekte bu fonksiyon da oluşturulacağından bellek kullanımı konusunda pek mantıklı bir seçim olmayacaktır. Bunun yerine oluşturduğumuz Student objesinin prototype özelliğine ulaşarak, oluşturacağımız metodu burada tanımlayabiliriz. Bunun amacı Student objesinden üretilen her bir örneğin, sadece gerekli olduğu zamanlarda bu metoda erişerek bellekte gereksiz metot tanımının önüne geçmektir.
1
2
3
4
5
6
7
Student.prototype.bilgileriYazdir = function () {
console.log("Adı: " + this.name + " Soyadı: " + this.surname + " Okulu: " + this.scholl);
};

const ogrenci1 = new Student("Güner","Bilgili","YTU");
ogrenci1.bilgileriYazdir();
//Console: Adı: Güner Soyadı: Bilgili Okulu: YTU

Şimdi ES6’ın bize sunduğu Class kavramını inceleyelim:

Sınıf tanımlamaları “class” anahtar kelimesi ile tanımlanır. Class bir isimle tanımlanacağı gibi isimsiz şekilde tanımlanıp bir değişkene de atanabilir.

1
2
3
4
5
6
7
8
const Personel = class  {
...
}


class Personel {
...
}

Sınıfımızın içerisine yazdığımız constructor, ilgili sınıf çağrıldığı an çalışır ve gönderdiğimiz gerekli parametrelerin değişkenlere aktarılmasını sağlar.
1
2
3
4
5
6
const Personel = class  {
constructor(name,personID){
this.name = name;
this.personID = personID;
}
};

Metot tanımlamalarımızı ilgili sınıf içerisinde tanımlarız.

1
2
3
4
5
6
7
8
9
const Personel = class  {
constructor(name,personID){
this.name = name;
this.personID = personID;
}
personelAktifEt(){
console.log("Personel Aktif Edildi.");
}
};

Şimdi de bir önceki örneğimizi ES6 Class kavramı ile yeniden yazalım:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const Student = class {
constructor(name,surname,scholl){
this.name = name;
this.surname = surname;
this.scholl = scholl;
}
bilgileriYazdir(){
console.log("Adı: " + this.name + " Soyadı: " + this.surname + " Okulu: " + this.scholl);
}
}

const ogr2 = new Student("Güner","Bilgili","YTU");
console.log(ogr2);
ogr2.bilgileriYazdir();
//Console: Adı: Güner Soyadı: Bilgili Okulu: YTU

#8 ES6 Static Metot ve Kalıtım (Subclass) Kavramları Android Programlama: Resource Kullanımı

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×