20
Kas'13

OOP 2: Sınıf ve Nesne Kavramları (C# ile OOP)

Sınıf Kavramı

En basit tanımıyla, sınıflar şablonlardır. Kod olarak orada dururlar ve bellekte yer kaplamazlar. Nesneler, sınıfları kullanarak örneklenirler. Örneğin bir taşıt sınıfı şu şekilde tanımlanabilir:

namespace OOPSinifveNesneKavramlari
{
    class Tasit
    {

    }
}

Yukarıdaki örnekte tanımlama yapılırken erşim belirleyicisi kullanılmamış. Böyle bir durumda tip tanımları için varsayılan erişim belirleyicisi internal‘dir. Yukarıdaki class tanımı ile aşağıdaki arasında bir fark yoktur.

internal class Tasit{ }

C#’ta her şey nesnedir. Çünkü her sınıf bir base tip olan Object ‘ten kalıtılmıştır. Hatta her interface, struct ve diğer her şey Object sınıfından kalıtılmıştır.

 

Aşağıdaki kod örneği ile

class Tasit
{

}

Alttaki kod örneği arasında bir fark yoktur.

class Tasit : Object
{

}

İçine hiçbir nitelik eklenmediği ve hiçbir sınıftan kalıtılmadığı halde taşıt sınıfının bazı niteliklere sahip olduğu görülüyor:

HerSeyObjecttenKalitilir
Bu nitelikler Object sınıfının nitelikleridir.

Nesne Kavramı

Duyularımızla algılayabildiğimiz her şey bir nesne olarak düşünülebilir. Hatta belki algılayamadıklarımız bile. Masa bir nesnedir. Keza insan da öyle. Tanımladığınız, kullandığınız ya da şu ana kadar nesne olmadığını düşündüğünüz her şey:) nesnedir c#’ta. Nesneler örneklendiklerinde bellekte yer kaplarlar.

 

Taşıt sınıfından bir nesneyi şöyle tanımlayabiliriz:

namespace OOPSinifveNesneKavramlari
{
    class Program
    {
        static void Main(string[] args)
        {
            Tasit t;
        }
    }
}

Tasit t; şeklinde bir tanımla ile, Tasit tipinden t değişkeni tanımlanmış oldu. Fakat yeni bir örnek yaratılmadı ve hafızaya bir nesne çıkarılmadı.

Nesneyi hafızaya çıkarmak/bellekte yerini ayırmak için:

Tasit t = new Tasit();

new anahtar kelimesi kullanılmalıdır. Böylece nesne, belleğe çıkar ve nesnenin bir niteliğine ulaşmak istediğimizde NullReferenceException oluşmaz. Bu hata en sık yenilen hatalardan biridir. Nesnenizin niteliğine ulaşmaya çalışmadan önce nesnenizin belleğe çıktığından emin olun:)

 

Not: Yukarıdaki örneklerde Main metodu içinde Tasit sınıfı kullanılabilir. Çünkü Tasit sınıfi internal erişim belirleyicisi ile işaretlendi ve Main metoduna sahip olan Program sınıfı ile Tasit sınıfı aynı namespace altında.

 

İyi Eğlenceler:)

Yeni makaleleri E-Mail ile takip edin!