📘 7.1 – Kapsülleme Nedir? (Encapsulation)
🔹 Açıklama
Kapsülleme (Encapsulation), nesne tabanlı programlamanın temel taşlarından biridir. Bir sınıfın verilerini (field) dış müdahalelere kapatarak yalnızca kontrollü bir şekilde erişilmesini sağlar. Bu yapı sayesinde:
- Veriye doğrudan erişim engellenir
- Hatalı veya izinsiz veri değişiklikleri önlenir
- Kod daha güvenli ve sürdürülebilir hale gelir
- Dışarıdan sınıfa erişim kontrollü olur (get/set)
Windows Forms uygulamalarında kapsülleme sayesinde:
- Formdan alınan veriler nesnelerde saklanır
- Kullanıcının doğrudan sınıf içi değişkenleri değiştirmesi engellenir
- Giriş kontrolleri (validation) sınıf içinde tanımlanarak güvenli veri işlenir
📍 Kullanım Alanları:
- Öğrenci, müşteri, ürün gibi verilerin sınıflar aracılığıyla yönetilmesi
- Sınıf dışından erişim sınırlandırılması gereken bilgiler (TCKN, şifre vb.)
- Formdan alınan kullanıcı girişlerinin kontrol altında tutulması
- Geliştirilebilir, güvenli ve sürdürülebilir yazılım tasarımı
🎯 Kazanımlar:
- private, public kavramlarını netleştirme
- property (özellik) mantığını kavrama
- Nesnelerle çalışırken veriye erişim kurallarını öğrenme
- Daha temiz, modüler ve güvenli C# kodu yazma
- Form verilerini nesnelere aktarma alışkanlığı kazanma
🧪 7.1 – Kapsülleme Nedir? Uygulamalı 5 Örnek
📌 Örnek 1: Doğrudan Erişim Engellenen Alan
🎯 Amaç:
Bir sınıftaki alanın dışarıdan doğrudan erişime kapalı olduğunu göstermek.
💻 Kod:
public class Ogrenci
{
private string adSoyad; // dışarıdan erişilemez
}
📝 Açıklama:
adSoyad değişkeni private tanımlandığı için sadece sınıf içinden erişilebilir. Bu, kapsülleme için temel bir adımdır.
📌 Örnek 2: Get-Set Mantığıyla Veri Okuma ve Yazma
🎯 Amaç:
Bir private alan için public özellik (property) tanımlayarak kontrollü erişim sağlamak.
💻 Kod:
public class Ogrenci
{
private string adSoyad;
public string AdSoyad
{
get { return adSoyad; }
set { adSoyad = value; }
}
}
📝 Açıklama:
Artık dışarıdan ogr.AdSoyad = “Ali Yılmaz”; gibi atama yapılabilir ama bu işlem sınıf içindeki set bloğuyla kontrol altındadır.
📌 Örnek 3: Sadece Okunabilir Özellik (readonly property)
🎯 Amaç:
Verinin dışarıdan sadece okunmasını ama değiştirilememesini sağlamak.
💻 Kod:
public class Arac
{
private string plaka = "34ABC123";
public string Plaka
{
get { return plaka; }
}
}
📝 Açıklama:
Plaka değeri sadece okunabilir, dışarıdan değiştirilemez. Bu, bazı sabit bilgiler için ideal bir uygulamadır.
📌 Örnek 4: Giriş Kontrolü ile Veri Atama
🎯 Amaç:
Set bloğu içinde şart konularak veri girişinin doğruluğunu kontrol etmek.
💻 Kod:
public class Kullanici
{
private string parola;
public string Parola
{
get { return parola; }
set
{
if (value.Length >= 6)
parola = value;
else
parola = "geçersiz";
}
}
}
📝 Açıklama:
Kapsülleme sayesinde dışarıdan gelen veriye doğrudan değil, denetlenmiş şekilde erişim sağlanır.
📌 Örnek 5: Kapsülleme ile Nesne Kullanımı (Form üzerinden)
🎯 Amaç:
Bir sınıfın özelliklerine Form üzerinden değer atamak ve okumak.
🎨 Form Elemanları:
- txtAd, btnKaydet, lblBilgi
💻 Kod:
public class Ogrenci
{
private string ad;
public string Ad
{
get { return ad; }
set { ad = value; }
}
}
// Form tarafı:
private void btnKaydet_Click(object sender, EventArgs e)
{
Ogrenci ogr = new Ogrenci();
ogr.Ad = txtAd.Text;
lblBilgi.Text = "Öğrenci Adı: " + ogr.Ad;
}
📝 Açıklama:
Formdan alınan veri, doğrudan değil property aracılığıyla nesneye aktarılır. Bu sayede kontrol mekanizması korunur.
✅ Özet:
Bu örneklerle öğrenciler:
- Doğrudan erişimi kapatarak güvenli yapı kurmayı
- get-set kavramının önemini
- Giriş kontrollerini sınıfa taşıyarak kod kalitesini artırmayı
- Form verilerini kapsüllenmiş nesnelerle işlemeyi öğrenmiş oldu






