Softmush.com, teknoloji, yazılım ve dijital dünyaya dair derinlemesine içeriklerle bilgiye ulaşmanın güvenilir adresi. - Softmush.com
“ Söz konusu olan vatansa, gerisi teferruat. ”
Mustafa K. Atatürk
JavaScript Sınıfları (Classes) Kullanım Rehberi

JavaScript Sınıfları (Classes) Kullanım Rehberi

JavaScript, ES6 (ECMAScript 2015) ile birlikte nesne yönelimli programlama (OOP) ilkelerini daha net ve tanıdık bir sözdizimi ile uygulamak için sınıfları (classes) tanıttı. Sınıflar, prototip tabanlı kalıtım üzerine inşa edilmiş sentaktik bir şeker (syntactic sugar) olup, nesne oluşturmak ve kalıtımı yönetmek için daha anlaşılır bir yapı sunar. Bu makale, JavaScript sınıflarının temel kullanımını, sözdizimini ve pratik uygulamalarını detaylı bir şekilde ele alacaktır.

Temel Sözdizimi



class SınıfAdı {
  constructor(parametre1, parametre2) {
    this.özellik1 = parametre1;
    this.özellik2 = parametre2;
  }

  metotAdı(argüman) {
    // Metot içeriği
    return this.özellik1 + argüman;
  }

  get getterAdı() {
    return this.özellik1;
  }

  set setterAdı(yeniDeğer) {
    this.özellik1 = yeniDeğer;
  }

  static statikMetot() {
    return "Bu bir statik metottur.";
  }
}

Detaylı Açıklama


JavaScript sınıfları, bir nesnenin nasıl oluşturulacağını tanımlayan bir şablon görevi görür. Temel bileşenleri şunlardır:


  • class Anahtar Kelimesi: Bir sınıf tanımlamak için kullanılır. Sınıf adı genellikle büyük harfle başlar (PascalCase).

  • constructor() Metodu: Bir sınıfın özel bir metodudur. Sınıftan yeni bir nesne (instance) oluşturulduğunda otomatik olarak çağrılır. Nesnenin başlangıç durumunu (özelliklerini) ayarlamak için kullanılır. Eğer bir sınıf için açıkça bir constructor tanımlanmazsa, JavaScript varsayılan, boş bir constructor ekler.

  • Özellikler (Properties): Sınıf örneklerinin sahip olduğu verilerdir. constructor içinde this.özellikAdı = değer; şeklinde tanımlanır ve her örnek için benzersiz olabilir.

  • Metotlar (Methods): Sınıf örneklerinin gerçekleştirebileceği eylemleri tanımlayan fonksiyonlardır. metotAdı(argümanlar) { ... } şeklinde tanımlanır ve sınıfın prototipine eklenir.

  • Getter ve Setter Metotları: Özelliklerin değerlerine kontrollü erişim sağlamak için kullanılırlar. Bir özelliğin değerini okumak için get, değiştirmek için set anahtar kelimeleriyle tanımlanırlar. Bunlar aslında birer fonksiyon olmasına rağmen, özellik gibi erişilirler.

  • Statik Metotlar (Static Methods): Bir sınıfın kendisine ait olan, ancak sınıfın örneklerine ait olmayan metotlardır. Bu metotlar, sınıfın adıyla doğrudan çağrılır ve genellikle sınıfın örneklerine özgü olmayan yardımcı fonksiyonlar veya fabrika metotları için kullanılır. static anahtar kelimesiyle tanımlanır.

Pratik Kullanım Örnekleri


Örnek 1: Temel Sınıf Tanımlama ve Kullanımı


Aşağıdaki örnek, bir Kişi sınıfının nasıl tanımlandığını ve bu sınıftan nasıl nesneler oluşturulduğunu göstermektedir. Ayrıca sınıfın metotlarının nasıl çağrıldığını da içerir.


class Kişi {
  constructor(ad, soyad, yaş) {
    this.ad = ad;
    this.soyad = soyad;
    this.yaş = yaş;
  }

  tamAdGetir() {
    return `${this.ad} ${this.soyad}`;
  }

  yaşınıArtır() {
    this.yaş++;
    console.log(`${this.tamAdGetir()} şimdi ${this.yaş} yaşında.`);
  }
}

// Sınıftan yeni bir nesne oluşturma
const kişi1 = new Kişi("Ali", "Can", 30);
console.log(kişi1.tamAdGetir()); // Çıktı: Ali Can

const kişi2 = new Kişi("Ayşe", "Yılmaz", 25);
kişi2.yaşınıArtır(); // Çıktı: Ayşe Yılmaz şimdi 26 yaşında.

Örnek 2: Kalıtım (Inheritance) Kullanımı


