OOP #1 Class,Object,Method,Access Modifier

 Merhaba arkadaşlar

Bayramı ağırladığımız şu günlerde bir yazı serisine başlamak niyetiyle satırlarıma başlıyorum.Bu yazı dizisi Yazılım geliştirme dünyasında önemli bir yere sahip olan Nesne yönelimli programlama (Object Oriented Programming) hakkında olacak.Amacım OOP yaklaşımı gerekli ince nüansları unutmayarak, genel hatlarıyla ele almaktır.Anlatım şeklimi kitabi bilgiden ziyade pratik bilgiler vererek yapmayı planlıyorum.

Nesne yönelimli programlama;  kelime itibariyle baktığınızda zaten kendisini ele veriyor.Dünyadaki her türlü eşya veya maddenin nesnelerle tanımlandığı bir yaklaşım.Bu yazdığımız kodun diğer yaklaşımlara nazaran (prosedürel yaklaşım...) daha fazla dünyaya yakın ve anlaşılabilir kodlar yazmamıza olanak sağlar.

Bu yaklaşımda nesneler herşeydir ve her Object(nesne) Class(sınıf) lardan oluşur.Bir tek sınıftan istenildiği kadar nesne oluşturulması mümkündür.BU oluşturduğunuz her bir nesne farklı farklı veriler ve sonuçlar size döndürebilir.C# tamamiyle OOP bir programlama dilidir.

Bir sınıf içerisinde o sınıfı ilgilendiren çeşitli elemanlar yer alır.Bunlar alanlar(field),methodlar,özellikler(properties) ve olaylardır(events).Sınıf içerisinde geliştiricinin tanımladığı methodlardan farklı olarak her sınıfa özel methodlarda vardır.Constructer(yapıcı) ve Destructer(yıkıcı) methodlardır.Constructer method sınıfın örneğini oluşturduğumuz andaki çalışacak methoddur.Bu method sınıfa ait örnek bir nesne oluşturduğumuz zaman gerekli işlemleri yapmak için kullanılır.Örneğin; veritabanı işlemlerini yaptığımız bir sınıfımız var.Sınıfın içerisinde CRUD işlemlerini yaptığımız methodlar yer alıyor.Bu methodları kullanabilmek için gerekli bağlantı cümlemizi constructer method da belirtmek , tek tek methodların içerisinde belirlemekten daha mantıklı ve profesyonel olur.Deconstructer method ise Dispose olduğu zaman çalışacak methoddur. Burada sınıf içerisinde kullandığımız başka nesneleri hafızadan atmak için clear, dispose gibi işlemleri yapabiliriz.

NOT: Sınıf içerinde constructer methodu oluşturmak için ‘ctor’ code snippet ını kullanabilirisiniz.Deconstructer için ise ‘~’ kullanabilirsiniz.uygulamak için iki kere tab tuşuna baslamayı unutmayın sakın :)

Şimdi anlatmaya çalıştığım konuları pratikte görelim.Aşağıdaki kodları inceleyiniz.

 
public class ExampleClass
{  
     // bir sınıf için temel elemanları barındırıyor. 
     // Constructer Method
     public ExampleClass()
     {
 
      }
 
      // Destructer method
      ~ExampleClass()
      {
 
      
}

Sınıf içerisindeki diğer elemanları buradan inceleyebilirisiniz.

 
// Fields
public int i = 0;
private char c = 'c';
protected string s = "blog.yemrekeskin.com";
internal double d = 1.2;
protected internal bool b = true;
 
// Constant value
public const string key = "asflkj2345nl34lknfvwev567ıot";
 
 private int x;
// Property
public int X
{
    get { return x; }
    set { x = value; }
}

Rastegele tanımlanmış methodlar;

 
private void GetValue()
{
     // void geri dönüş değerinin olmadığını belirtir.
}
 
protected string GetString(string sItem)
{
      return sItem;
}

Şimdi Erişim belirleyicilerinden söz edelim.Erişim belirleyiciler(Access Modifier) sınıfların,methodların,alanların erişim seviyelerinin belirtilmesi için kullanılan anahtar kelimelerdir.Her zaman yazdığımız kod methodların alanların sınırsız erişim sağlamasını istemeyebiliriz.Bazen yazdığımız kodlar hayati işlemler yapıyorsa bunları sadece kendimizin geğiştirmesini daha doğru buluruz.Bu anlamda önemli bir yere sahiptir.Sıralayacak olursak;

Public; Bu şekilde belirtilen method, alan veya sınıflar sınırsız erişime sahiplerdir.Her yerden erişime sahiplerdir.Bu farklı bir proje bile olsa.

Private;Sadece tanımlı oldukları yerden erişime açıktırlar.Yani sınıf içerisinde tanımlandı ise sadece sınıf içerisinde erişebilirisinz.Dışarıdan erişime izin vermez.Nesne oluşturduğunuzda izin vermez.

Protected;Belirtiğiniz yerde ve bunun kalıtıldığı sınıflar içerisinde erişime izin verir.Yani kalıtım yoluyla erişim seviyesi aktarılıyor.

Internal; kelime itibariyle zaten dahili anlamına gelen internal,sadece belirtilen Assembly içerinde yani aynı proje içerisinde erişime izin verir.

Protected Internal;Bu erişim düzenleyicisi ise protected ve internal ın sahip oluğu özelliklere sahip hem protected hemde internal gibi davranır.

Hazırladığım class diagramda da gördüğünüz gibi her belirtilen elemanlar için farklı bir icon seti ve renk kullanılmış.Hatta erişim seviyelerine göre bu iconların kenarına çeşitli şekillerle simgelenmiş.Bunları bilmek mimarisel olarak da bir projeyi incelemeyi kolaylaştıracaktır.

NOT: Eğer bir elemanın erişim belirleyicisini belirlemezseniz private olarak tanımlanacaktır.Bir başka konuda; constructer method public olarak tanımlanmak zorundadır.Aksi halde instance ini oluşturamazsınız.

Bir class dan nasıl nesneler oluşturabileceğimizi kısace değinelim.Bu olay internette okuduğunuz yazılarda çeşitli biçimlerde isimlendirilmekte.Instance,örneğini,tanımlamak,nesne oluşturmak olarak belirtilmektedir.Hepside aynı şeyi ifade eder.Nesne oluştururken NEW anahtar kelimesini kullnarak yaparız.

 
CompanyModule module = new CompanyModule();

Serimizin ilk yazısının sonuna geldik Umarım faydalı oluyordur.Geri bildirimlerinizi bekliyorum.

Bol kodlu günler

Kaynak Dosyayı İndirin

Alıntı