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.