Ders kitabının açık uçlu alıştırmaları. Bunlar çoktan seçmeli sınav sorusu değil — düşünmeni, araştırmanı, kendi cümlelerinle anlatmanı isteyen etkinlikler. Kitabın verdiği örnek yanıtlar kapalı duruyor; önce kendin dene.
Alıştırma 1myders hazırladı
Bir sınıftaki değişkenlerin doğrudan dışarıdan değiştirilmesinin yaratabileceği riskleri düşünerek, 'kapsülleme' (encapsulation) ilkesinin bu riskleri nasıl engellediğini bir örnek senaryo üzerinden açıklayınız.
Yanıt / ipucu
Değişkenlerin doğrudan erişime açık olması, geçersiz verilerin atanmasına yol açabilir (örneğin, yaş değişkenine negatif değer verilmesi). Kapsülleme sayesinde değişkenler 'private' yapılarak sadece 'public' metotlar veya özellikler üzerinden, doğrulama kontrolleri eşliğinde güvenli bir şekilde güncellenir.
Alıştırma 1myders hazırladı
Bir sınıfta tanımlanan değişkenlerin doğrudan dışarıya açılması yerine 'private' yapılıp 'public' metotlar üzerinden erişilmesi (kapsülleme) neden önemlidir? Günlük hayattan bir senaryo üzerinden örnekleyerek açıklayınız.
Yanıt / ipucu
Kapsülleme, verilerin kontrolsüzce değiştirilmesini önler. Örneğin, bir banka hesabındaki bakiye değişkeni doğrudan dışarıya açık olursa negatif değerler atanabilir; ancak public bir metot üzerinden erişildiğinde bakiye güncellemeden önce değerin sıfırdan büyük olup olmadığı kontrol edilebilir.
Alıştırma 2myders hazırladı
C# dilinde 'public' ve 'private' erişim belirleyicileri arasındaki temel farkları karşılaştırınız ve bir sınıf tanımlandığında varsayılan erişim belirleyicisinin ne olduğunu belirtiniz.
Yanıt / ipucu
'Public' tanımlanan üyelere her yerden erişilebilirken, 'private' üyelere sadece tanımlandıkları sınıf içinden erişilebilir. C# dilinde sınıf üyeleri için herhangi bir erişim belirleyici yazılmazsa, varsayılan olarak 'private' kabul edilir.
Alıştırma 2myders hazırladı
'Public' ve 'Internal' erişim belirleyicileri arasındaki temel farkı, birden fazla projenin yer aldığı bir yazılım mimarisi üzerinden karşılaştırarak analiz ediniz.
Yanıt / ipucu
Public belirleyicisi, projenin referans eklendiği diğer tüm dış projelerden erişime izin verirken; Internal belirleyicisi erişimi sadece tanımlandığı projenin sınırları içinde tutar. Tek projeli yapılarda fark gözlenmezken, çoklu projelerde Internal kütüphane içi gizliliği korur.
Alıştırma 3myders hazırladı
'Protected' ve 'Internal' erişim belirleyicilerinin kullanım amaçlarını araştırınız; hangi durumlarda kalıtım ilişkisinin, hangi durumlarda ise proje sınırlarının ön plana çıktığını örnekleyiniz.
Yanıt / ipucu
'Protected', sadece sınıfın kendisi ve ondan türetilen alt sınıfların erişimi için kalıtım senaryolarında kullanılır. 'Internal' ise erişimi aynı derleme (proje) içiyle sınırlandırarak, farklı projelerin bu iç detaylara erişmesini engellemek amacıyla modüler yapılarda tercih edilir.
Alıştırma 3myders hazırladı
'Protected' erişim belirleyicisinin işlevini ve sadece kalıtım (inheritance) ilişkisi olan sınıflar arasındaki görünürlüğünü gösteren basit bir C# sınıf şeması veya kod taslağı hazırlayınız.
Yanıt / ipucu
Bir 'Calisan' üst sınıfında 'protected maas' değişkeni tanımlanır. Bu değişkene ondan türeyen 'Yonetici' alt sınıfı içinden erişilebilirken, kalıtım bağı olmayan bir 'Musteri' sınıfından erişim sağlanamaz.
Alıştırma 4myders hazırladı
Çoklu projeden oluşan bir çözüm (solution) yapısı kurgulayarak, 'Internal' ile 'Protected Internal' belirleyicileri arasındaki farkı projeler arası erişim sınırları açısından analiz ediniz.
Yanıt / ipucu
'Internal' üyelere sadece tanımlandıkları proje içinden erişilebilirken, 'Protected Internal' üyelere hem aynı proje içinden hem de farklı projelerdeki türetilmiş (miras alan) sınıflar üzerinden erişim sağlanabilir.
Alıştırma 4myders hazırladı
Erişim belirleyicilerinin sınıflar, namespace'ler ve enum'lar üzerindeki kısıtlamalarını araştırarak, hangi yapıların hangi belirleyicileri alamayacağını gerekçeleriyle listeleyiniz.
Yanıt / ipucu
Namespace ve Enum yapıları doğası gereği daima public olmak zorundadır ve değiştirilemezler. Sınıflar ise en dış düzeyde sadece public veya internal olabilir; private veya protected olarak tanımlanamazlar çünkü bu durum sınıfın örneklenmesini imkansız kılardı.
Alıştırma 5myders hazırladı
Erişim belirleyicilerinin sınırlandırmalarını inceleyerek; namespace, enum ve sınıfların (class) hangi erişim belirleyicilerini alabileceğini, hangilerini alamayacağını gerekçeleriyle açıklayınız.
Yanıt / ipucu
Namespace ve Enum yapıları doğası gereği daima 'public' olmak zorundadır ve değiştirilemez. Sınıflar ise en dış düzeyde sadece 'public' veya 'internal' olabilir; doğrudan bir namespace içinde 'private' veya 'protected' olarak tanımlanamazlar.
Alıştırma 5myders hazırladı
Üst sınıfta 'public' olarak tanımlanmış bir metodu, alt sınıfta 'private' olarak ezmeye (override etmeye) çalıştığınızda karşılaşacağınız kısıtlamayı ve bunun nesne yönelimli programlama ilkeleri açısından nedenini tartışınız.
Yanıt / ipucu
Kalıtım yoluyla alınan kısıtlamalar artırılabilir ancak azaltılamaz. Üst sınıfta public olan bir metot alt sınıfta daha kısıtlı bir belirleyiciye (örneğin private) dönüştürülemez; çünkü bu durum üst sınıf referansı üzerinden yapılan polimorfik çağrıların güvenliğini ve tutarlılığını bozar.