C# örneklerimize kapsülleme konusu ile devam ediyoruz şimdiki örneğimiz de emlak programında olması gereken ev nesnesi üzerinde tanımlanan Alan,Semt,KatNo,Odasayisi bilgileri tutacak bir nesne üzerinden kapsülleme örneği yapacağız kodlar arasında açıklama satırları mevcut kodlarımız ve ekran görüntüsü aşağıdadır.
Programda Alan bilgisi negatif değer tanımlanırsa c: sürücünde bir log dosyası oluşturuluyor ve meydana gelen hatayı gösteriyor.
Ev sınıfı
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace kapsul{ public class Ev // Class Libary projesi. Çıktısı dll dosyasıdır. İstenilen projede add reference diyerek kullanılabilir. { // hiyerarşi namespace, sınıf, metod //field ları kapsüllemek için field e (örneğin semt in üzerine) sağ tıklayıp refactor sonra encapsuolate field seçeneği ile otomatik oluşturabilir. //Yada klavyeden control + r + e tuş kombinasyonları//www.bilisimogretmeni.com private string semt; public string Semt // Control + r + e kısayolu kullanarak semt alanını kapsülledik { get { return semt; } set { semt = value; } } private int katno; public int Katno // Control + r + e kısayolu kullanarak Katno alanını kapsülledik { get { return katno; } set { katno = value; } } private int odasayisi; public int Odasayisi // Control + r + e kısayolu kullanarak Odasayisi alanını kapsülledik { get { return odasayisi; } set { odasayisi = value; } } private double alan; // Control + r + e kısayolu kullanarak alan alanını kapsülledik public double Alan // privare double alan field nın properties i //www.bilisimogretmeni.com { get { return alan; } set // Burada sadece değerleri kontrol etmedik. Şart deyimleri ile loglama işlemlerinide yaptık { if (value < 0) { // FileMode.Append eğer gösterilen dizinde dosya yoksa hata verir. Dosyayı açar üzerine yazar //OpenOrCreate olursa her seferinde aynı dosyayı yolu gösterilen dizine üretir. FileInfo fi = new FileInfo("c:/loglar.txt");//www.bilisimogretmeni.com FileStream fs; if (fi.Exists) // Eğer dosya daha önce oluşmuşsa append ile aç { fs = new FileStream("c:/loglar.txt", FileMode.Append); } else // eğer açılmamışsa dosya yazılan dizine verilen isim ve türde dosya oluştur. { fs = new FileStream("c:/loglar.txt", FileMode.Create); } StreamWriter sw = new StreamWriter(fs); sw.WriteLine("Alan bilgisi " + DateTime.Now + " tarihinde hatalı girildi. Girilen değer: " + value); sw.Flush(); fs.Close(); } alan = Math.Abs(value); // mutlak değer fonksiyonu ile değerler pozitif yapılıyor } } public string EvBilgileriniGetir() // Dışarıya yani çağrıldığı yere biçimlenmiş string olarak ev bilgilerini gönderen metod { return string.Format("Kat No : {0} \n Oda Sayisi: {0} \n Semt: {2} \n Alan: {3}", katno, odasayisi, semt, alan); } } }
Programın ana bloğü
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace kapsul { class Program { static void Main(string[] args) { Ev evim = new Ev(); // ev class ından yeni evim isminde türetiyoruz. //Ev classının elemanlarına değer atıyoruz. evim.Alan = -85; // burada -85 şeklinde negatif bir değer girseydik kapsülleme özelliği sayesinde //bize mutlak değerini alıp o şekilde değerini getirecekti. evim.Semt = "Isparta-Cunur"; evim.Katno = 5; evim.Odasayisi = 3; Console.WriteLine(evim.EvBilgileriniGetir()); // EvBilgileriniGetir metodu string döndürdüğü için Console.WriteLine metodu ile kullanılması gerekir. Console.ReadKey(); } } }
program kodları mustafa erdogmus‘un sitesinden alınmıştır..