Meydan okuma 1: Sınıflar
- TypeScript kursu
- Orta seviye
- Ders 86/89
- 6 dk
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
// Banka sinifi tanimla
// bakiye alani gizli olsun
// bakiye icin erisimci yaz
// para yatirma metodu ekle
// sonucu yazdirÖrnek çözüm
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
// 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
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
class Ust {
____ _gizli: string;
constructor(g: string) { this._gizli = g; }
}
class Alt extends Ust {
goster() { return this._gizli; }
}
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 |