Şimdi Ara

Neden Sadece Getters Kullanmıyoruz? Setters Şart mı?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
182
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Kafama takıldı, amaç nedir Set methodu kullanmakta? Getters içinde bir parametre belirleyip, main methodda tanımlarken setters kullanmamıza gerek kalmıyor. Örneğin Java'da hem set hem de get methodu oluşturup, main method'da ilk önce oluşturduğumuz obje vasıtasıyla "SET" methodundaki değişkene değer atıyoruz ardından getMethod'u ile bir değişken olarak kullanıyoruz ancak benim kafama takılan; aynı işi SET methodu kullanmadan GET method'u içinde bir parametre kullanarak halledebiliriz. Nedendir agalar valla çok kafam takıldı ya?




  • onlar metodoloji hocam, kullanacaksın diye birşey yok. adamlar zamanında böyle modüler yaparsan, daha anlaşılır olur diye düşünmüşler. "ben bi 'get' yazarım 'set' de yapar takla da atar" da diyebilirsin eyvallah. buradaki amaç senin direkt olarak ilgili değişkeni manipule etmene bir kısıt getirmek ki bu genelde harici kütüphaneleri kullandığın veya yazacağın zaman düzenli olsun diye kullanacağın bir yaklaşım. sadece senin uğraştığın bir projede anlamı yok. public yazar geçersin.

  • Çok teşekkürler hocam.
  • Merhaba,


    Nesneye yonelik programlamadaki encapsulation ( bunun Turkcesi nedir bilmiyorum ) prensibi yuzunden var getter ve setterlar.

    Ozetle, bir nesne icerisindeki degisken ve metodlarin disariya kontrollu sekilde acilmasi prensibine dayaniyor. Sadece istediginiz method ve degiskenlere erisim hakki verip guvenli ve tutarli sistem yaratmak buradaki amac.


    Main method vs. gibi seylerden bahsetmissiniz sanirim burada bahsettiginiz nesnenin constructor'i. Nesne yaratilirken bir takim degerlerin tanimlanmasi zorunluysa ( misal kullanici nesneniz var, id'si olmak zorunda diyelim ) bu alanlari iceren parametrik constructor tanimlanir ki id olmadan kullanici objesi yaratilmasin. Bunu yaptiktan sonra da setter'a gerek kalmaz hatta setter kullanilmamalidir ki id gibi tanimlayici alan degistirilmesin.



    Alıntı

    metni:
    aynı işi SET methodu kullanmadan GET method'u içinde bir parametre kullanarak halledebiliriz


    Bunu yapamazsiniz. Set metodlari bir degiskene deger atarsiniz ve void dondurur, getter ise parametre almaz, almamalidir isi sadece degiskenin degerini dondurmek olmalidir onu yapar ve donus tipi de dogal olarak degiskenin tipidir.


    Bahsettigim encapsulation kavramini okursaniz kafanizda taslar biraz daha yerine oturacaktir.





  • Nesne tabanlı programlamada Encapsulation (turkcesini bilmiyom) diye bir kavram vardır. Yazdığınız class'ların member'larını private yapıp, class dışından erişim için setter/getter kullanırsınız. Bunun sebebi aslında memberların değerlerinin değişimini kontrol altında tutmaktır. Ayrıca setter getter illa aşağıdaki gibi olmak zorunda değildir:


    void setA(int a){

    this.a = a;

    }


    int a getA(){

    return this.a;

    }


    setter içinde member'ın değerini atamadan önce mesela validasyon yapabilirsiniz veya data tipi değiştirebilirsiniz. Yani direk this.a = a olmak zorunda değil. Olay member a'nın set edilen değerinin kontrol altına almaktır. Aynı şey get içinde geçerli.


    "Java Conventions" diye bir kavram vardır. Kod yazarken bu convention'lara uymanız gerekir. Kafanıza göre kod yazarsanız başkaları size küfreder.  





  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.