Getter ve setter
- Dart kursu
- Orta seviye
- Ders 19/116
- 5 dk
get ve set ile kontrollü erişim öğrenirsin.
get ve set
Dart, private alanlara kontrollü erişim için getter ve setter sunar. get ve set anahtar kelimeleriyle yazılır; çağrımda parantez kullanılmaz.
Örnek: double get balance => _balance; set balance(double value) { if (value < 0) return; _balance = value; }. Burada balance hem okunabilir hem yazılabilir bir erişimcidir. Okuma a.balance, yazma a.balance = 100 biçiminde yapılır. Setter içindeki koşul, negatif değerlerin yazılmasını engeller. Bu yapı, alanı doğrudan açmadan doğrulama eklemenin temiz yoludur.
Setter ile doğrulama
Setter, yazma işlemine araya girer; böylece değer doğrulaması yapılabilir. Geçersiz değer girildiğinde atama engellenir ya da düzeltilir.
Örnek: set balance(double value) { if (value < 0) return; _balance = value; }. Burada negatif bir değer yazılmak istenirse return ile işlem durdurulur ve _balance değişmez. Bu sayede kullanıcı hatası önlenir; nesne her zaman tutarlı kalır. Yalnızca okunan alanlar için setter yazılmaz; bu durumda alan salt okunur olur ve dışarıdan değiştirilemez.
Uygulama Account'a getter ve setter ekle
Account sınıfını tanımla; double _balance private alanını ve Account(this._balance) yapıcısını ekle. double get balance => _balance; getter'ını ve set balance(double value) { if (value < 0) return; _balance = value; } setter'ını yaz. main içinde var a = Account(100); ile örnek oluştur, print(a.balance) ile yazdır, a.balance = 200 ile güncelle ve tekrar print(a.balance) çağrısı yap.
Başlangıç kodu
// Account sınıfını tanımla
// private _balance, yapıcı, getter ve setter ekle
void main() {
// Account(100) örneği oluştur, balance yazdır, 200'ye güncelle, tekrar yazdır
}Örnek çözüm
// Account sınıfını tanımla
class Account {
double _balance;
Account(this._balance);
double get balance => _balance;
set balance(double value) {
if (value < 0) return;
_balance = value;
}
}
void main() {
var a = Account(100);
print(a.balance);
a.balance = 200;
print(a.balance);
}Beklenen çıktı
100.0 200.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 getter bildirimini tamamla
double ____ balance => _balance;
double get balance => _balance;
Açıklama: get anahtar kelimesi okuma erişimcisi tanımlar.
2 set balance(double value) ne işe yarar?
- Yalnızca değeri okur
- Static alan tanımlar
- Yazma işlemini doğrulama ile sarar Doğru cevap
- Yapıcıyı çağırır
Açıklama: Setter, yazmaya araya girer; doğrulama ekler.
3 Erişimci parçalarını eşle
| Kavram | Anlamı |
|---|---|
get |
Okuma erişimcisi |
set |
Yazma erişimcisi |
_balance |
Private alan |