TypeScript ile OOP: Class, Inheritance ve Access Modifiers

TypeScript ile OOP: Class, Inheritance ve Access Modifiers


TypeScript, JavaScript’in tip güvenli bir superset’i olarak, nesne yönelimli programlama (OOP) kavramlarını sağlayarak geliştiricilere daha yapılandırılmış ve hataya dayanıklı kod yazma imkanı sunar. OOP’nin temel bileşenlerinden biri olan sınıflar, nesne tabanlı mimarileri daha kolay kurmamıza yardımcı olur. Bu makalede, TypeScript kullanarak sınıfların nasıl oluşturulacağını, kalıtımın nasıl kullanılacağını ve erişim belirleyicilerinin rolünü inceleyeceğiz.

Sınıflar (Classes)

TypeScript’te sınıflar, bir nesnenin özelliklerini ve davranışlarını bir araya getiren bir yapıdır. Sınıf tanımı ile nesneler (instance) oluşturulabilir. Aşağıda basit bir sınıf tanımının örneğini bulabilirsiniz:

class Araba {
    marka: string;
    model: string;

    constructor(marka: string, model: string) {
        this.marka = marka;
        this.model = model;
    }

    bilgiVer(): void {
        console.log(`Araba Markası: ${this.marka}, Model: ${this.model}`);
    }
}

const araba1 = new Araba("Toyota", "Corolla");
araba1.bilgiVer(); // Araba Markası: Toyota, Model: Corolla

Kalıtım (Inheritance)

Kalıtım, bir sınıfın (alt sınıf) başka bir sınıftan (üst sınıf) özellik ve metodları devralmasına olanak tanır. Bu, kodun yeniden kullanılabilirliğini artırır. Aşağıda, bir araç sınıfından kalıtım alan bir elektrikli araç sınıfı örneğine göz atabilirsiniz:

class ElektrikliAraba extends Araba {
    bataryaKapasitesi: number;

    constructor(marka: string, model: string, bataryaKapasitesi: number) {
        super(marka, model);
        this.bataryaKapasitesi = bataryaKapasitesi;
    }

    bilgiVer(): void {
        super.bilgiVer();
        console.log(`Batarya Kapasitesi: ${this.bataryaKapasitesi} kWh`);
    }
}

const araba2 = new ElektrikliAraba("Tesla", "Model S", 100);
araba2.bilgiVer(); // Araba Markası: Tesla, Model: Model S, Batarya Kapasitesi: 100 kWh

Erişim Belirleyicileri (Access Modifiers)

TypeScript’te erişim belirleyicileri, sınıf üyelerinin (özellikler ve metodlar) erişilebilirliğini kontrol eder. Başlıca üç erişim belirleyicisi vardır: public, private ve protected. public erişim belirleyicisi, sınıfın her yerinden erişim sağlar, private yalnızca sınıf içinde erişim sağlar, protected ise sınıf içinde ve alt sınıflarda erişim sağlar.

class Kisi {
    private ad: string;
    protected yas: number;
    public meslek: string;

    constructor(ad: string, yas: number, meslek: string) {
        this.ad = ad;
        this.yas = yas;
        this.meslek = meslek;
    }

    public bilgileriGoster(): void {
        console.log(`Ad: ${this.ad}, Yaş: ${this.yas}, Meslek: ${this.meslek}`);
    }
}

const kisi1 = new Kisi("Ahmet", 30, "Mühendis");
kisi1.bilgileriGoster(); // Ad: Ahmet, Yaş: 30, Meslek: Mühendis

Sonuç olarak, TypeScript ile nesne yönelimli programlama (OOP) kavramları, yazılım geliştirmede büyük bir esneklik ve yapı sağlar. Sınıflar, kalıtım ve erişim belirleyicileri gibi özellikler sayesinde daha yeniden kullanılabilir ve bakım yapılabilir kodlar yazmak mümkündür. TypeScript, geliştiricilere güçlü bir temel sunarak, karmaşık uygulamaların daha kolay bir şekilde yönetilmesini sağlar. OOP kavramlarının derinlemesine kavranılması, yazılım mühendisliğinde büyük bir avantajdır.