Aybars Arslan

Console.WriteLine("Hello World");

Encapsulation

Encapsulation türkçeye sarmalama olarak çevrilmiş. Nesne Yönelimli Programlamanın 4 temel prensibinden biridir.
Onceki yazım Nedir Bu OOP de herşeyin bir nesne olduğundan ve nesnelerin veriler(properties) ve bu nesnelerin yaptığı actionlardan(methods) oluştuğunu belirtmiştim.
Yani;
VERİ(properties) ve HAREKETLER(methods) NESNE(object) oluşturur.
Sınıfın propertyleri ve metodlarının dış dünya ile etkileşimini organize etmek için encapsulation kullanılmaktadır.

Şimdi örnekler ile daha somut ve anlaşılır şekilde yazmaya çalışacağım.
Encapsulation access modifierlar kullanılarak implement edilmektedir.
Access Modifier : Sınıf içerisindeki property ve metodların diğer sınıflar içerisindeki görünülürlüğünü belirlemek için kullanılırlar.
C# dilinin desteklediği access modifierlar;
Public
Private
Protected
Internal

Public Access Modifier

Public anahtar kelimesiyle üretilen classlar ve metodlar diğer classlardan yeni bir nesne oluşturularak kullanılabilir ve modifiye edilebilirler.

        
     static void Main(string[] args)
     {
        // Nesne Oluşturuyoruz (Object)
        Diktortgen benimDiktorgenim = new Diktortgen();
        double kKenar = benimDiktorgenim.kisaKenar = 4.1;
        double uKenar = benimDiktorgenim.uzunKenar = 6.7;
        benimDiktorgenim.EkranaYaz(kKenar, uKenar);
     }

    public class Diktortgen
    {
        // Ozellikler(Properties)
        public double uzunKenar;
        public double kisaKenar;

        // Action(Method)
        public double getArea()
        {
            return uzunKenar * kisaKenar;
        }

        public void EkranaYaz(double kKenar, double uKenar)
        {
            System.Console.WriteLine("Kisa Kenar : {0}", kKenar);
            System.Console.WriteLine("Uzun Kenar : {0}", uKenar);
            System.Console.WriteLine("Alan : {0}", getArea());
            System.Console.ReadKey();
        }
    }

Yukarıdaki kodda göreceğimiz gibi propertyler ve metodlar public olarak tanımlanmış. Bu sayede Main() metodta Diktortgen nesnesinden new anahtar keyworduyla yeni bir nesne yaratarak propertyler ve metodlara erişebiliriz.

Private Access Modifier

Private anahtar kelimesiyle üretilen property veya metodlar yalnızca üretildiği sınıfta kullanıma açıktır. Başka bir sınıf bu metodların bulunduğu sınıfı miras bile alsa bu metodlar yine de kullanılamaz.

     static void Main(string[] args)
     {
        // Nesne Oluşturuyoruz (Object)
        Diktortgen benimDiktorgenim = new Diktortgen();
        benimDiktorgenim.KenarlarıGir();
        benimDiktorgenim.EkranaYaz();
     }

    public class Diktortgen
    {
        // Ozellikler(Properties)
        private double uzunKenar;
        private double kisaKenar;

        // Action(Method)
        public double getArea()
        {
            return kisaKenar * uzunKenar;
        }

        public void KenarlarıGir()
        {
            System.Console.WriteLine("Kısa Kenar : ");
            kisaKenar = Convert.ToDouble(System.Console.ReadLine());
            System.Console.WriteLine("Uzun Kenar : ");
            uzunKenar = Convert.ToDouble(System.Console.ReadLine());
        }

        public void EkranaYaz()
        {
            System.Console.WriteLine("Kisa Kenar : {0}", uzunKenar);
            System.Console.WriteLine("Uzun Kenar : {0}", kisaKenar);
            System.Console.WriteLine("Alan : {0}", getArea());
            System.Console.ReadKey();

Yukarıdaki örnekte görüldüğü gibi uzunKenar ve kisaKenar private olarak tanımlanmış. Yani bu propertyler main() metodtan erişilebilir değiller. Bu yüzden Diktörtgen sinifinin içerisindeki metodlar ile erişilerek hesaplama yaptırıldı.

Protected Access Modifier

Protected anahtar kelimesiyle üretilen property veya metodlar üretildiği sınıfta ve bu sınıfı miras alan sınıflarda kullanıma açıktır.

Internal Access Modifier

Public keywordune benzer, Aynı asm’nin içerisindeki tüm sınıflar erişilebilir. Yani publicin sadece aynı proje içerisinden erişilebilenidir.

Paylaş !

, ,

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir