Doğrulama ve Yan Etkiler
Coddy'nin JavaScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 45 / 56.
Getter ve setter'lar, özellikleri sadece okuyup yazmaktan daha fazlasını yapabilir; girdileri doğrulayabilir ve değerler değiştiğinde yan etkileri tetikleyebilirler.
Doğrulama içeren bir User sınıfı oluşturalım:
class User {
constructor(name, age) {
this._name = name;
this._age = age;
}
get age() {
return this._age;
}
set age(value) {
// Yaşın bir sayı olduğunu ve makul bir aralıkta olduğunu doğrulayın
if (typeof value !== 'number') {
throw new Error('Age must be a number');
}
if (value < 0 || value > 120) {
throw new Error('Age must be between 0 and 120');
}
this._age = value;
// Yan etki: yaş değiştiğinde günlüğe kaydet
console.log(`Age updated to ${value}`);
}
}Artık setter'ı kullandığımızda, doğrulama otomatik olarak gerçekleşir:
const user = new User('Alice', 25);
// Bu çalışır
user.age = 30; // Loglar: "Age updated to 30"
// Bu bir hata fırlatır
user.age = -5; // Hata: Age must be between 0 and 120
// Bu da bir hata fırlatır
user.age = "thirty"; // Hata: Age must be a numberDoğrulama (Validation) = Bir değeri saklamadan önce geçerli olup olmadığını kontrol etmek
Yan Etkiler (Side Effects) = Bir özellik değiştiğinde gerçekleşen ek eylemler
Görev
Size temel bir setter'a sahip bir BankAccount sınıfı verildi. Göreviniz balance setter'ını tamamlamaktır.
Setter'a şunları ekleyin:
- Doğrulama:
valuebir sayı değilse VEYA 0'dan küçükse kontrol edin - eğer öyleyse,console.log("Invalid balance")yapın ve setter'dan çıkmak içinreturnkullanın - Yan Etki: Geçerli bir değeri sakladıktan sonra,
console.log(`Balance updated to ${value}`)yapın
Kendin dene
import { BankAccount } from './account.js';
// Test senaryoları
const account = new BankAccount("Savings");
// Test 1: Geçerli bakiye
account.balance = 100;
console.log(account.balance);
// Test 2: Geçersiz bakiye (negatif)
account.balance = -50;
console.log(account.balance);
// Test 3: Geçersiz bakiye (sayı değil)
account.balance = "abc";
console.log(account.balance);
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Nesneler ve this Anahtar Kelimesi
Hızlı Tekrar: NesnelerNesnelere Metot Eklemethis Anahtar Kelimesini AnlamakYapıcı Fonksiyonlarnew Anahtar KelimesiGenel Tekrar Uygulaması7Kalıtım ve extends Anahtar Kelimesi
Kalıtım"is-a" İlişkisiextends Anahtar Kelimesisuper() MetoduÖzellikleri ve Metotları DevralmaÖzet Meydan Okuması2Kodu Düzenleme
Modüller Nedir?export ile Dışa Aktarmaimport ile İçe AktarmaVarsayılan ve Adlandırılmış Dışa Aktarmalar8OOP Kodunu Düzenleme
Sınıfları Modüller Halinde Düzenleme6Proje: Basit Bir Banka Hesabı
BankAccount SınıfıPara Yatırma ve Para ÇekmePrivate Alan Olarak Bakiye9Statik Metotlar ve Özellikler
Sınıf Düzeyi ve Örnek DüzeyiStatik ÖzelliklerStatik Yardımcı MetotlarÖzet Meydan Okuma12Getter ve Setter'lar
get ve set Anahtar KelimeleriHesaplanmış ÖzelliklerDoğrulama ve Yan EtkilerÖzet Meydan Okuması15Final Meydan Okumaları
Oyun Karakteri OluşturucuE-ticaret Ürün SistemiÜniversite Yönetim SistemiAkıllı Ev Cihaz Sistemi