Yeniden merhabalar arkadaşlar 🙂

Bu makalemde sınıflarda kaldığım yerden devam edeceğim inşallah 🙂

Sınıf oluşturma:

[php]class Apartman

{

}[/php]

Yukarıda tanımlamış olduğum deyim bir sınıf belirtir.

Class : anahtar sözcük

Apartman : sınıfın ismi

{} : sınıfın gövdesi yada sınıf bloğu

Sınıfın içerisinde bulunan sabit, değişken yada fonksiyonlara class member yani sınıf öğeleri deriz.

Şu anda boş olan Apartman isimli sınıfımızı gerekli değişken ve fonksiyonlar yardımıyla işe yarar hale getireceğim şimdide 🙂

İlk olarak; bir apartman ile ilgili bilgileri tutan değişkenleri Apartman sınıfının gövdesinde tanımlayacağım.

[php]class Apartman

{

int apartmanNo;

string sokakAdi;

}[/php]

Değişkenlerimi sınıf içerisinde tanımlamış bulunmaktayım.

SINIF VE NESNE (CLASS AND OBJECT)

Ben bu makalemde bir Apartman oluşturacağım.

Bu apartmanın mimari tasarımını(soyut) c# dilinde bir sınıfla yapacağım.

Mimari tasarımdan elde edilecek somut apartmanı ise Apartman isimli sınıftan oluşturacağım nesne(object) ile sağlayacağım.

Yani bu anlattıklarım ; sınıfın bir tasarım olduğunu, onu somut olarak kullanamayacağımızı ve somut olarak kullanmak için nesneler oluşturmak gerektiğini göstermektedir.

Bir mimari tasarımdan aynı tipte istediğimiz kadar apartman inşa edebiliriz.Örneğin bir sitedeki apartmanların hepsi bir tek tasarımdan üretilir.

Tabiki bu apartmanları birbirinden ayıran yönleride (renk gibi )vardır.Buna da Apartmanların özniteliği denir.

Bir sınıftan istediğimiz kadar nesne üretebiliriz. Oluşturulan nesnelerin yapıları aynı fakat öznitelikleri farklıdır.

C# uygulamaları mutlaka Main() methodu ile başlar.

O halde sınıftan nesne kurmak istediğimizde Main() methoduna başvurabiliriz.Main() methodu ortalıkta duramaz, o da mutlaka öteki öğeler gibi bir sınıfın içerisinde olmalıdır.

Şimdi içerisinde Main() methodu olan bir sınıf oluşturalım:

[php]class Sınıf1

{

public static void Main()

{

}

}[/php]

New operatörü ile nesne oluşturmak

Şimdide Main() methodunun gövdesine , Apartman sınıfından bir nesne kuracak olan deyimleri ekleyelim…

(a)

[php]Apartman ilkApartman;[/php]

// Bu deyim derleyiciye Apartman sınıfına ait bir nesnenin ana bellekteki adresini gösterecek bir referans bildirimidir.(Buna pointer,gösterici,işaretçi gibi isimlerde denilebilmektedir.)

 

Not: (a) bundan sonra yukarıdaki deyimi ifade edecektir.

(a) bildirimi yapıldığında henüz işaret edilecek somut bir Apartman yoktur.Dolayısıyla şu anda ilkApartman işaretçisi bellekte hiçbir yeri işaret etmez.Hiçbir yeri işaret etmediğini bildirmek için işaretçiye “null” işaret ediyor deriz.

Şimdi işaretçimizin işaret edeceği somut bir Apartman inşa edeceğim.

Somut bir Apartman’ı inşa etmek demek ana bellekte Apartmanın bütün öğelerinin sığacağı bir yeri tahsis etmek demektir.

Bu yere evin bir nesnesi(object ) denir.Yaptığımız bu işede sınıfa ait bir nesne oluşturmak denir.

(b)

[php]ilkApartman = new Apartman();[/php]

Not: (b) bundan sonra yukarıdaki deyimi ifade edecektir.

