CodeBlanks Logo Icon CodeBlanks

Özet - Erişim belirteçleri

Belirteçlerle kapsüllenmiş bir kullanıcı sınıfı yazarsın.

Özet - Erişim belirteçleri

Bir User sınıfı, erişim belirteçlerini birleştirir: public name herkese açık, private password tamamen gizli, protected role alt sınıflara açık. Her alan kendi belirteciyle tanımlanır ve constructor'da this ile atanır.

class User {
  public name: string;
  private password: string;
  protected role: string;
  constructor(name: string, password: string, role: string) {
    this.name = name;
    this.password = password;
    this.role = role;
  }
  checkPassword(pw: string): boolean {
    return this.password === pw;
  }
}
class Admin extends User {
  getRole(): string {
    return this.role;
  }
}

Uygulama Kapsüllenmiş User sınıfı yaz

User sınıfını tanımla: public name: string ve private password: string alanlarını açıkça bildir. constructor ile name ve password parametrelerini al ve this ile ata. checkPassword(pw: string): boolean metodu yaz: this.password === pw döndür. Yeni bir User("Ada", "s3cr3t") oluştur, checkPassword("s3cr3t") ve checkPassword("wrong") çağır.

Başlangıç kodu

index.ts
// User sınıfı tanımla (public name, private password)
// constructor ile her ikisini al, this ile ata
// checkPassword(pw: string): boolean metodu yaz
// password === pw ise true döndür
// yeni User oluştur, checkPassword çağır

Örnek çözüm

index.ts
class User {
  public name: string;
  private password: string;
  constructor(name: string, password: string) {
    this.name = name;
    this.password = password;
  }
  checkPassword(pw: string): boolean {
    return this.password === pw;
  }
}

const u = new User("Ada", "s3cr3t");
console.log(u.checkPassword("s3cr3t"));
console.log(u.checkPassword("wrong"));

Beklenen çıktı

true
false

Soru ve cevaplar

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

1 Bir User sınıfında password alanı hangi belirteçle tanımlanmalıdır?

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

Açıklama: Şifre gibi hassas bilgiler private olmalıdır; yalnızca sınıf içinden erişilir. public herkese açık olurdu, protected alt sınıflara da açık olurdu; ikisi de güvensiz.

2 Şifre kontrolünü tamamla

Soru
checkPassword(pw: string): boolean {
    return this.password ____ pw;
  }
Cevap
checkPassword(pw: string): boolean {
    return this.password === pw;
  }

Açıklama: Şifre karşılaştırması katı eşitlik ile yapılır: this.password === pw. == tür zorlama yapar (riskli), = atama yapar (boolean döndürmez), !== ise ters sonucu verir.

3 Kapsüllenmiş User parçaları

Kavram Anlamı
public name Herkese açık isim
private password Gizli şifre
protected role Alt sınıfa açık rol
extends User Alt sınıf tanımı

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