Nesnelerin Tanıtımı(Sınıflar)

[vc_row][vc_column][vc_column_text]Nesneye yönelik programlamada nesneler sınıflardan oluşturulur. Sınıflar, kendilerinden oluşturulacak nesneler için prototiptir. Nesne oluşturulurken sınıfına ait tüm özellikleri kapsar.Yani nesnede olmasını istediğimiz bütün özellikleri sınıfta tanımlamalıyız. Sınıflar structların genişletilmiş halidir. Structlar gibi veri elemanları içerebilirler fakat farklı olarak fonksiyon da içerebilirler. Struct ve sınıf arasında ise şimdilik sadece bir fark var. Structlarda her şey varsayılan olarak publicdir. Classlarda ise her şey var sayılan olarak privatedır.

class sekil{
public:
    int boy,
    int en;
};

 

Yukarıdaki basit sınıf tanımlamasına göre buradan oluşturulacak nesne boy ve en değişkenlerine sahip olacaktır.public deyimi, özelliklerin, sınıfın elemanları tarafından erişilebilir olduğunu belirtmek için kullanılır. Bunun yanında private ve protected deyimleri de kullanılabilir ancak bu konuya daha sonra geleceğiz.

Üye fonksiyonlar

Üye fonksiyonlar, diğer değişkenler gibi bir sınıf içerisinde tanımlanan ya da sadece prototipi olan sınıf elemanlarıdır. Bulunduğu sınıfa ait olan her nesne için işlem yapabilir ve o nesne için tüm elemanlara erişim hakkı vardır. Üye fonksiyonların hepsi inline fonksiyonlardır ve bu programın hızını arttırmayı sağlar.

Sınıf elemanına doğrudan erişim yerine üye fonksiyonla erişmeyi deneyelim:

using namespace std;

class Zaman{
public:
    int saat;
    int dakika;
    int saniye;
    int saniyeBazindaZaman(){
        return saat*3600 + dakika*60 + saniye;
    }
};

int main () {
    Zaman zaman1;

    zaman1.saat=7;
    zaman1.dakika=13;
    zaman1.saniye=51;

    Zaman zaman2;

    zaman2.saat=3;
    zaman2.dakika=46;
    zaman2.saniye=11;

    cout << "zaman1 nesnesinin saniye bazindaki degeri: " << zaman1.saniyeBazindaZaman() << endl;

    cout << "zaman2 nesnesinin saniye bazindaki degeri: " << zaman2.saniyeBazindaZaman() << endl;

    return 0;
}

 

Örnekte görüldüğü gibi diğer değişkenler gibi bir fonksiyonu da sınıf içerisinde tanımlayıp “.” operatörüyle bu sınıfın nesnelerinden erişebiliyoruz.

Not: Fonksiyonların sınıf dışında tanımlanması da mümkündür. Bunun için kapsam alanı çözünürlüğü operatörü “::” kullanılmalıdır ve prototipi sınıfın içerisinde tanımlanmış olmalıdır. Şu şekilde gösterilebilir:

class Zaman{
public:
    int saat;
    int dakika;
    int saniye;
    int saniyeBazindaZaman();
};

int Zaman::saniyeBazindaZaman(){
    return saat*3600 + dakika*60 + saniye;
}

 

Yukarıda bahsedilen özellikleri kullanarak nesnenin özelliklerini değiştirip okutabilecek set fonksiyonları yazılabilir:

using namespace std;

class Zaman{
public:
    int saat;
    int dakika;
    int saniye;
    int saniyeBazindaZaman();
    void setSaat(int s);
    void setDakika(int d);
    void setSaniye(int sn);
};

int Zaman::saniyeBazindaZaman(){
    return saat*3600 + dakika*60 + saniye;
}

void Zaman::setSaat(int s){
    saat = s;
}

void Zaman::setDakika(int d){
    dakika = d;
}

void Zaman::setSaniye(int sn){
    saniye = sn;
}

