📘 7.4 – Bilgi Gizleme Örneği
🔹 Açıklama:
Bilgi gizleme (Information Hiding), nesne tabanlı programlamanın en önemli ilkelerinden biridir. Bu yaklaşımda amaç; sınıf içindeki verilerin dışarıdan doğrudan erişilmesini engelleyerek yalnızca izin verilen yollarla işlem yapılmasına olanak tanımaktır.
C# dilinde bu ilke, private değişkenler ve public get-set özellikleriyle hayata geçirilir.
Bilgi gizleme sayesinde:
- Kullanıcı ya da başka sınıflar tarafından sınıf içi veriler bozulamaz
- Kod yeniden kullanılabilir ve güvenli hale gelir
- Kod karmaşıklığı azaltılarak bağımlılık en aza indirilir
📍 Kullanım Alanları:
- Bankacılık sistemlerinde bakiye ve şifre gibi hassas verilerin korunması
- Eğitim uygulamalarında sınav puanlarının dışarıdan değiştirilmesini engelleme
- Ürün stok miktarlarının yalnızca sistem tarafından değiştirilebilmesi
- Web form uygulamalarında kullanıcı verilerinin kontrol altında tutulması
🎯 Kazanımlar:
- Bilginin kullanıcıdan nasıl saklandığını kavramak
- private erişim düzeyinin güvenlikteki rolünü öğrenmek
- Dışarıya yalnızca gerekli bilgilerin açılmasının önemini kavramak
- Form üzerinden alınan verileri bilgi gizleme ilkesiyle harmanlayarak kullanmak
🧪 7.4 – Bilgi Gizleme: Uygulamalı 5 Örnek
📌 Örnek 1: Banka Hesabında Bilgi Gizleme
🎯 Amaç:
Bakiyenin doğrudan erişime kapatılıp yalnızca işlem metodlarıyla kontrol edilmesi.
💻 Kod:
public class BankaHesabi
{
private double bakiye;
public void ParaYatir(double miktar)
{
if (miktar > 0)
bakiye += miktar;
}
public void ParaCek(double miktar)
{
if (miktar <= bakiye)
bakiye -= miktar;
}
public double BakiyeyiGoster()
{
return bakiye;
}
}
📝 Açıklama:
bakiye değişkenine doğrudan erişim yok. Yalnızca sınıf içindeki metodlarla kontrol sağlanır. Bu tam anlamıyla bilgi gizlemenin özüdür.
📌 Örnek 2: TC Kimlik Bilgisi Gizleme
🎯 Amaç:
Kullanıcının TCKN bilgisinin dışarıdan okunamaması ve sadece doğrulama ile atanması.
💻 Kod:
public class Vatandas
{
private string tckn;
public void TCKN_Ata(string deger)
{
if (deger.Length == 11)
tckn = deger;
}
public bool TCKN_Kontrol()
{
return !string.IsNullOrEmpty(tckn);
}
}
📝 Açıklama:
TC kimlik numarası dışarıdan okunamaz. Sadece doğru formatta girildiğinde saklanır.
📌 Örnek 3: Sınıf Dışı Müdahaleyi Engelleme
🎯 Amaç:
Bir sınıfın verilerine başka sınıflardan doğrudan erişimi engellemek.
💻 Kod:
public class Ogrenci
{
private int not;
public void NotAyarla(int deger)
{
if (deger >= 0 && deger <= 100)
not = deger;
}
public string NotDurumu()
{
return not >= 50 ? "Geçti" : "Kaldı";
}
}
📝 Açıklama:
not verisi sadece sınıf içinden işlenebilir. Dışarıdan değiştirme veya okuma yapılamaz.
📌 Örnek 4: Şifre Değiştirme ve Doğrulama
🎯 Amaç:
Şifre saklamak ve yalnızca doğrulama sonrası işlem yapmak.
💻 Kod:
public class Kullanici
{
private string sifre;
public void SifreDegistir(string eskiSifre, string yeniSifre)
{
if (sifre == eskiSifre && yeniSifre.Length >= 6)
sifre = yeniSifre;
}
public bool GirisKontrol(string girisSifresi)
{
return sifre == girisSifresi;
}
}
📝 Açıklama:
Şifre ne okunabilir ne de doğrudan değiştirilebilir. Tüm kontrol sınıf içinde kalır.
📌 Örnek 5: Form Üzerinden Bilgi Gizleme Senaryosu
🎨 Form Elemanları:
- txtIsim, txtMaas, btnKaydet, lblSonuc
🎯 Amaç:
Maaş bilgisi kullanıcıya gösterilmeden işlenir.
💻 Kod:
public class Calisan
{
private double maas;
public void MaasAyarla(double deger)
{
if (deger >= 8500)
maas = deger;
}
public string Bilgi()
{
return "Maaş başarıyla kaydedildi.";
}
}
// Form tarafı
private void btnKaydet_Click(object sender, EventArgs e)
{
Calisan c = new Calisan();
c.MaasAyarla(Convert.ToDouble(txtMaas.Text));
lblSonuc.Text = c.Bilgi();
}
📝 Açıklama:
Form üzerinden maaş girilir, ama bu bilgi hiçbir zaman doğrudan gösterilmez. Yalnızca sınıf içindeki işlem tamamlandığında kullanıcıya bilgilendirme yapılır.
✅ Özet:
Bu örneklerle öğrenciler artık:
- Veri saklamanın sadece erişimi engellemekten ibaret olmadığını
- Bilginin sadece gereken yerde işlenip sunulmasının güvenli yazılım açısından önemini
- Gerçek hayatta gizlenmesi gereken verilere nasıl davranılması gerektiğini öğrendiler.