Sınıflar, extends anahtar kelimesiyle başka bir sınıftan kalıtım alabilir. Bu, alt sınıfın üst sınıfın özelliklerini ve metotlarını miras almasını sağlar.


class Çalışan extends Kişi {
  constructor(ad, soyad, yaş, pozisyon) {
    super(ad, soyad, yaş); // Üst sınıfın constructor'ını çağırır
    this.pozisyon = pozisyon;
  }

  çalışmaDurumu() {
    return `${this.tamAdGetir()} ${this.pozisyon} pozisyonunda çalışmaktadır.`;
  }
}

const çalışan1 = new Çalışan("Deniz", "Ak", 35, "Yazılımcı");
console.log(çalışan1.tamAdGetir()); // Çıktı: Deniz Ak (Kişi sınıfından miras alındı)
console.log(çalışan1.çalışmaDurumu()); // Çıktı: Deniz Ak Yazılımcı pozisyonunda çalışmaktadır.

çalışan1.yaşınıArtır(); // Çıktı: Deniz Ak şimdi 36 yaşında. (Kişi sınıfından miras alındı)

Örnek 3: Getter, Setter ve Statik Metot Kullanımı


Bu örnek, bir sınıf içinde getter, setter ve statik metotların nasıl tanımlanıp kullanılacağını göstermektedir.


class Ayarlar {
  constructor(tema) {
    this._tema = tema; // Özel bir özellik gibi davranır
  }

  get tema() {
    return this._tema;
  }

  set tema(yeniTema) {
    if (yeniTema === "açık" || yeniTema === "koyu") {
      this._tema = yeniTema;
      console.log(`Tema ${yeniTema} olarak ayarlandı.`);
    } else {
      console.warn("Geçersiz tema değeri. 'açık' veya 'koyu' kullanın.");
    }
  }

  static uygulamaBilgisi() {
    return "Uygulama Adı: MyWebApp v1.0";
  }
}

const kullanıcıAyarları = new Ayarlar("koyu");
console.log(kullanıcıAyarları.tema); // Çıktı: koyu (getter çağrıldı)

kullanıcıAyarları.tema = "açık"; // setter çağrıldı
console.log(kullanıcıAyarları.tema); // Çıktı: açık

kullanıcıAyarları.tema = "mavi"; // Geçersiz tema uyarısı

console.log(Ayarlar.uygulamaBilgisi()); // Çıktı: Uygulama Adı: MyWebApp v1.0 (statik metot çağrıldı)

Önemli Notlar ve İpuçları


  • Hoisting Yok: Fonksiyon bildirimlerinin aksine, JavaScript sınıfları "hoist" edilmezler. Yani, bir sınıfı tanımlamadan önce kullanamazsınız. Önce sınıfı tanımlamalı, sonra örneğini oluşturmalısınız.

  • Tek Sorumluluk Prensibi: Her sınıfın tek bir sorumluluğu olmaya özen gösterin. Bu, kodunuzu daha okunabilir, sürdürülebilir ve test edilebilir hale getirir.

  • this Anahtar Kelimesi: Sınıf metotları içinde this anahtar kelimesi, o metodu çağıran sınıf örneğine (instance) referans verir. this'in bağlamı (context) fonksiyonun nasıl çağrıldığına bağlı olarak değişebilir, bu nedenle özellikle callback fonksiyonlarında dikkatli olun (gerekirse arrow fonksiyonları veya .bind() kullanın).

  • super() Kullanımı: Alt sınıfların constructor metodunda, üst sınıfın constructor metodunu çağırmak için super() kullanılmalıdır. super() çağrılmadan önce this anahtar kelimesine erişilemez.

  • Sınıflar Fonksiyondur: JavaScript sınıfları aslında özel bir tür fonksiyondur. typeof SınıfAdı ifadesi "function" döndürür. Bu, JavaScript'in prototip tabanlı doğasının bir yansımasıdır.

Yayınlanma Tarihi: 2025-10-21 12:00:52
CSS Z-index Kullanımı: Öğelerin Yığılma Bağlamını Yönetme
Önceki Haber

CSS Z-index Kullanımı: Öğelerin Yığılma Bağlamını Yönetme

CSS Makaleleri
Sonraki Haber

SQL Dilinde BETWEEN Operatörü: Aralık Bazlı Veri Sorgulama

SQL Makaleleri
SQL Dilinde BETWEEN Operatörü: Aralık Bazlı Veri Sorgulama

Yorum yap

Yorum yapabilmek için  giriş  yapmalısınız.

Yorumlar

Bu yazı hakkında henüz yorum yapılmamıştır.
× JavaScript Dilinde JS Dates Kullanımı
Bu ilginizi çekebilir

JavaScript Dilinde JS Dates Kullanımı

JavaScript'te tarih ve saat verilerini yönetmek, görüntülemek ve üzerinde işlem yapmak...