C++ - Nesne yönelimli programlamaya giriş

Selamlar herkese!

Uzun zamandır bu bloga yazı girmiyordum çünkü vaktim çok kısıtlı oluyor gün içerisinde maalesef. Keşke daha fazla vaktim olsa...

Her neyse, bu yazımda sizlerle nesne yönelimli programlamanın temelini ele alan bir örnek yapmaya karar verdim. Basit bir örnek.

Bir araba beyni yapalım! Tabii ki de tam teşekküllü bir beyin değil, sanal bir beyin. "Oyuncuktan".

Öncelikle sınıfların temel yapısından başlayalım. C++ sınıflarında, "public", "private", ve "protected" adlı durumlar ile değişken tanımlaması yapabiliriz. İsimlerinden de anlaşılacağı üzere;

  • public: Programa kodundaki tüm dış yerlerden ulaşılabilecek değişken veya fonksiyonları tanımlamak için kullanılır.
  • private: Gizli olan değişken veya fonksiyonlara program kodunda herhangi bir yerden ulaşamazsınız.
  • protected: Üstteki ikisinin karışımıdır, yani private gibi sınıf dışı yerlerden erişime izin vermez, ama sınıf içinde public gibi davranır. Bu örnekte değil de, daha sonraki örneklerde kullanacağım.
Public ve private'ı şimdiki örnek ile çok rahat anlayacağınızı umuyorum.
[CODE lang="cpp" title="Örnek bir araba beyni."]#include <iostream>
#define DEPOYU_FULLE_USTA 45 //Arabaların yakıt tankı genelde 45 litre yakıt alır.

class araba{
private:
float benzin_degeri = 3.4f; //3.4 litre benzinimiz var diyelim.
protected:
int arabanin_motor_omru = 20; //Bu arabamızın 20 yıllık bir motor ömrü olsun.
public:
araba(float ilk_yakit_miktari){ //Arabamızı ilk aldığımızda benzin olmalı, değil mi? :) Buna "constructor" denir. Arabamızı aldığımız zaman olacak olan özelliklerin ne olduğunu taşır diyebilirim.
benzin_degeri = ilk_yakit_miktari;
}
inline float ne_kadar_benzin_kaldi(){ //inline: derleyiciye bu fonksiyonun direkt olarak tanıtıldığını söyler. Gerekli değildir çoğu durumda fakat yazmaya alışmak kesinlikle iyi olacaktır. Daha sonraki yazılarımda üzerinde durabileceğim bir konu.
return benzin_degeri; //Evet, private bir değişkeni, public bir fonksiyon aracılığı ile döndürebiliriz. Bu tür fonksiyonlara "getter" denmektedir.
}
inline void benzin_doldur(float yeni_deger){ //void: Hiç bir değer döndürmeyen fonksiyonlara koyulur. Sadece işi yapar ve çekilir. O kadar. Bir nevi "tetikçidir."
benzin_degeri += yeni_deger; //Sonuçta benzini boşaltıp, tekrar benzin koymadık. Üzerine ekledik.
std::cout<<yeni_deger<<" litre kadar benzin koydum. "<<(yeni_deger == 45?"Depoyu fulledim.\n":"\n");
}
inline void benzin_tankini_bosalt(){
benzin_degeri = 0.0f;
std::cout<<"Benzin tanki artik bos. En yakin benzincide arabaya benzin koyun.\n";
}
};
int main(){
araba gicir_gicir_bir_araba(DEPOYU_FULLE_USTA); //Full depo benzinle gelsin arabamız.
gicir_gicir_bir_araba.benzin_tankini_bosalt(); //Benzinimiz bitti diyelim.
gicir_gicir_bir_araba.benzin_doldur(DEPOYU_FULLE_USTA);
std::cout<<gicir_gicir_bir_araba.ne_kadar_benzin_kaldi()<<" litre kadar benzinimiz kaldi.\n";
return 0;
}[/CODE]

Evet, bu ders bu kadardı. Çok şey öğrendiniz, az şey değil. Kodun uzunluğu sizi yanıltmasın lütfen. Constructor, public, private gibi sınıfların temel yapı taşlarını öğrendiniz. Bir dahaki yazımda umarım inheritance (kalıtım), destructor gibi konularla ilerleyebiliriz.

Yorumlar


Blog girdisi detayları

Ekleyen
TerabyteForever
Okuma süresi
2 dakika okuma
Görüntüleme
633
Yorumlar
5
Son güncelleme

Yazılım kategorisindeki diğer girdiler

TerabyteForever adlı kullanıcının diğer girdileri

Bu girdiyi paylaş

Geri
Yukarı