Sesli Özet
← Ünite 7

Ünite 7: Erişim Belirleyiciler — Sesli Özet

Dinleme Premium'a özel. 1. ünitenin sesli özeti ücretsiz; bu ünitenin seslendirme metni de aşağıda ücretsiz okunabilir.
Metni oku

Nesne yönelimli programlama (OOP), kodun yeniden kullanılabilirliğini artırmak ve hata ayıklama süreçlerini basitleştirmek için tasarlanmıştır. Erişim belirleyiciler, bu yapının temel taşlarından biridir ve sınıflar, özellikler (properties) veya metotların hangi kapsamda erişilebilir olacağını kontrol etmemizi sağlar. Bir programda değişkenlerin kontrolsüzce değiştirilmesi, büyük projelerde hataların kaynağını bulmayı imkansız hale getirebilir. Erişim belirleyiciler sayesinde, verilerin sadece belirli sınıflar tarafından değiştirilmesine izin vererek 'kapsülleme' (encapsulation) ilkesini uygularız. C# dilinde dört temel erişim belirleyicisi bulunur: Public, Private, Protected ve Internal. Ayrıca bunların kombinasyonları olan Protected Internal gibi yapılar da mevcuttur. Bu belirleyiciler, yazılımın güvenliğini ve modülerliğini doğrudan etkiler. Public, en geniş erişim yetkisidir. Bir üye 'public' olarak tanımlandığında, o sınıfa erişimi olan her yerden (aynı proje, farklı sınıflar, hatta farklı projeler) erişilebilir. Farklı projelerde kullanımı için projenin referans olarak eklenmesi yeterlidir. Private ise tam tersi bir yaklaşımla en kısıtlayıcı belirleyicidir. Sadece tanımlandığı sınıf içerisinden erişime izin verir. Eğer bir değişken veya metot için herhangi bir belirleyici yazılmazsa, C# varsayılan olarak onu 'private' kabul eder. Uygulama geliştirirken, verilerin dışarıdan doğrudan değiştirilmesini engellemek için genellikle özellikler private tanımlanır ve bunlara erişim public metotlar üzerinden kontrollü bir şekilde sağlanır. Protected belirleyicisi, kalıtım (inheritance) mekanizmasıyla doğrudan ilişkilidir. Protected olarak tanımlanan bir üyeye, tanımlandığı sınıfın yanı sıra o sınıftan türetilen (miras alan) sınıflar da erişebilir. Ancak sınıf dışındaki diğer yapılar bu üyeye erişemez. Internal belirleyicisi, erişimi 'proje' bazlı sınırlar. Aynı proje içerisindeki tüm sınıflar internal üyelere erişebilirken, farklı bir projeden bu üyelere erişim mümkün değildir. Bu, özellikle kütüphane veya modül geliştiren yazılımcılar için iç yapıyı gizlemek adına oldukça kullanışlıdır. Tek bir proje üzerinde çalışırken public ve internal arasında görünürde bir fark yoktur; ancak çözüm gezgininde birden fazla proje yönetildiğinde internal'ın sınırları net bir şekilde ortaya çıkar. Protected Internal, hem Protected hem de Internal özelliklerini taşıyan bir birleşimdir. Bu belirleyiciye sahip bir üyeye, aynı proje içindeki her sınıftan veya farklı projelerdeki türetilmiş sınıflardan erişilebilir. Erişim belirleyicileri kullanılırken dikkat edilmesi gereken bazı kurallar vardır: Namespace ve Enum'lar daima public'tir ve değiştirilemezler. Sınıflar ise sadece public veya internal olabilir; private veya protected olarak tanımlanamazlar. Kalıtım yoluyla alınan kısıtlamalar artırılabilir ancak azaltılamaz. Yani bir ü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.