15 Mayıs 2010 Cumartesi

C#'da Encapsulation Kavrami

Kisaca encapsulation icin, nesneler arasi etkilesimi kontrol altina almak diyebiliriz. Birbirleriyle olan iliskilerini korumak da diyebiliriz aslinda. Ornek uzerinden gidersek daha rahat anlatabiliriz durumu. Programimizda basit olarak bir yas sinifi olusturup bunun nesnesini cikarttiktan sonra ornegin kullanicinin yasi 200 girilmis olsun, buna izin vermememiz gerekir saglikli bir kod yazmak istersek. Bunun icin bizim yas sinifinda property yazip yas ozelligini koruma altina almamiz gerekir. Kisaca kodlarla da anlatmak istersek;

private byte _yas;
public byte Yas
{
get { return _yas; } //propertiesler arka planda metot gibi yaziliyor. programi kolaylastiriyor.
set {
if (value > 18 && value <99)
_yas = value;
else
Console.WriteLine("Hata"); } }


Yukarida da gordugumuz gibi oncelikle tanimlamayi private erisim belirleyicisiyle yapiyoruz. Isimlendirme kurali cercevesinde, degisken isimlerini '_' ile baslayip, kucuk harfle devam ediyoruz. Her private metot gibi bu degiskenlerin de get set'lerini yazip kontrolumuzu ve degerimizi aliyoruz. Iste bu get set metotlarina properties'i diyecegiz. Burada set ile yas degerinin 18 ile 99 degeri arasinda olmasini aksi taktirde hata mesajini yazdirmasini isteyecegiz. Properties ile ilgili bilmemiz gereken son sey de, arka planda metot gibi davranmalari. Ki IL Disassambler ile IL kodlarini incelersek yazdigimiz properties'in metot olarak code'larda bulundugunu goruruz. Aslinda basitce dusunursek arka planda yaptigi is, metot gibi ama bizim amacimiz da, ornegin kdv oranini hesaplarken, bunun icin ozel metot yapip ona gorev vermektense, Kdv sinifinin ozelligi gibi gorev yuklemek. Bu da birden fazla urun icin islem yapacagimizda ayri ayri fonksiyon calistirip onlara deger gondermektense, o sinifin bir ozelligi gibi davranip sonucu hesaplatmasini istememiz, daha profesyonel bir kodlama saglayacaktir programimiza.

*Ipucu: degiskenlerimizi yazdiktan sonra properties'ini elle yazmayip kisaca klavye kisayollarindan visual studio'nun yazmasini istiyorsak, klavyeden imlecimiz degiskenimizin yanindayken ctrl+R+E dersek, sevgili ide'miz bizim icin tum properties'i yazmis olacak. Hem beynimiz, hem ellerimiz yorulmamis olacak boylece. ;)

0 yorum: