[]

OOP - Encapsulation - Neden?

nesnenin datasının dışarıdan gizli olması, behavior'unun public olması için deniyor. Tamam eyvallah, biz de yazarken öyle yazıyoruz ama şunun cevabını arıyorum ben:
Public Getter ve setter metodları olan private bir değişken (karizmatik adı field) ile bu motodları olmayan public değişken arasında ne fark var? Yani neden
nesne.setDeger(42);
diyoruz da
nesne.Deger = 42;
demiyoruz?

 
setDeger metotu içinde değişkeni kontrol edebiliriz ve bize o değer uymuyorsa atamayı yaptırmayız mesela. örneğin bu değer yaşsa 0'ın altında değer girilmesini istemeyiz. setDeger metotu olmazsa dışarıdan 0'ın altında değer girilebilir. fakat biz bunu metot içinde bir if ile kontrol ederek değer atamasını yaptırmayıp yeniden değer girilmesini falan isteyebiliriz.


  • lemmiwinks  (24.10.11 10:09:42) 
peki şimdilik ona benzer hiçbir kısıtımız olmadığını varsayalım, her değer atanabiliyor ve alınabiliyor. O zaman neye hizmet ediyor bu iş, ileride değiştirmem icap ederse sadece orayı değiştirmemin yetmesini mi sağlıyor yoksa başka avantajları da var mı? bellek yönetimi ile ilgili falan?


  • samfisher  (24.10.11 10:15:44) 
Veri girişi ve değişikliğin tek bir yerden yapılmasına izin veriyor, dolayısıyla daha güvenli oluyor.


  • burka  (24.10.11 10:22:58) 
why encapsulation diyerek arattığın zaman karşına birçok örnek çıkıyor bununla ilgili, genel olarak özet geçmek gerekirse, veriyi tek bir noktadan set edebildiğin için verinin etkileyebileceği diğer değişkenlere uygun olarak işlem yapabiliyorsun. böylece veri değişimlerinde programın bozulmasını engellemiş oluyorsun.

belki bu normal bir program kodlarken senin işine yaramayabilir, sen diyorsun ki ben kendi fonksiyonlarım arasında her değer değişimlerini bozulmayacak şekilde yaptığımdan ve son kullanıcının da bu değerlerle işi olmayacağından neden kullanayım bunu? kendince haklısın, fakat biraz daha geniş çaplı özellikle ortak projelerde filan bu özellik önemli hale geliyor.

onun dışında eğer bir program değil de programcıların kullanacağı bir kütüphane, component vs. yazıyorsan da bu değerlere kullanıcının doğrudan erişmesini engellemen gerekebiliyor.

gmoeck.github.com
  • ocanal  (24.10.11 10:59:52 ~ 11:00:04) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.