C++ ile Nesne Yönelimli Programlamaya Giriş

Bir programlama dilinin nesneye yönelik programlama dili olması için 3 kavramı içermesi gerekmektedir. Bütün nesne yönelimli programla dilleri bu 3 özelliği kapsamaktadır. Bunlar ;

-          Encapsulation (Kapsülleme)

-          Polimorfizm (Çok Biçimlilik)

-          Inheritence (Kalıtım)

Şeklinde olup kısaca kapsülleme; private,public gibi anahtar kelimeleri ile veriye nasıl erişebildiğini özetler.

Kalıtım; bir sınıfın diğer bir sınıf tarafından kalıtım işleçlerini kullanarak izin veriler üye değişkenlerine ve fonksiyonlarına erişebilmesini sağlar. Türeyen sınıf ise bambaşka bir iş yapabilir.

Polimorfizm; Çok biçimlilik diyede kaynaklarda geçmekte olup virtual ve override anahtar kelimelerinin sıkça kullanılabildiği anahtar kelimeleridir. Adında da anlaşılacağı gibi kalıtım ile aldığınız bir sınıfın bir metodu virtual ise türemiş sınıfta bunu override ederek fonksiyonun içeriğini değiştirebilmektesiniz. Başlangıç için basit bir C++ programı;

#include <iostream>

using namespace std;

int main(){

cout<<”Volkan Atasever” 

}

Bu program ekrana Volkan Atasever yazacaktır. C dilinde de aynı programı sadece cout ifadesini değiştirerek yazabiliyorduk.

SINIFLAR            Sınıflar class anahtar kelimesini kullanara deklare edilir. İleride tanıtacağımız struct yapısıda bir class’ın fonksiyon içermeyen hali olarak düşünebilirsiniz. Şimdilik bu kadarını bilmeniz yeterli.

class deneme{

 public:           

         int a;

private:           

         int b;

};

Şeklinde 2 integer üyesi olan bir sınıf tanımlamış olduk bu değişkenlerin arasındaki tek fark public ve private olarak tanımlanmış olması.

Nedir bu public ve private ?

 public değişkenler sınıfmızın üstünden her zaman erişilebilir üyyelerdir.

Private değişkenler ise kalıtım ile alınmış olsalar dahi sınıfın haricinde hiç bir yerde kullanılamazlar.deneme sınıfımızı biraz daha geliştirelim. 

class deneme{

            string ad; 

           public:

            string beni_oku();

            void beni_yaz(string isim);

};

Gördüğünüz gibi sınıfımızı yazmamıza rağmen fonksiyonlara hiçbir şey yazmadık. Sınıfımız içinde tanımladığımız bu fonksiyonlar sadece birer prototipdir. Sınıf dışında bu fonksiyonları tanımlayabiliriz.

string deneme::beni_oku(){

            cout<<”bir isim girin ve ardından enter tuşuna basınız”;

            cin>>ad;

            return ad;

}

void deneme::beni_yaz(string isim){

            cout<<isim;

}

Şeklinde tasarladığımız fonksiyonları ana yordamımızdan çağırmak gerekirse;

int main(){

            deneme obj;

            obj.beni_yaz(obj.beni_oku);

}

Şeklinde çalıştırdığımızda bizden bri isim girmemizi isteyecek ardından girdiğimiz ismi tekrar yazdıracaktır. Burada dikkat edilmesi gereken komple bir sınıf tasarladığımız ve fonksiyonlarıyla işe yarayan bir program yapmış olmamızdır.Bu programda değinmediğimiz konulara sırasıyla değinmemiz gerekirse; string bir veri tipidir. İnteger veri tipi gibi ilkel bir tiptir. Void geriye hiçbirşey döndürmeye ve bir anlamı olmayan bir anahtar kelimedir. Fonksiyonları yazış kuralımız C++ dilinin kurallarındandır. Fonksiyonlarda sınıfın içindeki veri tiplerine ismiyle erişebilirsiniz. Sınıf ismi ve kendi verdiğimiz bir isim şeklinde yazdığımız deneme obj; de ise obj rasgele verilmiş bir isimdir bu verdiğimiz isimle beraber RAM’de yer ayrılır ve sınıfımız artık bir nesne olmuştur. Bu sınıfın içindeki metodlara ise ‘.’ İşleci ile erişebiliyoruz.

            Obj.beni_yaz(obj.beni_oku); kısmındaki dikkat edilecek kısım beni_oku fonksiyonu bir string değer döndürüyor ve beni_yaz fonksiyonuda parantezler arasındada gördüğünü gibi bir string veri bekliyor. Bu kullanım tarzı ile fonksiyonlarımızn ihtiyaçlarını karşılayabildik.

Yorum ekle