C#

Kapsülleme (Encapsulation) Nedir ve Nasıl Yapılır

Kapsülleme (Encapsulation), ‘bir veya daha fazla öğeyi fiziksel veya mantıksal bir paket içinde gizleme işlemi’ olarak tanımlanır. Nesneye yönelik programlama dillerinin temel felsefesidir. Uygulama yazımında nesnenin ögelerinin ulaşımla ilgili izinlerini düzenleyerek daha daha tutarlı program yazma imkanı sunar.

Nesne yönelimli programlamada soyutlama ve kapsülleme ilişkili konulardır. Soyutlama, ilgili bilgilerin görünür olup olmamasını sağlar ve kapsülleme, bir programcının istenen soyutlama seviyesini gerçekleştirmesine imkan verir.

Kapsülleme erişim belirteçleri kullanılarak gerçekleştirilir. Bir erişim belirteci, bir sınıf üyesinin kapsamını ve görünürlüğünü tanımlar. C# aşağıdaki erişim belirteçleri destekler

C# Erişim Belirleyici

  • public
  • private
  • protected
  • internal
  • protected internal

public erişim belirteci

public erişim belirteci, bir sınıfın üye değişkenlerini ve üye işlevlerini diğer işlevlere ve nesnelere görünür kılmasına verir. Herhangi bir public üye sınıf dışından erişilebilir kılınmış olur.

Dikdortgen sınıfı:

Main içinde Kullanımı:

Yukarıdaki örnekte neler oldu inceleyelim.

Üye değişkenleri uzunluk ve genişlik değişkenlerini public olarak ayarlayıp, Dikdortgen sınıfından sekil nesnesini türeterek genislik ve yukseklik değerlerini girdik. Yazdir metodunu public olarak ayarlardığımız için yine sekil.Yazdir() diyerek metodun çalıştırılmasını sağladık.

private erişim belirteci

private erişim belirteci, bir sınıfın üye değişkenlerini ve üye işlevlerini diğer işlevlerden ve nesnelerden gizlemesine izin verir. private yapılan öge sadece sınıf üyeleri tarafından erişilebilir. Sınıf dışından hiçbir şekilde private olan üyeye erişilemez.

Dikdortgen sınıfı:

Main metodunun içi:

private belirteci olan üyelere sadece sınıf içinden ulaşılabilir demiştim. Burada double genislik ve double uzunluk üyelerine dışarıdan değer girebilmek için public olan Genislik() ve Uzunluk() üye metotlarını kullandım.

sekil nesnesini oluşturduktan sonra genişlik ve uzunluk değerini aktarmak için Genislik() ve Uzunluk() metotlarını kullanarak değerli aktarıp, Yazdır() metodu ile sonucu ekrana yazdırdım.

 

protected erişim belirteci

protected erişim belirteci, bir alt sınıfın, üye değişkenlerine ve temel sınıfının üye işlevlerine erişmesine izin verir. protected erişim belirteci kalıtım uygulanmasında yardımcı olur. Kendisini miras olarak kullanan her sınıfta protected üyelere ulaşım sağlanır.

Sekil class

 

Kare class

 

Dikdortgen class

Sekil classı kendisinde 1 tane kenar adında üye taşımaktadır. Kare ve Dikdortgen sınıfları bu Sekil sınıfını kalıtım yolu ile kendisine miras almaktadır.  Mevcut örnekte Sekil sınıfındaki protected olan kenar1 değeri kendisini miras olarak alan Dikdortgen ve Kare sınıflarına miras yolu ile aktarılmıştır.

 

internal erişim belirteci

internal erişim belirteci, bir sınıfın üye değişkenlerini ve üye işlevlerini geçerli derlemedeki (DLL ve EXE) tüm sınıflardan erişilebilir olmasını sağlar. Geçerli derleme dışında erişim mümkün değildir. Başka bir deyişle, internal erişim belirticisine sahip herhangi bir üyeye uygulama içinde tanımlanan herhangi bir sınıf veya yöntemden erişilebilir.

Dikdortgen sınıfı:

Main içinde Kullanımı:

Yukarıdaki örnekte bulunan genislik ve uzunluk geçerli derleme içinde bulunan bütün sınıflardan ulaşılabilir olmuştur.

protected internal erişim belirteci

protected internal erişim belirteci, bir sınıfın, aynı uygulama içindeki bir alt sınıf dışında, diğer sınıf nesnelerinden ve işlevlerinden üye değişkenlerini ve üye işlevlerini gizlemesine izin verir. Bu, kalıtımın uygulanması sırasında da kullanılır.

 

Varsayılan Erişim Belirteci

Bir sınıf ve üyesine her hangi bir erişim belirteci tanımlanmadıysa C# dilinde bu nesneler private olarak ayarlanır.

Yukarıdaki örnekte Yazdır() metoduna her hangi bir erişim belirteci tanımlanmamıştır. Bu Yazdır() metodunun varsayılan olarak private olduğunu gösterir.

About the author

admin

Add Comment

Click here to post a comment

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.