5.00 / 1 oy

Programlamada Encapsulation (Kapsülleme) Nedir?

C# gibi OOP (nesne yönelimli programlama) destekleyen programlama dillerinde hangi nesnelerin hangi sınıfların hangi elemanlarına (özellik, alan, metod gibi) erişim sağlayabileceği kapsülleme (encapsulation) ile belirlenir. Kapsüllemenin amacı, kullanıcıyı olası üretilecek hatalardan en başından koruyabilmektir.

Edit: C# Erişim Belirleyicileri (Access Modifiers)

Örneğin bir sınıfın değişkenini (field), private erişim belirleyicisi kullanarak başka sınıflardan erişime kapatabiliriz. Ancak private field'lara zaman zaman erişim gerekebileceği için bu durumda da get ve set anahtar kelimeleri ile property (bkz: C# Özellik (Property) Nedir?) kullanırız. Genel olarak tüm bu erişim düzenlemelerine ve hata engelleyicilerine kapsülleme adı verilir.

Örnek:

class Araba
{
    private int _motor;

    public int Motor { 
        get 
            {return _motor;} 
            set 
            {
                if (value < 500)
                    _motor = 0;
                else
                    _motor = value;
            } 
    }
}

 

Daha önce paylaştığım bazı diğer benzer yazılarım için;

bkz: C# Abstract Class ile Interface Arasındaki Farklar Nelerdir?

bkz: C# as Operatörü Kullanımı ve Örnekleri

bkz: C# Sealed Anahtar Sözcüğü Nedir? Sealed Kullanımı ve Örnekleri?

bkz: C# Polymorphism (Çok Biçimlilik) Nedir?

bkz: C# ile Kalıtım Örneği (OOP)

bkz: C# Virtual Metod Nedir ve Nasıl Kullanılır?

mbologlu

17.05.2021 03:28

Bu soru 2 kez yanıtlandı.

  • 16 Eylül 2021 12:03
    13

    hocam bu bilgiler gerçek hayatta ne işimize yarayacak sorusu olmuş çok sevdim :) çok deneyimli olmayan bir yazılımcı olarak pratikte benim gözlemlediğim hep şu oldu, programlama dillerine ait tüm diller için geçerli bir OOP yaklaşımı var. her yazılımcı bu yaklaşımı bilmek istiyor ama pratikte her detay daha fazla zaman anlamına geldiği için ve zaman da maliyet demek olduğu için bu derinlikte uygulamaları hemen çözmesi gereken projelere dahil etmiyor. ama her yazılımcının da kendine ait projeleri vardır ve bu projeleri de kendi yazılım deneyiminin tamamını kullanarak geliştirmekten çok keyif alır. bu detaylı projelerde de kapsülleme gibi işlemleri class'larına uygular ve VCS üzerinden kodlarını paylaşmaktan da çok keyif alır. Ama pratikte zaten dediğiniz çapta uygulamalar için kapsülleme yapmak sadece zamansal maliyeti artırır ve projeye de performans vb. anlamında bir katkı sağlamaz. Ancak ilerleyen zamanlarda projenin upscale edilmesini gerektiren bir ihtiyaç ortaya çıkarsa o zaman güncelleme şeklinde değerlendirilebilir

  • 16 Eylül 2021 10:39
    7

    peki yazılımcı kodlarını kendisinden mi korumuş oluyor kapsülleme yaparak bu kısmını anlamadım. diyelim ki evde tek başıma küçük çaplı bir uygulama geliştiriyorum ve öyle binlerce satır kod yazmamı gerektiren bir ihtiyaç da yok. bu durumda kapsülleme gibi ileri seviye olduğunu anladığım kodlama tekniklerini uygulamam ne fayda sağlayacak? performans anlamında bir iyileştirme özelliği varsa anlarım ama ekip olarak geliştirilen bir proje değilse ve nerede ne kod yazdığını zaten kendim de biliyorsam bu uygulama projeye tam olarak ne katkı sağlayacak?

    not: coder değilim

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Programlamada Encapsulation (Kapsülleme) Nedir?

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.