1. KBUZEM
Karabük Üniversitesi
Uzaktan Eğitim Araştırma ve Uygulama Merkezi
13. Sınıfları başlık dosyaları içinde tanımlayıp kullanmak
Örnek1: Aşağıda verilen A isimli sınıfı A.h olarak kaydedip ana program içinden
#include "A.h" tanımlaması yapılarak çağrılabilir. Verilen programlar Dev C++ ile
derlenmiştir.
//------------------- A.h -------------------------------------
#include<iostream>
using namespace std;
13.
HAF
TA
NESNEYE DAYALI
PROGRAMLAMA
2. BLM301
Mikroişlemciler
2
Karabük Üniversitesi Uzaktan EğitimAraştırma ve Uygulama Merkezi
Mühendislik Fakültesi No:215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
class A
{
public:
int i;
void yaz()
{ y=5.2; z=78;
cout<<"y= "<<y<<" i= "<<i<<" z= "<<z<<endl;
}
private:
float y;
int z;
};
// ---------------- Ana program ----------------
#include<iostream>
#include "A.h"
using namespace std;
int main()
{
A n1;
n1.i=5;
n1.yaz();
cin.get();
return 0;
}
Örnek 2: Aşağıda verilen programda Anaprogram derlendiğinde
redefinition of `class A' ve previous definition of `class A' hatası ile karşılaşmaktayız. Türkçe
anlamı A sınıfının ana programda iki defa tanımlandığını ifade etmektedir. Çünki B.h
dosyasına A.h dosyası dahil edilmiş. Daha sonda Ana programda
#include "A.h"
#include "B.h"
Satırları ile A.h dosyası iki defa eklenmiş olmaktadır. Bu şekilde tekrar tanımlar nasıl
önlenebilir.. Örnek 3 de bunun çözümü verilmiştir.
//----------- A.h-----------------
class A
{ float y;
int z;
public:
int i;
};
//---------------- B.h -------------
#include "A.h"
class B
{
public:
double x;
};
3. BLM301
Mikroişlemciler
3
Karabük Üniversitesi Uzaktan EğitimAraştırma ve Uygulama Merkezi
Mühendislik Fakültesi No:215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
//----------------- Ana program------------------
#include<iostream>
#include "A.h"
#include "B.h"
using namespace std;
int main()
{
A A1;
B B1;
A1.i=10;
B1.x=20;
cout<<A1.i<<endl;
cout<<B1.x<<endl;
cin.get();
return 0;
}
Örnek3:
//-------------- A.h-----------------------
#ifndef A_H //A.h dosyası tanımlanmadı ise
#define A_H //A.h dosyasını tanımla
class A
{ float y;
int z;
public:
int i;
};
#endif
//-------------- B.h--------------------
#ifndef B_H //B.h dosyası tanımlanmadı ise
#define B_H //B.h dosyasını tanımla
#include "A.h"
class B
{
public:
double x;
};
#endif
// ------------------- Ana program ---------------
#include<iostream>
#include "B.h"
#include "A.h"
using namespace std;
int main()
{ A A1;
B B1;
A1.i=10;
B1.x=20;
cout<<A1.i<<endl;
4. BLM301
Mikroişlemciler
4
Karabük Üniversitesi Uzaktan EğitimAraştırma ve Uygulama Merkezi
Mühendislik Fakültesi No:215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
cout<<B1.x<<endl;
cin.get();
return 0;
}
// A.h
#include "B.h"
#ifndef A_H
#define A_H
class A
{
public:
int x,y,z;
int add(int a, int b, int c)
{
x=a; y=b; z=c;
return (x+y+z);
}
};
#endif // H_A
//B.h
#ifndef B_H
#define B_H
class B
{
public:
double d1,d2;
double add(double a,double
b)
{
d1=a; d2=b;
return (d1+d2);
}
};
#endif // H_B
//week14.cpp
#include <conio.h>
using namespace std;
#include <iostream>
#include "A.h"
#include "B.h"
int main () {
A a;
B b;
cout<<a.add(3,15,17)<<endl;
cout<<b.add(3.1,15.1)<<endl;
getch();
return 0;
}
5. BLM301
Mikroişlemciler
5
Karabük Üniversitesi Uzaktan EğitimAraştırma ve Uygulama Merkezi
Mühendislik Fakültesi No:215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
Sınıflarda Static ifadesinin kullanımı.
#include <conio.h>
using namespace std;
#include <iostream>
int id=10;
int genId(){
static int id=0;
::id++;
return id;
}
int main () {
int id=25;
cout<<genId()<<endl;
cout<<genId()<<endl;
cout<<id<<endl;
cout<<::id<<endl;
getch();
return 0;
}
// static variable
#include <conio.h>
using namespace std;
#include <iostream>
int GenerateID()
{
static int ID = 0;
return ID++;
}
int main()
{
cout << GenerateID() << endl;
6. BLM301
Mikroişlemciler
6
Karabük Üniversitesi Uzaktan EğitimAraştırma ve Uygulama Merkezi
Mühendislik Fakültesi No:215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
cout << GenerateID() << endl;
cout << GenerateID() << endl;
getch();
return 0;
}
#include <conio.h>
using namespace std;
#include <iostream>
class Something
{
private:
static int IDGenerator;
int ID;
public:
Something() { ID = IDGenerator++; }
int GetID() { return ID; }
int GetIDGenerator() { return
IDGenerator; }
};
int Something::IDGenerator = 0;
int main()
{
Something cFirst;
Something cSecond;
Something cThird;
cout << cFirst.GetID();
cout << cFirst.GetIDGenerator();
cout << cSecond.GetID();
cout << cSecond.GetIDGenerator();
cout << cThird.GetID();
cout << cThird.GetIDGenerator();
getch();
return 0;
}
7. BLM301
Mikroişlemciler
7
Karabük Üniversitesi Uzaktan EğitimAraştırma ve Uygulama Merkezi
Mühendislik Fakültesi No:215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
Bir sınıf içinde bir değişken static ile tanımlanırsa, Bu değişkenbu sınıftan oluşturulan
bütün nesneler tarafıdan ortak kullanılır.
#include<iostream>
using namespace std;
class Bir
{
public:
static int sayi;
Bir()
{sayi ++;}
};
int Bir::sayi=0; //static değişkene ilk değer verme
int main()
{
Bir n1,n2,n3,n4,n5,n6;
cout<<"Nesnelerin sayisi: "<<n1.sayi<<endl;
n1.sayi=6;
n2.sayi=8;
n3.sayi=16;
n4.sayi=5;
n5.sayi=7;
n6.sayi=53;
cout<<"n1.sayi= "<<n1.sayi<<endl;
cout<<"n2.sayi= "<<n2.sayi<<endl;
cout<<"n3.sayi= "<<n3.sayi<<endl;
cout<<"n4.sayi= "<<n4.sayi<<endl;
cout<<"n5.sayi= "<<n5.sayi<<endl;
cout<<"n6.sayi= "<<n6.sayi<<endl;
cin.get();
return 0;
}