7.1 – Kapsülleme Nedir? (Encapsulation)


📘 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

Leave a Reply