YAZARLIK BAŞVURUSUBize Katılmak istermisiniz?

C++ , Class Yapısına Giriş

 

Inline (yerel) fonksiyonlar

Sınıfın sahip oldugu fonksiyonları, class ile baslayan sınıf tanımı içine yerlestirebiliriz.

Bu tür fonksiyonlara yerel fonksiyonlar (in-line functions ) adı verilmektedir. Yerel fonksiyonlar genel fonksiyonlara oranla daha hızlı çalısır. Bu tür fonksiyonlar programlarının verimini artırırlar.

class test{

           fonksiyon(){

                          fonksiyon  içerigi…..

                                 }

 

};

Örneğin ;

 

 

Gerek duyuldugunda, fonksiyon tanımları sınıfın bildiriminin dısına tasınarak genel fonksiyonlar biçimine dönüstürülebilir. Bu durumda, sınıf tanımı içinde ilgili fonksiyonların prototiplerine yer vermek gerekecektir. Üye fonksiyonların, sınıf dısında tanımlanması durumunda, bu fonksiyonun hangi sınıfın bir üyesi oldugunu da belirtmek gerekmektedir. Bunun için (::) islevinden yararlanılır.

geridönüştipi  sınıf_adı :: fonksiyon_adı

Burada geri dönüş tipi bizim  fonksiyonun prototipinde belirttiğimiz dönüş tipi olacaktır . Mesela  sınıf içinde    void  kareAl() ;  isimli bir fonksiyon prototipi bildirilmiş olsun. Biz sınıf dışında bu fonksiyonun içeriğini yazarken;

void sınıf::kareal(){

…………………………….

   }

Örneğin;

 

Erisimin Sınırlandırılması

Küre ile ilgili sınıfın verilerini (r,x,y,z) ve fonksiyonların özel, yani private olarak tanımlamak istiyoruz. Bunun için bir private anahtar kelimesi kullanmamız yeterli olacaktır ya da public yazmazsak hepsi varsayılan olarak private olacaktır. Erişimi sınırandırdığımız için k nesnesi bu üyelere erişemeyecek ve program hata verecektir.Çünkü private üyelere sadece o sınıfa ait fonksiyonlar erişebilirdi.

Kurucu (Constructors) ve Yok Edici (Destructors) Fonksiyonlar

Program içinde yer alan bir degiskeni asagıda belirtildigibiçimde tanımlayarak, ona belirli bir deger atayabiliriz:

int a;                              bunu yerine            int a=2011;
a = 2011;

Bu sekilde degiskenlere baslangıç degerleri atayabiliyoruz. Bir sınıf içinde yer alan bir degiskene baslangıç degeri atanması söz konusu ise daha farklı bir yol izlenir.

Böyle bir amaca ulasmak için asagıdaki sıra kullanılır;
-> Nesne olusturulur
-> Kurucu (Constructors) Fonksiyon Çagrılır
-> Nesneye ait degiskenlere baslangıç degeri atanır(kurucu fonksiyon ile).
Bir nesne olusturuldugunda, o nesnenin kurucu fonksiyonu otomatik olarak çagrılır.Yani nesne oluşturulduğunda constructor sayesinde değişkenlere başlangıç değerleri atayabiliriz.

Bu nesnenin bildirimi isletildiginde çagrılacagı anlamı tasır. C++’da degisken bildirimleri programın çalıstırılması anında etkin olmaktadır. Bunun nedeni, bir nesne bildiriminin bir kurucu fonksiyonu çagırması ihtimalidir. Nesnenin yok edilmesi esnasında ise yok edici (Destructors) fonksiyon çalıstırılır. Bu fonksiyon nesnenin isgal ettigi alanı bosaltarak bellegin etkin kullanılmasına yardım eder. Yok edici fonksiyonlar da iliskili oldugu sınıf ile aynı isme sahiptir. Ancak fonksiyon adının basına “~” isaret kaydedilir.

fonksiyon_adı();
//kurucu fonksiyon nesne yaratıldıgı anda çagrılarak nesne içindeki degiskenlere ilk deger atar.
~fonksiyon_adı();
//yok edici fonksiyon nesneyi yok ederek nesnenin bellekte isgal ettigi alanı bosaltır.

Kurucu fonksiyon ait oldugu sınıf ile aynı ismi tasır. Bu fonksiyon herhangi bir deger döndürmez. Bunun anlamı, kurucu fonksiyon return sözcügü içermez.

Örneğin ;

Program içinde testSinif isimli bir sınıfımızın var oldugunu varsayalım. Bu sınıf, sınıf adı ile aynı ismi içeren bir kurucu ve bir yok edici fonksiyona sahiptir. Kurucu fonksiyon, a ve b degiskenlerine iki deger atamaktadır. Yok edici fonksiyon ise bu degerleri yok etmektedir.

Parametre Alan Kurucular;

Kurucu fonksiyonlara, diger fonksiyonlarda oldugu gibi parametre geçirmek mümkündür. Bu parametreler genellikle bir nesne olusturuldugunda, onu ilk kullanıma hazırlamak amacıyla kullanabiliriz. Bir kurucuya her zaman sadece bir parametre geçirilmez, birden fazla da parametre geçirilebilir. Birden fazla parametre geçirilmesinde de aynı yol izlenir.

 

Bir kurucu fonksiyona bir ya da daha fazla parametre geçirilebiliyordu. Bu parametreler birer sabit olarak ele alınmıstır. Bununla birlikte, gerek duyuldugunda kurucu fonksiyona degiskenler de geçirilebilir.

 

Bir Nesneyi Diger Nesneye Atamak

 

 

Aynı türdeki bir nesne bir diger nesneye atanabilir. Bunun anlamı, bir nesnenin kopyası olusturulabilir. Nesne bir diger nesneye atandıgında, tüm veri üyelerinin kopyası olusturulur ve kopyalanan nesneye ait veriler aynen kopya nesnelere geçirilir. Program içinde olusturulan n1 ve n2 nesnelerini göz önüne alalım. Bunlardan n1 nesnesine 1324 degerini atadıktan sonra, onu n2 nesnesine kopyalamak istiyoruz.Bunun için yukarıdaki gibi bir yol izlenir ve n1 nesnesi n2 nesnesine kopyalanmış olur.

Fonksiyonlara Nesne Atamak

Diger veri türlerinde oldugu gibi, nesneler de parametreler biçiminde fonksiyonlara aktarılabilir. Fonksiyonun parametresi sınıf tanımı içinde bildirilir. Fonksiyon her çagrıldıgında bu sınıfa ait bir nesne parametre olarak kullanılır. Fonksiyona, diger veri türlerinde oldugu gibi varsayılan olarak nesnelerin degerleri aktarılır.

 

Fonksiyonlara nesne atama yoluyla sayısal degerlerin karesini bulmak istedigimizde; Programda sayi tamsayısını içeren testSinif isimli bir sınıf olusturulmaktadır.Program içinde yer alan kare() fonksiyonunun testSinif türünde bir parametresi vardır. Bu fonksiyon nesneye ait sayi degerinin karesini döndürür. Bu yöntem ile 9  ile 11 sayısal degerlerinin karelerini hesaplayalım;

 

 

4 Comments

Add a Comment

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