24 Nisan 2012 Salı

C#'da OOP - 2 Encapsulation

Merhaba arkadaşlar .Bu yazımda OOP'de Encapsulation işlemlerine değişnicem.Başlamadan önce birkaç durumdan bahsetmek istiyorum.Önceki yazımda  C#'da OOP - 1. Field diye birşeyden bahsetmiştim. Bu yazımdada Fieldlari kapsüllemekten bahsedicem. Kapsülleme işlemini yapan kısma Property denir.Bunu şöyle düşünebilirsiniz.Bir anne var birde çocuğu.Anne çocuğuna zarar gelmesini tabiki istemez.Senaryoyu şöyle canlandıralım gözümüzde .Bir bebek var ortada bir anne işte anne çocuğuna mama yediricek. Anne bu mamayı çocuğuna yedirmeden önce mamanın özelliklerini araştırır . Uygunsa çocuğuna mamayı yedirir.Kapsüllemede aynen böyle bir durumdur arkadaşlar.Fielda değer atamadan önce gelen değeri kontrol edip vericeğimiz koşula göre değer aktarma işlemini güvenli olarak yapmamızı sağlar. Burda sadece değerleri kontrol etmeyiz üstünde işlemler de yapabiliriz.  C#'da OOP - 1 yazımdaki örneği kullanarak devam edelim arkadaşlar.



    public class Insan
    {
        private string ad;
        private  string soyad;
        private  DateTime dogumtarihi;


        public string Ad { get; set; }
        public string Soyad { get; set; }
        public DateTime DogumTarihi { get; set; }
    }

Örneğimizde field alanlarını private yaptık.Burdaki amacımız dışarıdan yani Insan Class'ı dışından erişimi fieldlarımıza kesmektir yani erişimi engelliyoruz.Propertylerin get ve set methotları vardır.set methotu veriyi almamıza ve get methotuda veriyi göndermemize yarar bu methotlar içerisinde kotrollerimizi uygulayabiliriz. Mesela dışarıdan gelen doğum değerini kontrol edelim.



         public DateTime DogumTarihi 
         {
            get
            {
                return  dogumtarihi ;
            }
            set
            {
                if (value < DateTime.Now)
                {
                     dogumtarihi  = value;
                }
            }
         }


Örneğimizde arkadaşlar girilen yaş değeri üzerinde encapsulation uyguladık.Burdaki amaç örnek olarka 01.01.2010 yılındaysanız ve girilen doğum tarihi 01.02.2010 ise bunu yakalamak yani hatalı girişi engellemek.

Bir örnek daha yapalım ve bu sefer dışarıdan Ad değerinin tamamını string bir fonksyon kullanarak büyük harflere çevirelim.


        public string Ad
        {
            get
            {  
                return ad.ToUpper();
            }
            set
            {
                ad = value;
            }

        }



Örneklerdende anlaşılacağı üzere get ve set methotlarının kullanımı böyledir arkadaşlar. Property yapısı böyle işlemektir.Umarım yardımcı olabilmişimdir.





Hiç yorum yok:

Yorum Gönder