CodeBlanks Logo Icon CodeBlanks

Meydan okuma 1: Sınıflar

Sınıflar ve erişim belirteçlerini birleştiren bir görev çözersin.

Sınıflar meydan okuması

Bu meydan okumada sınıflar, erişim belirteçleri (public, private, protected) ve readonly alanları birleştiren görevler çözeceksin. Bir sınıfın iç durumunu gizli tutarak erişimci metotlarla kontrollü erişim sağlamayı ve abstract sınıflarla miras hiyerarşisi kurmayı öğrendin. Şimdi bu bilgileri birleştirme zamanı.

Uygulama Banka sınıfı yaz

Banka sınıfı tanımla: private _bakiye: number alanı olsun. Constructor baslangic: number alsın ve _bakiye'yi atasın. get bakiye(): number değeri döndürsün. set bakiye(v: number) negatifse 0 yapsın. yatir(m: number): void metodu _bakiye'ye m eklesin. new Banka(100) oluştur, 50 yatır, bakiye'yi yazdır.

Başlangıç kodu

index.ts
// Banka sinifi tanimla
// bakiye alani gizli olsun
// bakiye icin erisimci yaz
// para yatirma metodu ekle
// sonucu yazdir

Örnek çözüm

index.ts
class Banka {
  private _bakiye: number;
  constructor(baslangic: number) { this._bakiye = baslangic; }
  get bakiye(): number { return this._bakiye; }
  set bakiye(v: number) { if (v < 0) this._bakiye = 0; else this._bakiye = v; }
  yatir(m: number): void { this._bakiye += m; }
}
const b = new Banka(100);
b.yatir(50);
console.log(b.bakiye);

Beklenen çıktı

150

Uygulama Sekil hiyerarşisi

abstract class Sekil tanımla: protected renk: string alanı ve constructor renk alsın. abstract alan(): number bildir. goster(): void metodu this.renk'yi console.log ile yazdırsın. Daire sınıfı Sekil'i genişletsin, private yaricap: number alsın, constructor super(renk) çağırsın, alan() 3 * yaricap * yaricap dönsün. new Daire("kirmizi", 2) oluştur ve goster() çağır.

Başlangıç kodu

index.ts
// Sekil adinda abstract sinif
// renk alani korumali olsun
// alan metodu abstract olsun
// goster metodu rengi yazdirsin
// Daire Sekilden turetilsin
// alan metodunu uygula
// goster cagir

Örnek çözüm

index.ts
abstract class Sekil {
  protected renk: string;
  constructor(renk: string) { this.renk = renk; }
  abstract alan(): number;
  goster(): void { console.log(this.renk); }
}
class Daire extends Sekil {
  private yaricap: number;
  constructor(renk: string, yaricap: number) {
    super(renk);
    this.yaricap = yaricap;
  }
  alan(): number { return 3 * this.yaricap * this.yaricap; }
}
const d = new Daire("kirmizi", 2);
d.goster();

Beklenen çıktı

kirmizi

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi erişim belirteci, üyeye yalnızca sınıf içinde ve alt sınıflardan erişime izin verir?

  • private
  • readonly
  • protected Doğru cevap
  • public

Açıklama: protected üyeler yalnızca tanımlandığı sınıf ve o sınıftan türeyen alt sınıflar içinde erişilebilir; dışarıdan erişilemez.

2 Protected erişim belirteci

Soru
class Ust {
  ____ _gizli: string;
  constructor(g: string) { this._gizli = g; }
}
class Alt extends Ust {
  goster() { return this._gizli; }
}
Cevap
class Ust {
  protected _gizli: string;
  constructor(g: string) { this._gizli = g; }
}
class Alt extends Ust {
  goster() { return this._gizli; }
}

Açıklama: Alt sınıfın da erişebilmesi için alan protected olmalıdır; private olsaydı Alt erişemezdi.

3 Erişim belirteçleri

Kavram Anlamı
private Sadece sınıf içinde
protected Sınıf ve alt sınıflar
public Her yerden
readonly Salt okunur

Orta seviye bölümündeki tüm dersler