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'lar ve setter'lar, özellik okumaktan ve yazmaktan daha fazlasını yapabilirler; girdileri doğrulayabilir ve değerler değiştiğinde yan etkileri tetikleyebilirler.
Doğrulamalı 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ğrula
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; // Log: "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 ayarlayıcıya (setter) sahip bir BankAccount sınıfı verilmiştir. Göreviniz balance ayarlayıcısını tamamlamaktır.
Ayarlayıcıya ş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 ayarlayıcıdan çıkmak içinreturnkullanın - Yan Etki: Geçerli bir değeri sakladıktan sonra,
console.log(\`Balance updated to ${value}\`)yapın
Kopya kağıdı
Getter ve setter metotları, girdileri doğrulayabilir ve değerler değiştiğinde yan etkileri tetikleyebilir.
Doğrulama, bir değerin saklanmadan önce geçerli olup olmadığını kontrol eder:
set age(value) {
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 Etkiler, bir özellik değiştiğinde gerçekleşen ek eylemlerdir:
set age(value) {
// validation...
this._age = value;
// Side effect: log when age changes
console.log(`Age updated to ${value}`);
}Örnek kullanım:
const user = new User('Alice', 25);
user.age = 30; // Logs: "Age updated to 30"
user.age = -5; // Error: Age must be between 0 and 120Kendin 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 Çekme9Statik 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