Encapsulation – Kapsülleme
string.Empty, DBNull.Value gibi özel durumlar dışında tiplerin içerisine public field’lar yazılmaması gerekir, field’lara değer ataması sırasında kontroller yapmamız gerektiğinde public field’lar yetersiz kalacaktır. Bir field’a direk erişim çoğu zaman problem yaratan bir kullanım şeklidir, bundan dolayı field’ları private yaparak değer atama ve değer okuma işlemlerini tip içerisinde yazdığımız metodlar vasıtasıyla gerçekleştirmemiz gerekir, bu yönteme Kapsülleme (Encapsulation) adı verilir.
Örnek olarak Ogrenci sınıfını ele alabiliriz.
class Ogrenci
{
private string _ad;
private int _dogumYil;
public void set_DogumYil(int value)
{
if (value < 1985 || value > 1995)
throw new ArgumentException("Dogum Yılı 1985-1995 arasında olmalıdır...");
else
_dogumYil = value;
}
public int get_DogumYil()
{
return _dogumYil;
}
public void set_Ad(string value)
{
if (value.Length < 5 || value.Length > 25)
throw new ArgumentException("Öğrenci Adı 5-25 karakter arasında olmalıdır.");
else
_ad = value;
}
public string get_Ad()
{
return _ad;
}
}
Sınıfımızda tanımladığımız set_DogumYil, get_DogumYil, set_Ad ve get_Ad metodları ile private field’larımızı kontrollü bir şekilde kullanıma açmış olduk, girilen doğum yılının 1985 ile 1995 olmaması veya öğrenci adının 5 ila 25 karakter arasında olmaması durumunda program istisna fırlatacaktır.
Kapsülleme yaparak senaryomuza uygun olmayan verilerin field’lara atanmasının önüne geçmiş olduk.
Önemli olan nokta, uygulama geliştirirken kontrol gerektirmeyen field’larda kapsülleme yapmak mantıksız gibi görünsede ilerde atanan verilerin kontrol edilmesini gerektiren bir durum oluştuğu zaman eğer kapsülleme yapısını kurmuş isek sadece metod içerisinde gerekli kontrolü yazarak bu sorunu giderebiliriz, aksi takdirde public bıraktığımız zaman bizi bir hayli yorucu bir işin beklediği gerçektir.
İyi Çalışmalar
Hakan Başar AKSAN