C# Dersleri 71 - Encapsulation (Kapsülleme)

C# Dersleri 71 - Encapsulation (Kapsülleme)


C# Encapsulation (Kapsülleme)

Encapsulation (Kapsülleme), Nesne Yönelimli Programlama'nın (OOP) temel ilkelerinden biridir. Kapsülleme, bir sınıfın verilerini (özelliklerini) ve bu verilere erişimi sağlayan metotları bir arada tutarak, verilerin dışarıdan doğrudan erişimini engelleyen bir tekniktir. Bu teknik, verilerin yalnızca kontrollü bir şekilde değiştirilmesini sağlar.

Encapsulation Nedir?

Kapsülleme, sınıf üyelerini (özellikler ve metotlar) dış müdahalelere karşı koruma altına alır. Verilere erişim, getter ve setter metotları veya get ve set erişimcileri aracılığıyla sağlanır. Böylece:

  • Verilere doğrudan erişim kısıtlanır.
  • Veri bütünlüğü sağlanır.
  • Kontrollü bir şekilde veri okuma ve yazma işlemi gerçekleştirilir.

Kapsülleme ile İlgili Temel Kavramlar

  • Private: Özelliklerin yalnızca sınıf içinde erişilebilir olmasını sağlar.
  • Public: Özelliklere ve metotlara dışarıdan erişim sağlar.
  • Property: Özel alanlara (fields) kontrollü erişim sağlamak için kullanılır.

Encapsulation ile Sınıf Tanımı

Aşağıda bir sınıfın kapsülleme prensibine uygun olarak nasıl tanımlandığını görebilirsiniz:

using System;

class Person
{
    // Private alanlar
    private string name;
    private int age;

    // Public özellikler (Properties) aracılığıyla kontrollü erişim
    public string Name
    {
        get { return name; }
        set
        {
            if (!string.IsNullOrEmpty(value))
            {
                name = value;
            }
            else
            {
                Console.WriteLine("Ad boş bırakılamaz!");
            }
        }
    }

    public int Age
    {
        get { return age; }
        set
        {
            if (value > 0)
            {
                age = value;
            }
            else
            {
                Console.WriteLine("Yaş pozitif bir sayı olmalıdır!");
            }
        }
    }
}

Kullanım Örneği

Aşağıdaki örnek, Person sınıfını nasıl kullanacağınızı gösterir:

class Program
{
    static void Main(string[] args)
    {
        Person person = new Person();

        // Ad atama ve okuma
        person.Name = "Ali Veli";
        Console.WriteLine($"Ad: {person.Name}");

        // Geçerli yaş atama
        person.Age = 25;
        Console.WriteLine($"Yaş: {person.Age}");

        // Geçersiz yaş atama
        person.Age = -5; // Uyarı mesajı verecek

        // Geçersiz ad atama
        person.Name = ""; // Uyarı mesajı verecek
    }
}

Programın Çıktısı

Ad: Ali Veli
Yaş: 25
Yaş pozitif bir sayı olmalıdır!
Ad boş bırakılamaz!

Getter ve Setter Kullanımı

Encapsulation için getter ve setter metotları da kullanılabilir:

class Person
{
    private string name;

    // Getter metodu
    public string GetName()
    {
        return name;
    }

    // Setter metodu
    public void SetName(string value)
    {
        if (!string.IsNullOrEmpty(value))
        {
            name = value;
        }
        else
        {
            Console.WriteLine("Ad boş bırakılamaz!");
        }
    }
}

Kapsüllemenin Avantajları

  • Veri Güvenliği: Verilere dışarıdan doğrudan erişim engellenir.
  • Veri Doğruluğu: Verilere erişim ve değişiklik belirli kurallara bağlanır.
  • Modülerlik: Sınıflar daha düzenli ve okunabilir hale gelir.
  • Değişim Kontrolü: Özelliklerin nasıl değiştirileceği üzerinde tam kontrol sağlanır.

Gerçek Hayatta Kapsülleme Kullanımı

Kapsülleme, gerçek dünya uygulamalarında sıkça kullanılır. Örneğin:

  • Banka Hesabı: Kullanıcının hesap bakiyesi, doğrudan erişim yerine yalnızca belirli işlemlerle değiştirilebilir.
  • Veri Doğrulama: Kullanıcı girişleri doğrulanmadan sisteme eklenmez.
  • Loglama: Özel alanlara erişim ve değişiklikler kayıt altına alınabilir.

Sonuç

Encapsulation (kapsülleme), C# Nesne Yönelimli Programlama'nın (OOP) önemli bir ilkesidir. Verileri gizlemek ve bu verilere erişimi kontrollü bir şekilde sağlamak, kodun güvenliğini ve düzenini artırır. Kapsülleme, büyük ve karmaşık projelerde kodun okunabilirliğini ve sürdürülebilirliğini sağlar.

Bu içeriği beğendiyseniz paylaşarak destek olabilirsiniz!


Eğitim İçeriği

Eğitim C# Dersleri
Kategori Programlama Dili
Ders Adeti 80 Ders
Dil Türkçe
Güncelleme 04/2024
  • HTML Dersleri

    HTML Dersleri Sıfırdan İleri Seviyeye

    Kategori Web Programlama
    Ders Süresi 19 Ders
    Dil Türkçe
    Güncelleme 12/2020
    Derse Başla
  • Java Dersleri

    Java Dersleri ve Nesne Yönelimli Programlama

    Kategori Programlama Dili
    Ders Süresi 125 Ders
    Dil Türkçe
    Güncelleme 09/2020
    Derse Başla
  • CSS Dersleri

    CSS Dersleri Başlangıçtan İleri Seviyeye

    Kategori Web Programlama
    Ders Süresi 49 Ders
    Dil Türkçe
    Güncelleme 10/2021
    Derse Başla
  • Java Örnek Projeler

    Java Örnek Projeler

    Kategori Programlama Dili
    Ders Süresi 20 Ders
    Dil Türkçe
    Güncelleme 10/2022
    Derse Başla
  • C# Dersleri

    C# Dersleri ve Nesne Yönelimli Programlama

    Kategori Programlama Dili
    Ders Süresi 100 Ders
    Dil Türkçe
    Güncelleme 04/2024
    Derse Başla