Java
Setter
setX ile ayarlayıcı ve doğrulamayı öğrenirsin.
Setter metodu
Bir private alanın değerini değiştirmek için bir setter metodu yazılır. Setter, void döndürür, parametre alır ve set önefiyle isimlendirilir. Setter içinde doğrulama yapılabilir; geçersiz değerler reddedilir.
Örnek: void setAge(int a) { if (a >= 0) age = a; }. Burada setter, negatif yaş değerlerini reddeder. Doğrudan age = -5 yazılamaz; setter üzerinden setAge(-5) çağrılsa bile değer atanmaz. Bu, verinin her zaman geçerli kalmasını sağlar. Setter, veri değişikliğini tek noktadan denetler; encapsulation'ın gücüdür.
Setter ile doğrulama
Setter, veri değişikliği sırasında doğrulama yapma fırsatı sunar. Parametre değeri kontrol edilir; geçerliyse alana atanır, değilse reddedilir veya varsayılan değer atanır. Bu, sınıfın değişmezlerini korur.
Örnek: Bir Temperature sınıfında setCelsius(double c) metodu c değerini mutlak sıfırın altında reddedebilir: if (c >= -273.15) celsius = c;. Bu doğrulama, sınıfın her zaman fiziksel olarak anlamlı kalmasını sağlar. Doğrulama mantığı setter içinde tek yerde durur; sınıfın başka yerlerinde tekrarlanmaz. Encapsulation olmadan bu denetimi her atamada ayrı ayrı yapmak gerekirdi.
Uygulama Student sınıfına setter ekle
Student adında bir sınıf tanımla. İçine private int age alanını ekle. public int getAge() getter'ını yaz; age döndürsün. void setAge(int a) setter'ını yaz; gövdesinde if (a >= 0 && a <= 150) age = a; yaz. main içinde bir Student örneği oluştur, setAge(20) çağır ve getAge() sonucunu yazdır.
Örnek çözümü göster
class Student {
private int age;
public int getAge() {
return age;
}
void setAge(int a) {
if (a >= 0 && a <= 150) age = a;
}
public static void main(String[] args) {
Student s = new Student();
s.setAge(20);
System.out.println(s.getAge());
}
}
Kendini test et
-
Setter içinde doğrulama ne işe yarar?
- Geçersiz değerleri engeller
- Metodu hızlandırır
- Alanı siler
- Metodu gizler
Cevabı göster
Geçersiz değerleri engeller — Setter içinde doğrulama, geçersiz değerlerin atanmasını engeller.
-
Setter doğrulamasını tamamla
void setAge(int a) {
if (a >= 0) ____ = a;
}
Cevabı göster
void setAge(int a) {
if (a >= 0) age = a;
}
-
Setter bölümlerini eşle
- void
- Dönüş türü
- setAge
- Metot ismi
- int a
- Parametre
- if (a >= 0)
- Doğrulama
Sıradaki ders: Paket görünürlüğü