int main () {
    Zaman zaman1;

    zaman1.setSaat(7);
    zaman1.setDakika(13);
    zaman1.setSaniye(51);

    Zaman zaman2;

    zaman2.setSaat(3);
    zaman2.setDakika(46);
    zaman2.setSaniye(11);

    cout << "zaman1 nesnesinin saniye bazindaki degeri: " << zaman1.saniyeBazindaZaman() << endl;

    cout << "zaman2 nesnesinin saniye bazindaki degeri: " << zaman2.saniyeBazindaZaman() << endl;

    return 0;
}

 

Çıktı:

zaman1 nesnesinin saniye bazındaki değeri: 26031

zaman2 nesnesinin saniye bazındaki değeri: 13571

Kurucu Fonksiyon

Kurucu fonksiyon,sınıftan bir nesne üretildiği anda çalışacak fonksiyondur.Nesnenin ilk halini olmasını istediğimiz şekilde kurucu fonksiyon içine yazabiliriz.Kurucu fonksiyon sınıfın ismi ile aynı olmalıdır.

class sekil{
public:
    int boy,
    int en;
    sekil(){           //kurucu fonksiyon
        boy=15;
    }
};

 

Yukarıdaki örnekte sekil sınıfından bir nesne oluşturulduğunda boy değişkenine 15 değeri otomatik olarak atanır.En değişkenine ise hiçbir şey atanmaz.

Nesne Oluşturma

Nesne oluşturmak için,ait olmasını istediğimiz sınıfın ismini belirmeliyiz.

int main(){
sekil a;
return 0;
}

Burada sekil sınıfımızdan a isminde bir nesne oluşturmuş olduk.Sekil sınıfımızda yazdığımız gibi a isimli nesne boy ve en değişkenlerine sahiptir.Ve nesneyi ürettiğimiz anda kurucu fonksiyonumuzda çalışmış oldu,boy değişkenine 15 değerini atadı.main fonksiyonu içinde en değişkenini de kendimiz atayabiliriz. Bir nesnenin değişkenlerine ulaşmak için (nesnenin ismi . erişmek istediğimiz değişken) şeklinde yapı kullanırız.

main(){
    sekil a;
    a.en=13;
    cout<<a.boy<<"  "<<a.en;

    return 0;
}

 

Özetle :

Sekil sınıfı tanımladık.Sınıftan bir nesne oluşturduk,kurucu fonksiyonumuz otomatik olarak boy değişkenine 15 değerini atadı.Sonrasında bizde main fonksiyonu içinde nesnemizin en değişkenine erişip 13 değerini atadık. ekran çıktısı :15 13 şeklinde olacaktır.

İlk değerleri kendimiz atamak istiyorsak kurucu fonksiyona normal fonksiyonlardaki gibi parametre atayabiliriz.

class sekil{
public:
    int boy,
    int en;
    sekil(int boy,int en){ //kurucu fonksiyon
        this->boy=boy;
        this->en=en;
    }
};

 

int main(){

    sekil a(20,22);
    cout<<a.boy<<"  "<<a.en;


    return 0;
}

 

Burada parametreli bir nesne oluşturduk.Kurucu fonksiyona 20 ve 22 değerlerini yolladık,fonksiyonun kendi boy ve en değişkenleri 20 ve 22 değerlerine sahip olmuş oldu.Daha sonra bu değerleri sınıfa ait boy ve en değişkenlerine atadık.Yani nesnemiz boy ve en değişkenleri 20 ve 22 değerlerine sahip bir şekilde üretilmiş oldu.* *ekran ciktisi : 20 22

[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width=”1/2″][vc_btn title=”Önceki Ders” color=”green” align=”left” i_icon_fontawesome=”fa fa-chevron-left” add_icon=”true” link=”url:https%3A%2F%2Fyapbenzet.org.tr%2Fcpp-fonksiyonlar-ve-nesneler%2F|||”][/vc_column][vc_column width=”1/2″][vc_btn title=”Sonraki Ders” color=”green” align=”right” i_align=”right” i_icon_fontawesome=”fa fa-chevron-right” add_icon=”true” link=”url:https%3A%2F%2Fyapbenzet.org.tr%2Fcpp-kapsulleme%2F|||”][/vc_column][/vc_row]