1. Anasayfa
  2. Nesne Tabanlı Programlama

C# Örnekleri – Kapsülleme (Encapsulation)

C# Örnekleri – Kapsülleme (Encapsulation)
0

Bir önceki konumuzda Kapsülleme (Encapsulation)‘nin ne olduğunu , nasıl yapıldığını anlatmaya çalışmıtım, şimdi ise Kapsülleme konusunda farklı uygulamalar yaparak konuyu pekiştirelim
kapsulleme Yukarıdaki form tasarımını yapalım amacımız programımızda dikdörtgen isimli bir sınıf tanımlayıp bu sınıf üzerinden üretilen nesne ile alan hesaplaması yapacağız.
İlk olarak dikdörtgen için kısa ve uzun kenar,sonuc bilgilerini tutacak ve alan hesaplayan metot olan bir sınıf oluşturalım.

 class kapsulleme
        {
            public int kisakenar;
            public int uzunkenar;
            public int sonuc;
            public int alan(int a, int b)
            {
                kisakenar = a;
                uzunkenar = b;
                sonuc = a * b;
                return sonuc;
            }
        }

Şimdi de hesapla butonuna tıklayıp kapsülleme sınıfından bir nesne türetip hesaplama işlemini yapalım.

  kapsulleme dikdortgen = new kapsulleme();
            int a= Convert.ToInt32(textBox1.Text);
            int b= Convert.ToInt32(textBox2.Text);
            label2.Text ="İşlem Sonucu="+ Convert.ToString(dikdortgen.alan(a,b));

programı çalıştırdınız hesaplamalar güzel ama kullanıcı negatif bir değer girerse
kapsulleme1 sonuç gördüğünüz gibi negatif yada kodlarımıza erişen biri sonucu değiştirmek isterse

dikdortgen.sonuc = 5;
label2.Text = dikdortgen.sonuc.ToString();

ne yapacağız sonuçlar yanlış çıkıyor hep, işte tam bu anda yardımımıza kapsülleme yetişiyor hatırlayalım ne yapıyordu kapsülleme “Değişkenleri ve verileri hatalı kullanım ve dış etkenlerden koruyor” o zaman hemen sınıfımızı uygun hale getirelim kısa yolumuz vardı hatırlayalım değişkenin üzerinde sağ tıklayıp->Refactor->Encapsulate dememiz yeterli idi
kapsul bu işlemi üç değişken üzerinde de yapıp kodlarımızı aşağıdaki gibi düzenliyoruz

 class kapsulleme
        {
            private int kisakenar;

            public int Kisakenar
            {
                get { return kisakenar; }
                set
                {
                    if (value < 0)
                    {
                        kisakenar = Math.Abs(value);
                    }
                    else
                    {
                        kisakenar = value;
                    }
                }
            }//www.bilisimogretmeni.com
            private int uzunkenar;

            public int Uzunkenar
            {
                get { return uzunkenar; }
                set
                {                  
                    if (value < 0)
                    {
                        uzunkenar = Math.Abs(value);
                    }
                    else
                    {
                        uzunkenar = value;
                    }
                }
            }//www.bilisimogretmeni.com
            private int sonuc;

            public int Sonuc
            {
                get { return sonuc; }
           
            }
            public int alan(int a, int b)
            {
                sonuc = a * b;
                return sonuc;
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {//www.bilisimogretmeni.com
            kapsulleme dikdortgen = new kapsulleme();
            dikdortgen.Kisakenar = (Convert.ToInt32(textBox1.Text));
            dikdortgen.Uzunkenar = (Convert.ToInt32(textBox2.Text));
            label2.Text = "İşlem Sonucu=" + Convert.ToString(dikdortgen.alan(dikdortgen.Kisakenar, dikdortgen.Uzunkenar));
        
        }

ve sonuç artık negatif bir değer çıkamayacak ve Sonuc değişkenini de yalnızca okunabilir yaptığımız için dikdortgen.Sonuc = 5; gibi bir ifadeyle sonuç değiştirilemeyecek… Sonraki örnekte görüşmek üzere..
kapsulleme2

Bu İçeriğe Tepkin Ne Oldu?
  • 1
    ba_ar_l_
    Başarılı
  • 0
    gayet_yi
    Gayet İyi
  • 0
    te_ekk_rler
    Teşekkürler
  • 1
    anlamad_m
    Anlamadım
  • 0
    yetersiz
    Yetersiz
İlginizi Çekebilir
Subscribe
Bildir
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Yorum
Inline Feedbacks
View all comments