Nesne Yönelimli Programlama #08 | Kapsülleme ve veri alanları

Encapsulation

Eğitmen: Dr. Süleyman Burak ÇELİK

Geçen derste Java programında bir üyeye hangi kaynak konumlarından erişilebildiğini gördük. Bugün o erişim sınırının arkasında duran verinin nasıl korunacağını konuşacağız. Bir çalışma kartında hedef ve tamamlanan miktar bulunsun. Dışarıdaki kod hedefi istediği sayıya çevirebiliyorsa, tamamlanan miktarın hedeften büyük olduğu bir durum oluşturabilir. Derleyici iki alanın anlamını bizim yerimize bilmez. Programın yazılabilir olması, tuttuğu durumun mantıklı olduğunu göstermez. Özgün StudyCard örneğinde özel veri alanları ile dışarıya sunulan davranışları ayırıyoruz. Başlangıçta hedef ve tamamlanan miktarın ilişkisini kuruyor, hedef değişimi ve ilerleme kaydında geçersiz adayları alanları değiştirmeden reddediyoruz. Sorguların durum değiştirmemesini, int değer kopyasını ve salt okunur bir özelliğin nesneyi değişmez yapmamasını izliyoruz. Aynı istemciyi iki farklı özel veri temsiliyle çalıştırıp karşılaştırıyoruz. Bu derste: 1. Açık alanın sakladığı sorun 2. Özel alan ve açık işlem 3. Geçerli başlangıç kurmak 4. Değeri okumak durumu değiştirmez 5. Kontrollü hedef değişimi 6. Anlamlı bir davranış sunmak 7. Ret halinde eski durum 8. Tamamlanma sorgusu 9. Aynı dış sözleşme, farklı iç veri 10. Hangi kanıt hangi soruyu yanıtlar? Bölümler: 0:00 Duruma giden yolu tasarlamak 1:30 Açık alanın sakladığı sorun 2:58 Özel alan ve açık işlem 4:24 Geçerli başlangıç kurmak 5:50 Değeri okumak durumu değiştirmez 7:16 Kontrollü hedef değişimi 8:47 Anlamlı bir davranış sunmak 10:14 Ret halinde eski durum 11:47 Tamamlanma sorgusu 13:18 Aynı dış sözleşme, farklı iç veri 14:50 Hangi kanıt hangi soruyu yanıtlar? 16:23 Kapsülleme bir davranış sözleşmesidir Kaynak kitap: Y. Daniel Liang, Introduction to Java Programming, Comprehensive 10th Edition; §9.9. Basılı344–347 / fizikselPDF367–370; ölçülen+23; gerçek Java11 StudyCard ve iki iç temsil, erişim ve davranış varyantları. Kavram ve konu sırası kaynak kitaptan izlenir; anlatım, çizimler ve çalışma kartı örnekleri özgündür. Sayısal durumlar gerçek Java 11, TypeScript ve bağımsız Python hedef/dolu yer kümeleriyle; alan erişimi ve metot sözleşmeleri gerçek derleme ve çalışma varyantlarıyla denetlenmiştir. setTarget ve complete işlemleri void dönüşlüdür; geçersiz adayda IllegalArgumentException oluşturulur. Örneğin tüm yapıcıları ve değişim yolları kendi sınırlarını denetler; bu özellik bütün sınıflara kendiliğinden genellenmez. İki temsil için aynı istemcinin karşılaştırılan sonuçları aynıdır; genel ikili uyumluluk, performans, güvenlik veya öğrenme başarısı ölçümü yapılmamıştır. Bu ders Java örneği kullanır; C# diline özgü erişim ve olay özellikleriyle eş tutulmaz. Kaynak kitap kullanıcı tarafından temin edildi. Hedef kitle: bilgisayar mühendisliği ve yazılım öğrencileri.

Bu videoyu izlemek için Premium üyelik gerekir.