Encapsulation (Kapsülleme) Nedir?

Kapsülleme (Encapsulation) kavramı bir nesnenin bazı özellik ve işlevlerini başka sınıflardan ve nesnelerden saklamaktır. Private erişim belirteci sayesinde bu şekilde tanımlanan bir property’ i başka sınıflardan gizlemiş oluruz. Ayrıca bu field başka sınıflarda kullanılamaz.

Kapsülleme (Encapsulation) sayesinde nesneler bilinçsiz kullanımdan korunmuş olur. Fakat bazı durumlarda private field’ lara erişmemiz ve özelliklerini kullanmamız gerekebilir. Bu durumda Property kavramı devreye girer. Property bir field’ in değerini geri döndürmeye (Get) ve değerini ayarlamaya (Set) olanak sağlar.

Örnek:

Class Tarafı:

class ulke
    {
 
       private string ad;   
        public string Ad
        {
            get { return ad; }
            set { ad = value; }
        }
       private string baskent;
 
        public string Baskent
        {
            get { return baskent; }
            set { baskent = value; }
        }
       private int nufus=1500;
 
        public int Nufus
        {
            get { return nufus; }
            set {nufus = value; }
        }
       private string paraBirimi;
 
        public string ParaBirimi
        {
            get { return paraBirimi; }  // okumak
            set { paraBirimi = value; } //yazmak
        }
 
        public void Yazdir()
        {
            Console.WriteLine("Ülke Adı    : "+ ad); //ad private tarafın ismi
            Console.WriteLine("Başkenti    : "+ baskent);
            Console.WriteLine("Nüfusu      : "+ nufus);
            Console.WriteLine("Para Birimi : "+ paraBirimi);
            Console.WriteLine("=============================");
        }
    }
 

Main Tarafı:

Çıktı bu şekilde olur

!<--------ÖRNEK 2------->!

Fiat.cs Classında kodlarımı aşağıdaki gibi düzenliyorum;

Daha sonra nesnelerimden örnek olarak EgeaSedan.cs formumda çalışacağım. Bu formuma bir adet daha label ekliyorum. Labelin adı lblModelYil olsun. Şimdi yazdırma işlemine geçelim kodlayalım:

Görüldüğü üzere ModelYil aslında private ama ben bunu erişim belirleyici ile encapsule ederken public olarak tanımladığım için herhangi bir nesnemin formunda da erişim sağlayabilme imkanım oluyor. Ayrıca kullanıcı örneğin eksi değer (-2020 gibi) bile girse labelda 2020 olarak görünmesini sağlayabiliyorum.

Last updated

Was this helpful?