Nesne yönelimli programlamanın ilk prensibi
kapsülleme (encapsulation) olarak adlandırılır. Bu özellik, dilin nesne kullanıcısından gereksiz uygulama ayrıntılarını saklar. Oluşturulan bir
sınıf (class) içerisinde kullanıcının işlemlerini daha kolay gerçekleştirebilmesi için bazı işlemler birleştirilerek tek bir işlem gibi gösterilir. Bu birleştirme işlemine kapsülleme denir.
Erişim belirteçleri (access modifier) sayesinde kapsülleme çok daha kolay yapılmaktadır. Erişim belirteçleri, oluşturulan sınıf veya sınıf içindeki elemanların erişim seviyelerini belirlemek için kullanılan anahtar kelimeler grubuna verilen isimdir. Metotlar ve değişkenler bir anahtar sözcük ile önceden bellirlenen sınırlar dahilinde kullanılabilir. Bu anahtar kelimeler şu şekilde sıralanabilir.
- public: Sistemdeki bütün sınıfların erişebilmesini sağlar. Yalnızca aynı proje içinden değil, diğer projelerden de erişim sağlanabilir.
- private: Bir "özellik (property)"in veya "metod"un sadece tanımlandığı sınıftan erişilebilmesini sağlar. Oluşturulan sınıf veya yapıların "public" olması açık bir şekilde belirtilmez ise, derleyici tarafından "private" olarak belirlenir.
- internal: Aynı derleyici (assembly) içinde bulunan tüm sınıflardan erişim sağlanır.
- protected: Sadece tanımlandığı sınıfın içinde ve o sınıftan türetilmiş diğer sınıfların içinde erişilebilir.
Kapsülleme "private" değişkenlerin metotlar gibi kullanılmasına yardımcı olur. Okuma (Read Only) işleminin yanısıra okuma - yazma (read - write) işleminin yapılmasını sağlar.
Uygulama
Id, Ad, OkulNo ve HarcUcreti alanlarından oluşan Ogrenci adlı bir sınıfın; HarcUcreti alanı kapsüllenip, birisi nesneye değer atamasını kontrol eden SetHarcUcreti metodu, diğeri de atanan değeri geriye döndüren GetHarcUcreti metodlarıyla kapsülleme uygulaması şu şekilde yapılır:
namespace Encapsulation
{
class Ogrenci
{
public int Id;
public string Ad;
public string OkulNo;
private double HarcUcreti; // HarcUcreti alanı kapsülleniyor
public void SetHarcUcreti(double value)
{
if (value > 0) //set metoduyla verilen değerin uygun olması durumunda HarcUcreti alanına atama yapılır
HarcUcreti = value;
else //uygun olmaması durumunda kullanıcıya hata mesajı verilir.
Console.WriteLine("Girilen tutar geçersiz.");
}
public double GetHarcUcreti()
{
return HarcUcreti;
}
}
}
Program sınıfında bir Ogrenci nesnesi oluşturulup değer ataması ise şu şekilde yapılır:
class Program
{
static void Main(string[] args)
{
double value; //value değişkenine atama yapılmalıdır. Bu haliyle uygulama hata verecektir.
Ogrenci o = new ogrenci();
o.SetHarcUcreti(value);
Console.WriteLine(o.GetHarcUcreti());
}