Yukarıda yazmış olduğum deyim ile Apartman sınıfında tanımlamış olduğum sokakAdi,caddedAdi ve apartmanNo değişkenleri için bellekte ayrı ayrı yer ayırmış olurum.Ayrılan bu yerlere başka değerler yazılamaz; o nesne bellekte olduğu sürece , sadece ait oldukları öğelerin değerleri girilebilir.Bu olayı bellekte yer kiralama olarak düşünebilirsiniz.Kiralanan yerde sadece kiracı oturabilir.

Henüz oluşturulan nesnenin öğelerine değer atamadım; yani kiracı henüz taşınmamıştır.

Bize göre apartmanNo,sokakAdi,caddeAdi değişkenleri için bellekte ayrılan hücreler boştur.Fakat , C# bellekte oluşturulan her değişkene bir öndeğer atamaktadır.Atanan öndeğer veri tipine göre değişmekte olup; bizim apartmanNo değişkenimiz int veri tipinde geriye kalan değişkenlerimiz ise string tipindedir.

Şimdi bazı veri tiplerine atanan öndeğerleri görelim:

byte,short,int,long : 0

float,double             : 0,0

bool                            : false

char                           :\0″(null karakter)

string                         : “”(boş string)

nesne(object)           : null

apartmanNo değişkeni int tipinde olduğu için yukarıdaki bilgilere bakıldığında öndeğeri 0 dır.

sokakAdi ve caddeAdi değişkenleride string tipinde olduğundan yine yukarıdaki bilgilerden ön değeri “”(boş string) dir.

Ben istersem (a) ve (b) deyimlerini birleştirip aşağıdaki gibi tek satırlada ifade edebileceğim bir deyim elde edebilirim:

(c)Apartman ilkApartman = new Apartman();

Bu deyim (a) ve (b) deyimlerinin yaptığı işi tek başına yapar.Bu deyimide bundan sonra (c) ile belirteceğim.

Biz bu deyime nesne yaratıcı(instantiate) demekteyiz.

(c) deyiminde yer alan sözcüklerin işlevlerini soldan sağa anlatacak olursam :

Apartman : Yukarıda tanımlamış olduğum sınıftır.

ilkApartman : Tasarımdan üretilecek olan somut apartmanın yerini işaret eder.Bu nedenle ilkApartman’ı işaret ettiği apartmanın yeriymiş gibide düşünebiliriz.Bundan böyle işaretçi(referans) adı ile işaret ettiği nesneyi aynı adla anacağız.Söylemlerimde kastedilen şeyin referans mı,nesne mi olduğu belli olacaktır.Ancak çok gerektiğinde, referans oluşuna yada nesne oluşuna vurgu yapacağım tabikide.

= Atama operatörüdür.

new : Sınıftan nesne oluşturan operatördür.

Apartman() : Oluşturulacak apartmanın tasarımıdır.

Şimdiye kadar anlattığım şeyleri yerine getirmek için;

Oluşturmuş olduğum Sınıf1 isimli sınıfın içerisini aşağıdaki gibi doldurmam yetecektir.Tabiki yine oluşturmuş olduğum Apartman sınıfının bu projede yer aldığınıda hatırlatayım arkadaşlarJ

[php]class Sınıf1

{

public static void Main(string [] args )

{

Apartman ilkApartman = new Apartman();

}

}[/php]

Ben şu ana kadar 2 sınıf tanımladım.Apartman isimli sınıf bir apartmanın apartman numarasını, bulunduğu sokak ve cadde ismini tutacaktır.Fakat Apartman sınıfı bir tasarım olup; kendi başına iş yapamamaktadır.

Sınıf1 isimli sınıfta Main() methodu tanımlı olup ; bu method Apartman sınıfının bir nesnesini yaratacak olan nesne yaratıcıyı çalıştırmaktadır.Nesne yaratıldıktan sonra , onun öğeleriyle ilgili işleri yapmaya başlayabiliriz artık..

Classlarla ilgili yazmış olduğum ikinci makalemi de burada sonlandırıyorum arkadaşlar 🙂

Bir sonraki makalemde classlar konusuna kaldığım yerden(aynı örnekten) devam edeceğim 🙂

Şimdilik classlarda anlatmış olduğum makaleleri anlamaya çalışın ve takipte kalın 🙂

Herkese iyi akşamlar dilerim…