7.2 – private Değişken, public Özellik Kullanımı


📘 7.2 – private Değişken, public Özellik Kullanımı


🔹 Açıklama:

Nesne tabanlı programlamada en temel güvenlik ve yapılandırma tekniklerinden biri, sınıf içindeki verileri private anahtar sözcüğüyle dış erişime kapatarak, bu verilere yalnızca public özellikler (property) aracılığıyla ulaşmaktır. Bu sayede:

  • Değişkenler doğrudan dışarıdan değiştirilemez
  • Verilere kontrollü, doğrulanmış erişim sağlanır
  • Proje büyüdükçe veri akışı denetlenebilir olur

Windows Forms uygulamalarında bu yapı, formdan alınan verilerin sınıflarda saklanması, gösterilmesi veya işlenmesi gibi durumlarda kritik rol oynar.


📍 Kullanım Alanları:

  • Kullanıcı adı, şifre gibi güvenli verilerin saklanması
  • Form verilerinin nesne içinde tutulması
  • Kontrollerle veri doğrulama işlemleri
  • Nesneye dayalı veri modelleri (Model katmanı)

🎯 Kazanımlar:

  • private değişken nedir, neden kullanılır öğrenilir
  • public özellik aracılığıyla veri erişimi pratiği yapılır
  • Formdan alınan verileri nesnelerle eşleştirme alışkanlığı gelişir
  • Geliştirilebilir ve hataya dayanıklı yazılım temelleri atılır

🧪 7.2 – private Değişken, public Özellik: Uygulamalı 5 Örnek


📌 Örnek 1: Temel Kullanım

🎯 Amaç:

Bir private değişkenin yalnızca public özellik üzerinden erişilebildiğini göstermek.

💻 Kod:

public class Ogrenci
{
    private string ad;  // dışarıdan erişilemez

    public string Ad    // dışarıdan sadece bu property ile erişilir
    {
        get { return ad; }
        set { ad = value; }
    }
}

📝 Açıklama:

ad değişkeni doğrudan erişilemez. ogr.Ad = “Ahmet” gibi atamalar yalnızca Ad özelliği üzerinden yapılabilir.


📌 Örnek 2: Sayısal Veri Üzerinde İşlem

🎯 Amaç:

Kullanıcının yaşını güvenli biçimde saklamak.

💻 Kod:

public class Kisi
{
    private int yas;

    public int Yas
    {
        get { return yas; }
        set
        {
            if (value >= 0 && value <= 120)
                yas = value;
            else
                yas = 0; // geçersiz yaş kontrolü
        }
    }
}

📝 Açıklama:

Yaş bilgisi mantıklı sınırlar dışında girildiğinde değer kabul edilmez. Giriş kontrolü set bloğuna alınmıştır.


📌 Örnek 3: Form Üzerinden Kullanım

🎯 Amaç:

Formda girilen ad-soyad bilgisinin private alanda saklanması.

🎨 Form Elemanları:

  • txtAdSoyad (TextBox)
  • btnKaydet, lblDurum

💻 Kod:

public class Kullanici
{
    private string adSoyad;

    public string AdSoyad
    {
        get { return adSoyad; }
        set { adSoyad = value.Trim(); }
    }
}

// Form tarafı
private void btnKaydet_Click(object sender, EventArgs e)
{
    Kullanici k = new Kullanici();
    k.AdSoyad = txtAdSoyad.Text;

    lblDurum.Text = "Kayıt edildi: " + k.AdSoyad;
}

📝 Açıklama:

Formdan alınan veri doğrudan değil, property üzerinden nesneye atanır.


📌 Örnek 4: Salt Okunabilir Veriler

🎯 Amaç:

Dışarıdan değiştirilemeyen, sadece okunabilen bilgi tanımlamak.

💻 Kod:

public class Sistem
{
    private readonly string sistemVersiyon = "1.0.0";

    public string Versiyon
    {
        get { return sistemVersiyon; }
    }
}

📝 Açıklama:

Versiyon bilgisi yalnızca okunabilir; dışarıdan set edilemez. Sistem bilgileri gibi sabit veriler için idealdir.


📌 Örnek 5: Birden Fazla Değerin Kontrolü

🎯 Amaç:

Bir nesne içinde birden fazla private alanın farklı özelliklerle kontrol edilmesi.

💻 Kod:

public class Araba
{
    private string marka;
    private int modelYili;

    public string Marka
    {
        get { return marka; }
        set
        {
            if (!string.IsNullOrEmpty(value))
                marka = value;
        }
    }

    public int ModelYili
    {
        get { return modelYili; }
        set
        {
            if (value >= 1990 && value <= DateTime.Now.Year)
                modelYili = value;
        }
    }
}

📝 Açıklama:

Her alan, kendi özelliği içinde kontrol edilerek hem güvenlik hem doğruluk sağlanır.


✅ Özet:

Bu örneklerle öğrenciler artık:

  • private alanların dış müdahaleye nasıl kapatıldığını
  • public özelliklerin veri kontrolü için nasıl kullanıldığını
  • Form üzerindeki kullanıcı girdilerini nesneye güvenli şekilde aktarmayı
  • Sınıfları sadece veri tutan değil, veriyi koruyan yapılar olarak görmeyi öğrendi

Leave a Reply