Nesne tabanlı programlamanın en önemli bölümlerinden birisidir Kapsülleme (Encapsulation), iyi de nedir bu kapsülleme diyorsanız kısaca “Değişkenleri ve verileri hatalı kullanım ve dış etkenlerden korumaktır” diyebiliriz hemen bir örnek üzerinde açıklayalım, Öğrenci bilgileri için bir sınıf oluşturalım
public class Ogrenci { string ogrenciadsoyad; string bolum; int ogrencino; }
bu tanımlama yapısında bu sınıf kullanılarak yukarıdaki değişkenlerin hiç birine direkt olarak erişilemez, erişmek için erişim belirleyicisi olarak public yapmak gerekir. Böyle bir durumda da sınıf içindeki değişken veya metotların herhangi bir güvenliği veya kontrolü kalmayacaktır, işte bu durumu engellemek için kapsülleme kullanılır. İlk olarak klasik yapıda programımızı kodlayalım
class Ogrenci { public string ogrenciadsoyad; public string bolum; public int ogrencino; public void Yaz() { Console.WriteLine("Öğrenci Adı {0}", ogrenciadsoyad); Console.WriteLine("Öğrenci Bölümü {0}", bolum); Console.WriteLine("Öğrenci Numarası {0}", ogrencino); } } static void Main(string[] args) { Ogrenci yeni = new Ogrenci(); yeni.ogrenciadsoyad = "Ayşe Gelen"; yeni.bolum = "Bilişim Teknolojileri"; yeni.ogrencino = -120; yeni.Yaz(); Console.ReadKey(); }
görüldüğü gibi öğrencino bilgisine negatif bir değer gönderilmiş ve herhangi bir kontrolden geçirilmeden sınıf içerisinde kullanılmıştır. Kodlarımızı aşağıdaki gibi değiştirirsek eğer dışarıdan gelen kodları kontrol edebiliriz, peki aşağıdaki gibi yapmanın kolay yolu var mı evet var resimde görülen işlemi her değişkene uyguladığınızda program aşağıdaki hale gelmiş olacaktır.
class Ogrenci { private string ogrenciadsoyad; public string Ogrenciadsoyad { get { return ogrenciadsoyad; } set { ogrenciadsoyad = value; } } private string bolum; public string Bolum { get { return bolum; } set { bolum = value; } } private int ogrencino; public int Ogrencino { get { return ogrencino; } set { if (value < 0) { ogrencino = 0; } else { ogrencino = value; } } } public void Yaz() { Console.WriteLine("Öğrenci Adı {0}", ogrenciadsoyad); Console.WriteLine("Öğrenci Bölümü {0}", bolum); Console.WriteLine("Öğrenci Numarası {0}", ogrencino); } } static void Main(string[] args) { Ogrenci yeni = new Ogrenci(); yeni.Ogrenciadsoyad = "Ayşe Gelen"; yeni.Bolum = "Bilişim Teknolojileri"; yeni.Ogrencino = -120; yeni.Yaz(); Console.ReadKey(); }