🧩 13.5 – Katmanlı Projede Dosya İşlemi Entegresi
🎯
Amaç:
Bu başlık altında öğrenci, dosya işlemlerini Entity – Business – UI şeklinde ayrılmış bir katmanlı mimari yapıya entegre etmeyi öğrenir.
Böylece:
- Veri saklama işlemleri formun içinde değil, business katmanında tanımlanır.
- Veriler dosyaya iş katmanında yazılır ya da oradan okunur.
- UI sadece bu iş katmanını çağırır.
📁
Katman Yapısı:
ProjeAdı
│
├── Entity
│ └── Not.cs
│
├── Business
│ └── NotManager.cs
│
├── UI (Form)
└── Form1.cs
🧱
Entity – Not.cs
public class Not
{
public string Baslik { get; set; }
public string Icerik { get; set; }
public DateTime Tarih { get; set; }
}
🧱
Business – NotManager.cs (Dosya ile Entegre)
using System.IO;
public class NotManager
{
private static readonly string dosyaYolu = "notlar.txt";
public static void Kaydet(Not yeniNot)
{
if (!File.Exists(dosyaYolu))
File.Create(dosyaYolu).Close();
using (StreamWriter sw = new StreamWriter(dosyaYolu, true))
{
sw.WriteLine($"{yeniNot.Tarih};{yeniNot.Baslik};{yeniNot.Icerik}");
}
}
public static List<Not> Listele()
{
List<Not> notlar = new();
if (!File.Exists(dosyaYolu))
return notlar;
using (StreamReader sr = new StreamReader(dosyaYolu))
{
string satir;
while ((satir = sr.ReadLine()) != null)
{
var parcalar = satir.Split(';');
if (parcalar.Length == 3)
{
notlar.Add(new Not
{
Tarih = DateTime.Parse(parcalar[0]),
Baslik = parcalar[1],
Icerik = parcalar[2]
});
}
}
}
return notlar;
}
}
🧱
UI – Form1.cs (Business sınıfı ile dosya işleme)
✅ Not Ekleme:
private void btnKaydet_Click(object sender, EventArgs e)
{
Not yeniNot = new()
{
Baslik = txtBaslik.Text,
Icerik = txtIcerik.Text,
Tarih = DateTime.Now
};
NotManager.Kaydet(yeniNot);
MessageBox.Show("Not kaydedildi.");
}
✅ Listeleme:
private void btnListele_Click(object sender, EventArgs e)
{
lstNotlar.Items.Clear();
var notlar = NotManager.Listele();
foreach (var not in notlar)
{
lstNotlar.Items.Add($"{not.Tarih} - {not.Baslik}");
}
}
💡
Bu Yapının Sağladığı Faydalar:
| Fayda | Açıklama |
|---|---|
| Ayrılmış sorumluluk | UI sadece kullanıcı arayüzüyle ilgilenir, dosya işleri işlemler Business’a devredilir. |
| Kod tekrarını önler | Dosya işlemleri tek merkezde (NotManager) toplandığı için tekrar yazılmaz. |
| Bakımı kolay | Dosya yapısı değişirse sadece Business katmanı güncellenir. |
| Test edilebilirlik | UI bağımsız olarak iş mantığı test edilebilir hale gelir. |
🎯
Sonuç:
Bu örnekle öğrenciler:
- Hem katmanlı yapı hem de dosya işlemleri disiplinine hâkim olur
- Dosya işlemini büyük uygulamalara taşımayı öğrenir
- Daha profesyonel ve sürdürülebilir yazılım yazma pratiği kazanır






