Merhaba, C# Class Encapsulation (Kapsülleme Get, Set Kullanımı ) yazım ile c# eğitim setime devam ediyorum. Bu yazımızda C# Class Encapsulation yani C# Kapsülleme konusunda değineceğiz. C# Kapsülleme kavramı Object Oriented Programming (OOP) (Nesne Yönelimli Programlama) konusunun 4 temel prensibinden birisidir. Bu noktada değişken kullanımından biraz çıkıp prop yeni properties kullanımına bakacağız.
OOP Nedir?
Object Oriented Programming (OOP), Nesne Yönelimli Programlama (NYP) nedir sorusunda ne kısa cevap, gerçek hayattaki her şeyin bilgisayar ortamında tanımlanması olarak cevap verebiliriz. Örneğin, Motorlu araçların ortak özelliklerini bir sınıfta tanımladık. Motorlu araçlar sınıfında, havada, denizde ve karada giden motorlu araçlar sınıflarını tanımladık. Karada giden araçlar sınıfında Otomobilleri tanımladık. Otomobiller sınıfında X bir markayı tanımladık. Her sınıf bir üst kategorisinin sınıfından miras alır. Böylece XX Markası dediğimizde o sınıfın, karada giden motorlu bir taşıt olduğunu biliriz. İşte tüm bu yapıya OOP Türkçe ifadesi ile NYP deriz.
Daha detaylı bilgi için bkz Wikipedia.
C# Class Encapsulation (Kapsülleme Get, Set Kullanımı )
C# Class Encapsulation Nedir? C# Kapsülleme Nedir?
C# Class Encapsulation yani C# Kapsülleme , private (özel) olarak tanımladığımız değişkenleri public hale getirmemizi ve istediğimiz şekilde kullanabilmemizi sağlayan işlemdir. Ancak private olan değişkenimiz hala private olacak. Yani bir değişkenimiz hem private hem public olacak. Bu sayede de rastgele veri atanmasının önüne geçebileceğiz.
Burada dikkat edilmesi gereken kısım şudur. Değişkenimiz Private ancak properties yani özelliğimiz publictir.
Açıklama çok açıklayıcı olmamış olabilir ama kodları gördüğünüzde anlayacaksınız. Bu dersi bir önceki ders olan C# Inheritance – C# Miras Kavramı dersimde verdiğim proje üzerinde anlatacağım. Bu derste işlediğimiz konu da o proje içerisinde olacak. O yüzden o dersteki projeyi indirebilirsiniz. Tabi bu derste de o projenin linkini vereceğim.
Kısacası, dışarıdan direk erişilemeyen ve rastgele değer girilmesini engelleyebildiğimiz bir yöntemdir.
C# Class Encapsulation (Kapsülleme Get, Set Kullanımı)
Önceki dersimizde, Person sınıfından türetilen Student, Teacher ve Worker sınıflarımız vardı ve bu sınıflarımızda, bu sınıfların kendilerine özel değişkenler vardı. Şimdi o değişkenlere Encapsulation işlemi uygulayacağız.
private string Unvan; //Teacher sınıfında kullanılmak üzere Unvan adında bir değişken tanımladık.
Bu değişkenimiz Teacher sınıfında yer alan ve Teacher sınıfına özel olan değişkenimiz. Şimdi bu değişkenimize Encapsulation işlemi uygulayalım.
Şimdi bu değişkenimizi düzenleyeceğiz ve bu değişkenimiz için bir prop ekleyeceğiz.
// //Encapsulation // private string _Unvan; //Teacher sınıfında kullanılmak üzere Unvan adında bir değişken tanımladık. public string Unvan { //get ile karşıma çıkmasını istediğim değeri tanımlıyorum. get { return _Unvan; } //Unvan boş gerilse bile düzenleme yapıyorum. set { if (_Unvan is null) _Unvan = "Öğretmen"; else _Unvan = value; } } // //Encapsulation //
İlk tanımladığım Unvan değişkeninin başına _ (alt tre) ekliyorum ve eski adı ile bir prop tanımlıyorum. Eğer Unvan bilgisi boş girildi ise bunu değiştirip Öğretmen yapmasını istiyorum. Eğer boş değilse de ne girildiyse o kullanılsın istiyorum.
Bu şekilde bu sınıftaki Unvan değişkenine Encapsulation işlemi uygulamış oluyorum. Şimdi bir değişken daha ekleyeyim. Bu da göreve başlama tarihi olsun.
Bu değişkene mantıklı ve ya mantıksız bir koşul ekleyelim. Eğer kayıt edilmek istenen öğretmenin göreve başlama yılı, doğum yılından 20 yıl sonrasından daha küçükse, yani öğretmenin 20 yaşından daha erken sürede öğretmen olduğunu bilgisi girilmiş ise bir uyarı verdirelim.
// //Encapsulation // private DateTime _GoreveBaslamaTarih; //Teacher sınıfında kullanılmak üzere Unvan adında bir değişken tanımladık. public DateTime GoreveBaslamaTarih { //get ile karşıma çıkmasını istediğim değeri tanımlıyorum. get { return _GoreveBaslamaTarih; } //Unvan boş gerilse bile düzenleme yapıyorum. set { if (_GoreveBaslamaTarih.Year < this.DogumTarihi.AddYears(20).Year) MessageBox.Show("Hatalı Göreve Başlama Tarih Bilgisi"); else _GoreveBaslamaTarih = value; } } // //Encapsulation //
Burada gördüğünüz gibi, kayıt işlemlerinde kullanılacak olan değişken _ (alt tre) ile başalayan değişkendir. Ama dışarıdan veril girileceği noktada eklediğimi prop’u kullanıyoruz.
Yani dışarıdan girilen veri önce prop içerisinde geliyor. İstediğimiz koşullar kontrol ediliyor. Uyuyorsa sıkıntı yok, uymuyorsa gerekli düzenlemeleri yapıyoruz ve veri tabanına kayıt esnasında kullanacağımız değişkene atamasını yapıyoruz.
Prop’ları incelerseniz, içeride sınıfımızdaki private olan değişkene veri ataması yapıyoruz.
C# Class Encapsulation Nedir? C# Kapsülleme Nedir? sorularını böylece cevaplamış olduk. Umarım faydalı olmuştur.
C# Class Encapsulation (Kapsülleme Get, Set Kullanımı) yazımda bu kadar arkadaşlar. Umarım C# Encapsulation kavramını güzelce açıklayabilmişimdir.
Bana destek olmak isterseniz, iletişim sayfamda verdiğim sosyal medya hesaplarımı takip edebilirsiniz.
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız. Derslerime özel olarak hazırladığım Github Projeme bu bağlantıdan ulaşabilirsiniz… Bu ders için hazırlanan projenin kodlarına buraya tıklayarak ulaşabilirsiniz.
Bu yazı, sitemdeki 429. yazıdır…
Sağlıcakla ve takipte kalın. ;)