4 Ocak 2013 Cuma

C#' ta Sınıflar, Nesneler ve Metodlar - 1

SINIFLAR
Sınıf, C#' ın özüdür. Çünkü sınıf nesnenin doğasını tanımlar. Sınıf bütün bir C# dilinin üzerine inşa edildiği bir temeldir. Sınıf, C#' ta nesne yönelimli programlamanın temelini oluşturur. Sınıf İçinde veriler ve bu veriler üzerinde işlem yapan kod tanımlanır. Sınıf bir nesnenin şeklini tanımlayan bir şablondur. C#' ta nesneleri tanımlamak için sınıf kullanılır. Nesneler bir sınıfın örnekleridir. 

Sınıfın Genel Biçimi
Bir sınıf tanımladığınızda bu sınıfın içerdiği verileri ve bu verilerin üzerinde işlem yapacak kodu da belirtmiş olursunuz. Genel olarak, veriler sınıf tarafından tanımlanmış örnek değişkenlerde, kod ise metodlarda saklanır.  Sınıf class anahtar kelimesi kullanarak oluşturulur. Class Tanımının örnek biçimi aşağıdaki gibidir.

class Sınıfismi
{
       erişim tip değişken1   //örnek değişkenler
       erişim tip değişken2   //örnek değişkenler

       //metodu deklare et
       erişim dönüş-tipi metot1(parametreler)
       {
             //metodun gövdesi
       }
       erişim dönüş-tipi metot1(parametreler)
       {
             //metodun gövdesi
       }
 }

Her değişken ve metodun önünde erişim sözcüğü vardır. Erişim söz konusu üyeye ne şekilde erişileceğini belirten bir erişim belirleyicisidir. İyi tasarlanmış bir sınıf, mantıksal olarak bağlantılı bilgileri bir araya getirip, gruplar. İlgisiz bilileri aynı sınıfın içine yerleştirmek, kodumuzun yapısının çok çabuk bozulmasına neden olur.

Sınıfı Tanımlamak
Sınıfı göz önünde canlandırmak için binalar, evler, dükkanları düşünebiliriz. Şimdi bir Bina sınıfı geliştirelim. Bu sınıf bir bina hakkında üç tür bilgi içerecek: Kat sayısı, toplam alan, oturanların sayısı. Bina' nın ilk versiyonu aşağıda gösterilmiştir. Burada üç örnek değişken tanımlanmıştır: kat, alan, oturansayisi. Bina şimdilik hiç bir metod içermeyen şimdilik sadece veri içeren bir sınıftır.

class Bina
{
     public int kat;
     public int alan;
     public int oturansayisi;
}

Sınıf tanımı yeni bir veri tipi oluşturur. Bu örnekte yeni veri tipi Bina olarak adlandırılmıştır. Bina tipinde nesneler deklare ederken bu isim kullanılır. Sınıf deklarasyonu sadece tipi tarif eder, bir nesne oluşturmaz. Bu nedenle yukarıdaki kod Bina tipinde bir nesnenin hayat bulmasına neden olmaz.

Gerçekten bir Bina nesnesi oluşturmak için aşağıdaki gibi bir ifade kullanılır.

Bina ev = new Bina();  // Bina tipinde bir nesne oluşturduk.

Bu ifade oluşturulduktan sonra ev, Bina' nın bir örneği olacaktır. Böylece fiziksel gerçeklik kazanacaktır. Bir sınıfa ait bir örneği her oluşturduğunuzda, söz konusu sınıf tarafından tanımlanan her örnek değişkenin kendi kopyasını içeren bir nesne oluşturmuş oluruz. Yani, her Bina nesnesi kat, alan, oturansayisi örnek değişkenlerinin kendi kopyalarını içerir. Bu değişkenlere erişmek için nokta(.) operatörü kullanılır. Nokta operatörü bir nesnenin ismini bir üyenin ismi ile bağlar. 

nesne.üye

Yani nesne, sol tarafta belirtilir ve üye, sağ tarafa yerleştirilir. Örneğin ev' in kat değişkenine 5 değerini atamak için aşağıdaki ifadeyi kullanırız:

ev.kat = 5;

Şimdi Bina sınıfını kullanan bir kod yazalım:

class Bina
    {
        public int kat;
        public int alan;
        public int oturansayisi;
    }
    class BinaDemo
    {
        public static void Main()
        {
            Bina ev = new Bina();
            int areaPP; //Kişi Başına Düşen Alan
            ev.oturansayisi = 4;
            ev.alan = 2500;
            ev.kat = 2;
            areaPP = ev.alan / ev.oturansayisi;

            Console.WriteLine("evlerde" + ev.kat+ "kat, " + ev.alan + "alan, " + ev.oturansayisi + "oturan bulunur.");
            Console.ReadLine();
        }
    }

Bu program iki sınıftan oluşur: Bina ve BinaDemo. BinaDemo içindeki Main() metodu, Bina sınıfının ev adında bir örneğini oluşturur. Sonra Main() içindeki kod, ev ile ilişkili örnek değişkenlere değerler atayarak ve bu değerleri kullanarak bu değişkenlere erişir.

Temel Prensip : Her nesne kendi sınıfı tarafından tanımlanan örnek değişkenlerin kendi kopyalarına sahiptir. Yani, bir nesnenin içindeki değişkenlerin içeriği, bir başka nesne içindeki değişkenlerin içeriğinden farklı olabilir. Her iki nesne arasında, aynı tipte nesne olmaları haricinde bir bağ yoktur. Örneğin, iki Bina tipinde nesnemiz varsa, her nesne kat, alan, oturansayisi' nın kendi kopyalarını içerir ve bunların içerikleri her iki nesne arasında farklılık gösterebilir:

Bina ev = new Bina();
Bina ofis = new Bina();


ev.kat = 5;
ofis.kat = 10;

Gördüğünüz gibi nesneler Bina' dan türetilmiştir fakat içerikleri farklıdır.

0 yorum:

Yorum Gönder