Dart Dilinde Getter ve Setter Kavramları
Bir değişken global olarak bildirildiğinde, herkes tarafından kolayca manipüle edilebilir hale gelmekte ancak sınıf üyelerinin kontrolünü kısmen kaybettireceği için bu iyi bir fikir olmayabilir. Bu nedenle bazı durumlarda değişkenlerimizi gizli (private) olarak ayarlamamız gerekebilir. Dart dilinde getter ve setter kavramları sayesinde gizlenmiş olarak ayarlanmış değerlere ulaşıp gerekli manipülasyonu yapabiliriz.
Dart Dilinde Getter ve Setter
Getter ve setter yapıları, sınıf alanlarının verilerini işlemek için kullanılan sınıf metotlarıdır. Getter, sınıf alanının verilerini okumak veya almak için kullanılırken, setter ise, sınıf alanının verilerini bir değişkene atamak için kullanılır.
Herhangi bir sınıf (class) içerisindeki değerler gizli (private) yapıldığında sınıfa erişimi olanlar hariç hangi değişkenlerin olduğu kimse tarafından görülemeyecektir. Daha doğrusu private değişkenlere instance ismi nokta yapıldığında kullanılabilir şekilde gözükmeyecektir.
İşte get ve set anahtar kelimeleri sayesinde sınıf içi gizli değişkenlere dışarıdan erişmek veya değişkenin değerinin güvenli bir şekilde değiştirme olanağı sağlanır.
Tüm sınıflar, kendisiyle ilişkilendirilmiş varsayılan getter ve setter yöntemine sahiptir. Ancak, getter ve setter metodunu açıkça uygulayarak varsayılanları gizli dahi olsa geçersiz kılıp bu değerler üzerinden manipülasyon yapılabilir.
Getter, sınıf değişkenlerini okumak için kullanılan özel metotlardır. Bu metotlar, özellikle gizlenmiş ve dışarıdan bir erişime kapatılmış değişkenlerin gerekli olduğu durumlarda okunmasını sağlamaya yarar.
Getter, get anahtar sözcüğü kullanılarak parametresiz olarak tanımlanır ve bir değer döndürür. Sözdizimi (syntax) aşağıdaki gibidir:
return_type get field_name {}
Setter ise sınıf değişkenlerine veri atamak için kullanılır. Bu metotların amacı özellikle gizlenmiş ve dışarıdan bir erişime kapatılmış değişkenlere veri atamak ve gerekli veri manipülasyonlarını sağlamak için kullanılır.
Setter, tek parametreli ve dönüş değeri olmayan set anahtar sözcüğü kullanılarak tanımlanır. Sözdizimi aşağıdaki gibidir:
set field_name {}
Belirtmek gerekir ki eğer main yapısı ile class yapısı aynı dosyanın içindeyse veriler gizlenememektedir. Bu yüzden ilgili class yapısını farklı bir dosyada kaydetmemiz gerekir. Aşağıdaki örnek, bir Dart sınıfında getter ve setter yapılarının nasıl kullanabileceğinizi göstermektedir:
class CalisanBilgileri {
String calisaninAdi = "";
int calisaninYasi = 1;
int _calisaninMaasi = 1;
String get calisanin_adi {
return calisaninAdi;
}
void set calisanin_adi(String ad) {
this.calisaninAdi = ad;
}
void set calisanin_yasi(int yas) {
if(yas<= 18) {
print("Çalışan, 18 yaşından büyük olmalı!");
} else {
this.calisaninYasi = yas;
}
}
int get calisanin_yasi {
return calisaninYasi;
}
void set calisanin_maasi(int maas) {
if(maas<= 0) {
print("Maaş 0'dan büyük olmalı!");
} else {
this._calisaninMaasi = maas;
}
}
int get calisanin_maasi { //
return _calisaninMaasi;
}
}
import 'bilgiler.dart';
void main() {
CalisanBilgileri personel = CalisanBilgileri();
personel.calisanin_adi = 'Brad';
personel.calisanin_yasi = 20;
personel.calisanin_maasi = 5000;
print("Çalışanın adı: ${personel.calisanin_adi}");
print("Çalışanın yaşı: ${personel.calisanin_yasi}");
print("Çalışanın maaşı: ${personel.calisanin_maasi}");
}
Kodu çalıştırmak için: Replit