C# Encapsulation

C# Encapsulation

C#'da encapsulation, bir nesnenin durumunu (fields) ve davranışlarını (methods) bir arada tutarak dışarıdan erişime kapatma ve sadece belirlenen yollarla erişilmesine izin verme işlemidir. Bu, nesnenin iç yapısının gizlenmesini ve sadece belirli bir arayüz üzerinden etkileşimde bulunulmasını sağlar. Encapsulation, bir nesnenin iç durumunun (state) korunmasını ve istenmeyen değişikliklerden korunmasını sağlar, bu da daha güvenli ve sürdürülebilir bir kod geliştirmeye olanak tanır. Bu genellikle private alanlar ve public metotlar kullanılarak gerçekleştirilir. Bu sayede, nesne dış dünyaya sadece belirli bir arayüzle sunulur ve iç detayları gizlenir, böylece daha az bağımlılık ve daha iyi bir kod bakımı sağlanır.

Gizlilik (Privacy): Encapsulation, bir sınıfın içindeki alanları ve yöntemleri, sadece o sınıfın içinden erişilebilir kılarak gizler. Bu, sınıfın dışındaki kodun doğrudan bu alanlara ve yöntemlere erişimini önler ve dolayısıyla bu alanların ve yöntemlerin yanlışlıkla değiştirilmesini veya kullanılmasını engeller. C#’da bu genellikle access modifiers (erişim belirleyiciler) kullanılarak yapılır; örneğin, private, protected, public...

Bütünlük (Integrity): Encapsulation, nesne içindeki verilerin (fields) ve davranışların (methods) bir arada gruplandırılmasını sağlar. Bu, nesnenin durumu ve davranışı arasındaki mantıksal ilişkiyi korur. Böylece, nesne dışındaki kod, nesnenin iç yapısını bilmeksizin sadece belirli arayüzlerle etkileşimde bulunabilir.

Kod Bakımı (Maintenance): Encapsulation, kodun bakımını kolaylaştırır çünkü nesnenin iç yapısı (implementation details) gizlidir ve değişebilir. Yani, bir sınıfın iç yapısını değiştirdiğinizde, bu değişiklik sadece sınıfın kendisiyle etkileşen kodu etkiler, dışındaki kodu etkilemez. Bu, kodun daha az bağımlı ve daha kolayca değiştirilebilir olmasını sağlar.

Class (Sınıf) ve Object (Nesne)

  • Class (Sınıf): Nesne yönelimli programlamanın temel yapı taşıdır. Sınıf, benzer özelliklere ve davranışlara sahip nesneleri tanımlayan bir şablondur. Bir sınıf, veri üyeleri (fields, properties) ve yöntemleri (methods) içerir.
  • Object (Nesne): Bir sınıfın somut örneğidir. Sınıftan türetilmiş bir varlıktır ve sınıfın özelliklerini ve davranışlarını taşır. Örneğin, bir Car sınıfı düşünelim. Bu sınıftan türetilen her bir araba, bir nesnedir.

Fields (Alanlar) ve Properties (Özellikler)

  • Fields (Alanlar): Bir sınıf içinde tanımlanan ve genellikle private erişim belirleyicisiyle tanımlanan değişkenlerdir. Field'lar sınıfın verilerini saklar.
  • Properties (Özellikler): Field'lara erişim sağlayan ve onları kontrol eden özel yöntemlerdir. Properties, get ve set erişimcileri kullanarak verilerin okunmasını ve yazılmasını sağlar. Bu sayede, verilerin doğruluğu ve bütünlüğü korunur.

Access Modifiers (Erişim Belirleyiciler)

  • Private: Sadece sınıfın içinden erişilebilir. Verilerin dışarıdan direkt olarak değiştirilmesini engeller.
  • Public: Sınıf dışından erişime açıktır. Genel erişim sağlar.
  • Protected: Sadece sınıfın içinden ve bu sınıfı miras alan alt sınıflardan erişilebilir.
  • Internal: Aynı projede (assembly) bulunan diğer sınıflardan erişilebilir.
  • Protected Internal: Aynı projede bulunan sınıflardan ve bu sınıfı miras alan alt sınıflardan erişilebilir.

Methods (Yöntemler)

Sınıfın işlevselliğini tanımlayan fonksiyonlardır. Yöntemler, belirli görevleri yerine getirmek için kullanılır. Bir sınıfın veri üyeleri (fields) üzerinde işlemler gerçekleştirebilirler.

Encapsulation (Kapsülleme)

Encapsulation, verilerin ve yöntemlerin bir sınıf içinde bir araya getirilmesi ve dış erişimden gizlenmesi işlemidir. Bu, sınıfın iç durumunun korunmasını ve kontrol edilmesini sağlar. Encapsulation, verilerin doğruluğunu ve güvenliğini sağlamada önemli bir rol oynar.

public class Car
{
    // Private field
     private string brand;
     private int speed;

    // Public property with encapsulation
     public string Brand
     {
          get { return brand; }
          set
          {
               if (!string.IsNullOrEmpty(value))
               {
                    brand = value;
               }
          }
     }

    // Public property with encapsulation
     public int Speed
     {
          get { return speed; }
          set
          {
               if (value >= 0)
               {
                    speed = value;
               }
          }
     }

     // Public method
     public void Accelerate(int increment)
     {
           Speed += increment;
     }
}

Açıklama
Private Field: brand ve speed alanları private olarak tanımlanmıştır, böylece doğrudan sınıf dışından erişilemez.
Public Properties: Brand ve Speed özellikleri, field'lara erişim sağlar. set erişimcileri, verilerin doğruluğunu kontrol eder ve sadece geçerli değerlerin atanmasını sağlar.
Public Method: Accelerate yöntemi, Speed özelliğini artırmak için kullanılır.

Encapsulation, C#'daki nesne yönelimli programlamanın temel prensiplerinden biridir ve kodun daha güvenli, daha anlaşılır ve daha sürdürülebilir olmasına yardımcı olur. Bu nedenle, iyi bir C# geliştiricisi olmak için encapsulation prensiplerini anlamanız ve uygulamanız önemlidir.

Randevu

Hakkımda


Şaban Çetin

...

İletişim Formu


Sosyal Medya


...

...

...

© Copyright: www.griadam.com.tr