2. BLM225
Nesneye Dayalı Programlama
2
KBUZEM
Karabük Üniversitesi
Uzaktan Eğitim Araştırma ve Uygulama Merkezi
7. Kalıtım
Kalıtım (inheritance) bir nesnenin başka bir nesnenin özelliklerini birebir devralmasıdır. Eğer
tanımlamak istediğimiz bir nesne önceden tanımlanmış bir nesnenin de özelliklerine sahip ise
kalıtım yolu ile bu nesnenin özeliklerini alıp ek özellikleri ilave ederek nesneyi oluşturabiliriz.
Böylece nesne tanımlama işlemini kolaylaştırabilir ve kısaltabiliriz.
Kalıtım nesneye dayalı programlamanın temel özelliklerinden biridir. Bu sayede bir sınıfın içine
başka bir sınıfı dahil etmiş oluruz. Özellikleri devralınan sınıf Temel sınıf(base class) olarak
isimlendirilir. Temel sınıfın dahil edildiği sınıf türemiş sınıf(Derived class) olarak isimlendirilir.
Temel sınıf yaygın, genel, ortak özelliklerden oluşur. Türemiş sınıflar temel sınıflara ilave
olarak ek özellikler içerir.
Temel sınıfa Ebeveyn sınıf(Parent class)
Türemiş sınıfa çocuk sınıf(child class) gibi isimlerde verilmektedir.
Bir türemiş sınıf şu şekilde tanımlanır.
class Türemiş Sınıf : Erişim türü Temel Sınıf{
};
Cokgen, Dortgen ve Ucgen şeklinde üç sınıf tanımlamak isteyelim. Dortgen ve Ucgen sınıfları
aslında birer cokgendir. Cokgen sınıfını temel sınıf olarak tanımlayıp diğer sınıfları bu sınıftan
türetebiliriz.
class Dortgen : public Cokgen { … }
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
2
3. BLM225
Nesneye Dayalı Programlama
3
class Ucgen : public Cokgen { … }
Erişim türü public, private veya protected olabilir. Sıklıkla kullanılan erişim türü public dir.
Aşağıda verilen programda kalıtım yolu ile Cokgen sınıfından türetilmiş Dortgen ve Ucgen
sınıfları görülmektedir.
#include <iostream>
using namespace std;
class Cokgen {
protected:
int genislik, yukseklik;
public:
void DegerVer(int a,int b) {
genislik=a; yukseklik=b;
}
};
class Dortgen : public Cokgen{ //Dorgen sınıfı Cokgen sınıfından turetiliyor
public:
int Alan () {return genislik*yukseklik;}
};
class Ucgen : public Cokgen{ //Ucgen sınıfı Cokgen sınıfından turetiliyor
public:
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
3
4. BLM225
Nesneye Dayalı Programlama
4
int Alan () {return (genislik*yukseklik)/2;}
};
int main ()
{
Dortgen D1;
Ucgen U1;
//D1 Dortgen nesnesinin genişlik ve yüksekliğine değeri atanıyor.
D1.DegerVer(3,4);
//U1 Ucgen nesnesinin genişlik ve yüksekliğine değeri atanıyor.
U1.DegerVer(7,2);
cout << "Dortgen Alan: " << D1.Alan()<<endl;
cout << "Ucgen Alan: " << U1.Alan()<<endl;
return 0;
}
Cokgen sınıfı içindeki protected erişim denetleyicisi private erişim denetleyicisine çok
benzemektedir ve Çokgen sınıfı için private anlamındadır. Dışardan erişime private de olduğu
gibi kapalıdır. Ancak Protected altında tanımlanan değişkenlere türemiş (Dortgen, Ucgen)
sınıflar erişip kullanabilir. Türemiş sınıflar temel sınıfın private üyerlerine erişemezler.
Aşağıdaki tabloda erişim denetleyicilerin kullanımları özetlenmiştir.
Erişim Public Protected Private
Sınıfın kendi üyeleri Evet Evet Evet
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
4
5. BLM225
Nesneye Dayalı Programlama
5
Türemiş sınıfın üyeleri Evet Evet Hayır
Üye olmayanlar Evet Hayır Hayır
Başka bir ornek
#include <iostream>
using namespace std;
class Cokgen {
public:
int genislik, yukseklik;
public:
void DegerVer(int a,int b) {
genislik=a; yukseklik=b;
}
};
class Dortgen : public Cokgen{ //Dorgen sınıfı Cokgen sınıfından turetiliyor
public:
int Alan () {return genislik*yukseklik;}
};
class Ucgen : public Cokgen{ //Ucgen sınıfı Cokgen sınıfından turetiliyor
public:
int Alan () {return (genislik*yukseklik)/2;}
};
int main ()
{
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
5
6. BLM225
Nesneye Dayalı Programlama
6
Dortgen D1;
Ucgen U1;
//D1 Dortgen nesnesinin genişlik ve yüksekliğine değeri atanıyor.
D1.DegerVer(3,4);
//U1 Ucgen nesnesinin genişlik ve yüksekliğine değeri atanıyor.
U1.DegerVer(7,2);
cout << "Dortgen x: " << D1.genislik<<endl;
cout << "Dortgen y: " << D1.yukseklik<<endl;
cout << "Ucgen x: " << U1.genislik<<endl;
cout << "Ucgen y: " << U1.yukseklik<<endl;
cout << "Dortgen Alan: " << D1.Alan()<<endl;
cout << "Ucgen Alan: " << U1.Alan()<<endl;
return 0;
}
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
6
7. BLM225
Nesneye Dayalı Programlama
7
Başka bir ornek:
#include <iostream>
using namespace std;
class Cokgen {
protected:
int genislik, yukseklik;
public:
void Goster (void);
void DegerVer(int a,int b) {
genislik=a; yukseklik=b;
}
};
class Dortgen : public Cokgen{ //Dorgen sınıfı Cokgen sınıfından turetiliyor
public:
int Alan () {return genislik*yukseklik;}
};
class Ucgen : public Cokgen{ //Ucgen sınıfı Cokgen sınıfından turetiliyor
public:
int Alan () {return (genislik*yukseklik)/2;}
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
7
8. BLM225
Nesneye Dayalı Programlama
8
};
void Cokgen::Goster (void) {
cout << " genislik : " << genislik<<endl;
cout << " yukseklik : " << yukseklik<<endl;
}
int main ()
{
Dortgen D1;
Ucgen U1;
//D1 Dortgen nesnesinin genişlik ve yüksekliğine değeri atanıyor.
D1.DegerVer(3,4);
//U1 Ucgen nesnesinin genişlik ve yüksekliğine değeri atanıyor.
U1.DegerVer(7,2);
D1.Goster();
U1.Goster();
// cout << "Dortgen Alan: " << D1.genislik<<endl;
cout << "Dortgen Alan: " << D1.Alan()<<endl;
cout << "Ucgen Alan: " << U1.Alan()<<endl;
return 0;
}
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
8
9. BLM225
Nesneye Dayalı Programlama
9
12.1 Public, protected ve private kalıtım
Bir temel sınıftan bir sınıf türetildiğinde temel sınıf türemiş sınıfa public, protected veya private
olarak dahil edilebilir. Protected ve private kalıtımın kullanımı yaygın değildir ve kullanımı
dikkat gerektirir.
Aşağıda verilen örnekte A sınıfı B sınıfından public erişim türü ile türetilmiştir. Buna public
kalıtım denmektedir.
class A : public B { … }
Bu tür kalıtımda
B temel sınıfının public üyeleri A türemiş sınıfının public üyeleri olurlar. Aynı şekilde
B temel sınıfının protected üyeleri A türemiş sınıfının protected üyeleri olurlar.
B temel sınıfının private üyeleri A türemiş sınıfı için gizlidir ve erişilemezdirler
Aşağıda verilen örnekte C sınıfı D sınıfından protected erişim türü ile türetilmiştir. Buna
protected kalıtım denmektedir.
class C : protected D { … }
Bu tür kalıtımda
D temel sınıfının public üyeleri C türemiş sınıfının protected üyeleri olurlar. Aynı şekilde
D temel sınıfının protected üyeleri C türemiş sınıfının protected üyeleri olurlar. Aynı şekilde
D temel sınıfının private üyeleri C türemiş sınıfı için gizlidir ve erişilemezdirler
Aşağıda verilen örnekte E sınıfı F sınıfından private erişim türü ile türetilmiştir. Buna private
kalıtım denmektedir.
class E : private F { … }
Bu tür kalıtımda
F temel sınıfının public üyeleri E türemiş sınıfının private üyeleri olurlar. Aynı şekilde
F temel sınıfının protected üyeleri E türemiş sınıfının private üyeleri olurlar. Aynı şekilde
F temel sınıfının private üyeleri E türemiş sınıfı için gizlidir ve erişilemezdirler
#include <iostream>
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
9
10. BLM225
Nesneye Dayalı Programlama
10
using namespace std;
class A {
int x1;
protected:
int x,y;
public:
A(){x=5; y=10;}
void Goster1(void) {cout << "Deger = " << x<<" "<< y <<endl;}
void DegerVer(int a,int b) {
x=a; y=b;
}
};
class B : public A{
public:
void Goster2(void) {cout << "Deger = " << x<<" "<< y <<endl;}
};
class C : protected A{
public:
void Goster3(void) {cout << "Deger = " << x<<" "<< y<<endl;}
};
class D : private A{
public:
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
10
11. BLM225
Nesneye Dayalı Programlama
11
void Goster4(void) {cout << "Deger = " << x<<" "<< y <<endl;}
};
int main ()
{
A nesne1;
B nesne2;
C nesne3;
D nesne4;
nesne1.DegerVer(1,2);
nesne2.DegerVer(3,4);
//Alttaki satırda Hata DegerVer() fonksiyonu C sınıfı için protected dir
dışardan erişilemez
//Bu satırı siliniz.
nesne3.DegerVer(5,6);
//Alttaki satırda Hata DegerVer() fonksiyonu D sınıfı için private dir dışardan
erişilemez
//Bu satırı siliniz.
nesne4.DegerVer(7,8); //Hata DegerVer() fonksiyonu C sınıfı için dışardan
erişilemez
nesne1.Goster1();
nesne2.Goster2();
nesne3.Goster3();
nesne4.Goster4();
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
11
12. BLM225
Nesneye Dayalı Programlama
12
return 0;
}
7.2. Çoklu kalıtım (Multiple inheritance)
Birden fazla sınıf çoklu kalıtım yolu ile bir araya getirilerek yeni bir sınıf türetilebilir. Aşağıda
bunu örneği verilmiştir.
#include <iostream>
#include <conio.h>
using namespace std;
class Cokgen {
protected:
int genislik, yukseklik;
public:
void DegerVer(int a,int b) {
genislik=a; yukseklik=b;
}
};
class Yazdir {
public:
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
12
13. BLM225
Nesneye Dayalı Programlama
13
void yaz(int a){
cout<< a <<endl;
}
};
class Dortgen : public Cokgen, public Yazdir{ //Dorgen sınıfı Cokgen sınıfından
turetiliyor
public:
int Alan () {return genislik*yukseklik;}
};
int main ()
{
Dortgen D1;
D1.DegerVer(3,6);
D1.yaz(D1.Alan());
getch();
return 0;
}
#include <iostream>
#include <conio.h>
using namespace std;
class yeni {
public:
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
13
14. BLM225
Nesneye Dayalı Programlama
14
void ikikereyaz(int a){
cout<< a <<endl;
cout<< a <<endl;
}
};
class Cokgen {
protected:
int genislik, yukseklik;
public:
void DegerVer(int a,int b) {
genislik=a; yukseklik=b;
}
};
class Yazdir {
public:
void yaz(int a){
cout<< a <<endl;
}
};
class Dortgen : public Cokgen, public Yazdir, public yeni{ //Dorgen sınıfı Cokgen
sınıfından turetiliyor
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
14
15. BLM225
Nesneye Dayalı Programlama
15
public:
int Alan () {return genislik*yukseklik;}
};
int main ()
{
Dortgen D1;
D1.DegerVer(3,6);
D1.yaz(D1.Alan());
D1.ikikereyaz(D1.Alan());
getch();
return 0;
}
inheriatance problems “ambiguous request”
#include <iostream>
#include <conio.h>
using namespace std;
class Cokgen {
public:
int genislik, yukseklik;
public:
void DegerVer(int a, int b) {
genislik = a;
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
15
16. BLM225
Nesneye Dayalı Programlama
16
yukseklik = b;
}
public: int test(int x){
return x+1;
}
};
//------------------------------------
class Yazdir {
public:
void yaz(int);
public:
int test(int);
};
int Yazdir::test(int a){
return a;
}
void Yazdir::yaz(int a) {
cout << a << endl;
}
class Dortgen: public virtual Cokgen, public virtual Yazdir { //Dorgen sınıfı Cokgen
sınıfından turetiliyor
public: int Alan() {
return genislik * yukseklik;
}
};
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
16
17. BLM225
Nesneye Dayalı Programlama
17
class Ucgen: public Cokgen, public Yazdir { //Ucgen sınıfı Cokgen sınıfından
turetiliyor
public: int Alan() {
return (genislik * yukseklik) / 2;
}
};
int main() {
Dortgen D1;
Ucgen U1;
//D1 Dortgen nesnesinin genişlik ve yüksekliğine değeri atanıyor.
D1.DegerVer(3, 5);
//U1 Ucgen nesnesinin genişlik ve yüksekliğine değeri atanıyor.
U1.DegerVer(7, 10);
cout << "Dortgen x: " << D1.genislik << endl;
cout << "Dortgen y: " << D1.yukseklik << endl;
cout << "Ucgen x: " << U1.genislik << endl;
cout << "Ucgen y: " << U1.yukseklik << endl;
cout << "Dortgen Alan: ";
D1.yaz(D1.Alan());
cout << "Ucgen Alan: ";
U1.yaz(U1.Alan());
cout<<(static_cast<Yazdir &>(U1).test(5))<<endl;
cout<<(static_cast<Cokgen &>(U1).test(5))<<endl;
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
17
18. BLM225
Nesneye Dayalı Programlama
18
getch();
return 0;
}
#include <iostream>
#include <conio.h>
using namespace std;
class Cokgen {
protected:
int gen, yuk;
public:
Cokgen(){cout<<"kurucu calisti-C"<<endl;};
~Cokgen(){cout<<"yıkıcı çalıştı-C"<<endl;};
};
class Yaz {
public:
Yaz(){cout<<"kurucu calisti-Y"<<endl; };
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
18
19. BLM225
Nesneye Dayalı Programlama
19
~Yaz(){cout<<"yıkıcı calisti-Y"<<endl;};
void yazdir(){
cout<<"yazdirildi"<<endl;
}
};
class Ucgen : public Cokgen, public Yaz{
public:
Ucgen(){cout<<"kurucu calisti-U"<<endl; };
~Ucgen(){cout<<"yıkıcı calisti-U"<<endl;};
Ucgen(int a, int b) { gen=a; yuk=b; }
int Alan () {return gen*yuk;}
};
int main ()
{
{
Ucgen ucg(3,5);
cout<<ucg.Alan()<<endl;
ucg.yazdir();
}
getch();
return 0;
}
#include <iostream>
#include <conio.h>
using namespace std;
class X {
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
19
20. BLM225
Nesneye Dayalı Programlama
20
public:
X(){cout<<"kurucu calisti-X"<<endl;};
~X(){cout<<"yikici calisti-X"<<endl;};
};
class Y : public X {
public:
Y(){cout<<"kurucu calisti-Y"<<endl; };
~Y(){cout<<"yikici calisti-Y"<<endl;};
};
class Z : public Y{
public:
Z(){cout<<"kurucu calisti-Z"<<endl; };
~Z(){cout<<"yikici calisti-Z"<<endl;};
};
int main ()
{
{
Z z;
}
getch();
return 0;
}
#include <iostream>
#include <conio.h>
using namespace std;
class Yaz{
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
20
21. BLM225
Nesneye Dayalı Programlama
21
public:
void yazdir(){cout<<"yazdirma islemi basliyor"<<endl;}
};
class Cokgen: public Yaz {
protected:
int gen, yuk;
public:
Cokgen(){ };
Cokgen(int a, int b){gen=a; yuk=b;};
virtual int Alan () {return 0;}
};
class Dortgen : public Cokgen{ //Dorgen sınıfı Cokgen sınıfından turetiliyor
public:
Dortgen(){};
Dortgen(int a,int b) { gen=a; yuk=b; }
int Alan () {return gen*yuk;}
};
class Ucgen : public Cokgen{ //Ucgen sınıfı Cokgen sınıfından turetiliyor
public:
Ucgen(){ };
Ucgen(int a,int b) { gen=a; yuk=b;}
int Alan () {return (gen*yuk)/2;}
};
int main ()
{
Cokgen *c=new Cokgen(4,5);
Cokgen *u=new Ucgen(4,5);
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
21
22. BLM225
Nesneye Dayalı Programlama
22
Cokgen *d=new Dortgen(4,5);
cout<<c->Alan()<<endl;
cout<<u->Alan()<<endl;
cout<<d->Alan()<<endl;
c->yazdir();
getch();
return 0;
}
#include <iostream>
#include <conio.h>
using namespace std;
class A{
public:
A(){cout<<"k calisti-A"<<endl;};
~A(){cout<<"Y calisti-A"<<endl;};
};
class B: public A{
public:
B(){cout<<"k calisti-B"<<endl;};
~B(){cout<<"Y calisti-B"<<endl;};
};
class C: public B{
B bb;
public:
C(){cout<<"k calisti-C"<<endl;};
~C(){cout<<"Y calisti-C"<<endl;};
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
22
23. BLM225
Nesneye Dayalı Programlama
23
};
int main ()
{
{
C cc;
}
getch();
return 0;
}
#include <iostream>
#include <conio.h>
using namespace std;
class A{
private:
int corap;
protected:
int a;
public:
A(){cout<<"k calisti-A"<<endl;};
A(int x){a=x;}
void goster(){cout<<a<<endl;}
};
class B: public A{
int b;
public:
B(){cout<<"k calisti-B"<<endl;};
B(int x, int y){a=x; b=y;}
void goster(){cout<<a<<" , "<<b<<endl;}
};
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
23
24. BLM225
Nesneye Dayalı Programlama
24
int main ()
{
{
B bb();
// bb.goster();
A aa();
// aa.goster();
}
getch();
return 0;
}
#include <iostream>
#include <conio.h>
using namespace std;
class Mats{
public:
void add(int a, int b)
{cout<<a+b<<endl;}
void mult(int a, int b)
{cout<<a*b<<endl;}
};
class A{
protected:
int a;
public:
A(){ };
A(int x){a=x;}
void goster(){cout<<a<<endl;}
};
class B: public A, public Mats{
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
24
25. BLM225
Nesneye Dayalı Programlama
25
int b;
public:
B(){ };
B(int x, int y){a=x; b=y;}
void goster(){cout<<a<<" ,
"<<b<<endl;}
int geta(){return a;}
int getb(){return b;}
};
int main ()
{
B bb(5,4);
bb.goster();
bb.add(bb.geta(),bb.getb());
getch();
return 0;
}
#include <conio.h>
#include <iostream>
using namespace std;
class G{
private:
int x;
protected:
int y;
public:
G(){ };
G(int t){y=t;}
G(int s, int t){x=s; y=t;}
virtual void add()
{ cout<<x+y<<endl;}
};
class F:public G{
public:
F(int t){ y=t;}
F(){ };
virtual void add(){ cout<<y+10<<endl;}
};
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
25
26. BLM225
Nesneye Dayalı Programlama
26
class S : public F{
public:
S(int t){ y=t;}
S(){ };
void add(){ cout<<y+100<<endl;}
};
int main ()
{
G *g= new G(10,20);
G *f= new F(10);
G *s= new S(10);
g->add();
f->add();
s->add();
getch();
return 0;
}
#include <conio.h>
#include <iostream>
using namespace std;
class G{
private:
int x;
protected:
int y;
public:
G(){x=1000;y=0;};
G(int t){y=t;x=100;};
G(int s, int t){x=s; y=t;};
void add(){ cout<<x+y<<endl;};
};
class F:public G{
public:
F(int t){ y=t;}
F(){ };
void add(){ cout<<y+10<<endl;}
};
class S : public F{
public:
S(int t){ y=t;}
S(){ };
void add(){ cout<<y+100<<endl;}
};
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
26
27. BLM225
Nesneye Dayalı Programlama
27
int main ()
{
G *g= new G(10,20);
G *f= new F(100);
G *s= new S(10);
g->add();
f->add();
s->add();
getch();
return 0;
}
#include <iostream>
#include <conio.h>
using namespace std;
class B{
int y;
public:
B(){cout<<"k calisti-B"<<endl;};
~B(){cout<<"d calisti-B"<<endl;};
B(int x){cout<<"pk calisti-B"<<endl;
y=x;}
void goster(){cout<<y<<endl;}
};
int main ()
{
{
B c;
B b(5);
b.goster();
}
getch();
return 0;
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
27
28. BLM225
Nesneye Dayalı Programlama
28
}
#include <iostream>
#include <conio.h>
using namespace std;
class A{
protected:
int y;
public:
A(){cout<<"k calisti-A"<<endl;};
~A(){cout<<"d calisti-A"<<endl;};
A(int x){cout<<"pk calisti-A"<<endl; y=x;}
void goster(){cout<<y<<endl;}
};
class B: public A{
A A;
public:
B(){cout<<"k calisti-B"<<endl;};
~B(){cout<<"d calisti-B"<<endl;};
B(int x){cout<<"pk calisti-B"<<endl; y=x;}
};
int main ()
{
{
B c;
B b(5);
b.goster();
}
getch();
return 0;
}
#include <iostream>
#include <conio.h>
using namespace std;
class Araba{
protected:
int model; string renk;
public:
Araba(){model=2017; renk="beyaz";}
Araba(int mdl, string rnk){model=mdl; renk=rnk;}
void sur(){cout<<model<<" model "<<renk<<" renkli araci suruyorsunuz"<<endl;}
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
28
29. BLM225
Nesneye Dayalı Programlama
29
};
class TicariArac : public Araba {
private:
int ytSayisi;
public:
TicariArac(){ }
TicariArac(int mdl, string rnk, int yts){model=mdl; renk=rnk; ytSayisi=yts;}
TicariArac(int yts){ ytSayisi=yts;}
void sur(){cout<<ytSayisi<<" yolcu kapasiteli ";
cout<<model<<" model "<<renk<<" renkli ticari araci suruyorsunuz"<<endl;}
};
int main(){
Araba *arb = new Araba(2016,"siyah");
TicariArac *tarc1= new TicariArac(2010,"mavi",24);
TicariArac *tarc2= new TicariArac(14);
arb->sur();
tarc1->sur();
tarc2->sur();
getch();
return 0;
}
// çoklu kalıtım
#include <iostream>
#include <conio.h>
using namespace std;
class Servis{
protected:
string adi;
public:
void bakim(){cout<<"Servis bakimi yapiliyor"<<endl;}
};
class Araba{
protected:
int model; string renk;
public:
Araba(){model=2017; renk="beyaz";}
Araba(int mdl, string rnk){model=mdl; renk=rnk;}
void sur(){cout<<model<<" model "<<renk<<" renkli araci suruyorsunuz"<<endl;}
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
29
30. BLM225
Nesneye Dayalı Programlama
30
};
class TicariArac : public Araba, public Servis {
private:
int ytSayisi;
public:
TicariArac(){ }
TicariArac(int mdl, string rnk, int yts){model=mdl; renk=rnk; ytSayisi=yts;}
TicariArac(int yts){ ytSayisi=yts;}
void sur(){cout<<ytSayisi<<" yolcu kapasiteli ";
cout<<model<<" model "<<renk<<" renkli ticari araci suruyorsunuz"<<endl;}
};
int main(){
Araba *arb = new Araba(2016,"siyah");
TicariArac *tarc1= new TicariArac(2010,"mavi",24);
TicariArac *tarc2= new TicariArac(14);
arb->sur();
tarc1->sur();
tarc2->sur();
tarc1->bakim();
getch();
return 0;
}
Karabük Üniversitesi Uzaktan Eğitim Araştırma ve Uygulama Merkezi
Mühendislik Fakültesi No: 215 Balıklarkayası Mevkii 78050 Karabük TÜRKİYE
30