C++ Dilinde Kalıtım ve Kurucu Fonksiyonlar

C++’ta yazılan kodun yeniden kullanılabilmesini sağlayan mekanizmaya kalıtım diyoruz. Yani katılım, bir sınıfın alınıp, başka bir sınıfın içerisinde bilgilerinin kullanabilmesidir. Bu özellik yazılım yaparken işimizi oldukça kolaylaştırıyor. Burada kurucu fonksiyonlardan da bahsetmek istiyorum. Öncelikle, kurucu fonksiyonlar (Constructors) üyesi oldukları sınıf ile aynı ismi taşırlar ve üyesi oldukları sınıftan bir nesne yaratılırken kendiliğinden canlanırlar. Ayrıca kurucular parametre alırlar ama geri dönüş değerleri yoktur.

#include <iostream>
#include <conio.h>
using namespace std;

class sekil
{
 public:
 int alan;
 string birim;
 string sekilturu; 
 void alanyazdir()
 {
 cout<<sekilturu<<" "<<alan<<" "<<birim<<" "<<endl;
 } 
 sekil()
 {
 birim="cm2";
 }
};

class ucgen:public sekil
{
 public:
 int yukseklik,taban;
 ucgen()
 {
 sekilturu="ucgen";
 }
 
};

class dikdortgen:public sekil
{
 public:
 int en,boy;
 dikdortgen()
 {
 sekilturu="dikdortgen";
 }
};

class kare:public sekil
{
 public:
 int kenar;
 kare()
 {
 sekilturu="kare";
 }
};

class daire:public sekil
{
 public:
 int yaricap;
 daire()
 {
 sekilturu="daire";
 }
};

int main()
{
 kare k1;
 k1.kenar=10;
 k1.alan=k1.kenar*k1.kenar;
 k1.alanyazdir();
 
 daire d1;
 d1.yaricap=10;
 d1.alan=3.14*d1.yaricap*d1.yaricap;
 d1.alanyazdir();
 
}
Reklamlar

C++ Dilinde Class Yapısı

Sınıf yapısı ile birlikte OOP (object oriented programming) yani nesneye dayalı programlamaya başladık arkadaşlar.

Bu yapı struct (yapı) ile oldukça benzerdir ve kullanımı aynıdır. struct ile class arasındaki fark:

“Sınıfların referans türünde, yapıların ise değer türünden olmasıdır. Bundan dolayı yapılar stack (yığın) alanı üzerinde, sınıflar ise heap (öbek) alanı üzerinde tutulurlar. Sınıflara referans aracılığıyla ulaşılırken yığınlara ise doğrudan ulaşabiliriz. Bu nedenle yapı kullanımı sınıf kullanımına göre daha az maliyetlidir ve erişim hızı yüksektir.”

Şimdi gelelim aşağıdaki örneğimize. Burada bir daire sınıfı tanımladık ve elemanlarını public yaptık (yani dışarıdan erişilebilir). Sınıfın dışında bir hesap fonksiyonu oluşturduk ve main() fonksiyonunun içine çevre ve alanı yazdırdık. Bunu daire tipinde bir nesne oluşturarak ve hesap() fonksiyonu ile gerçekleştirdik.

#include <iostream>
#include <conio.h>
using namespace std;
class daire
{ 
 public:
 float cevre,alan;
 int hesap();
};

int daire::hesap()
{
 int yaricap;
 cout<<"Yaricapi giriniz:"<<endl;
 cin>>yaricap;
 cevre=2*3.14*yaricap;
 alan=3*yaricap^2;
 cout<<"Cevre:"<<cevre<<endl<<"Alan:"<<alan<<endl;
 return 0;
}
int main()
{
 daire nesne;
 cout<<nesne.hesap();
 getch();
}