Mühazirə14: C++-da varislik və virtual funksiyalar


Misal: c.show() nəticəsində nə baş verəcək?



Yüklə 0,59 Mb.
səhifə9/9
tarix19.06.2022
ölçüsü0,59 Mb.
#61805
növüMühazirə
1   2   3   4   5   6   7   8   9
Varislik.Virtual funk.

Misal: c.show() nəticəsində nə baş verəcək?

#include


using namespace std;
// yol_neqliyyati -adlı baza sinifi təyi edirik
class yol_neqliyyati {
int wheels;
int passengers;
public:
void set_wheels(int num) { wheels = num; }
int get_wheels() { return wheels; }
void set_pass(int num) { passengers = num; }
int get_pass() { return passengers; }
};
// truck-yük maşınları üçün törəmə sinifi təyin edirik.
class truck : public yol_neqliyyati {
int Yuk;
public:
void set_Yuk(int size) { Yuk = size; }
int get_Yuk() { return Yuk; }
void show();
};

// enumerator teyin edirik.


enum M_tipi {car, van, wagon};

// minik avtomobilləri üçün törəmə sinifi təyin edirik.


class automobile : public yol_neqliyyati {
enum M_tipi car_type;
public:
void set_type(M_tipi t) { car_type = t; }
enum M_tipi get_type() { return car_type; }
void show();
};

void truck::show()


{
cout << "Teker: " << get_wheels() << "\n";
cout << "Sernishin: " << get_pass() << "\n";
cout << "Yuku (m3): " << Yuk << "\n";
}
void automobile::show()
{
cout << "Teker: " << get_wheels() << "\n";
cout << "Sernishin: " << get_pass() << "\n";
cout << "Tipi: ";
switch(get_type()) {
case van: cout << "Avtofurqon\n";
break;
case car: cout << "Minik\n";
break;
case wagon: cout << "Tir\n";
}
}

int main()


{
truck t1, t2;
automobile c;
t1.set_wheels(18);
t1.set_pass(2);
t1.set_Yuk(320);
t1.show();
cout << "\n";

t2.set_wheels(6);


t2.set_pass(3);
t2.set_Yuk(120);
t2.show();
cout << "\n";

c.set_wheels(4);


c.set_pass(6);
c.set_type(van);
c.show();
return 0;
}



Misal. Proqramı şərh edin və səhvi tapın
#include "stdafx.h"
#include
#include
using namespace std;

class Person // Insanlar sinifi


{
public:
string profession;
int age;

Person(){profession="Peshesiz"; age=16;}

void display()


{
cout << "Peshemin adi: " << profession << endl;
cout << "Yashim: " << age << endl;
}
virtual void walk(){ cout << "Normal Geze bilirem." << endl; }
void talk() { cout << "Normal Danisha bilirem." << endl; }
};

// MathsTeacher sinifi Person –un (baza sinifin) törəməsidir(varisidir).


class MathsTeacher : public Person //futbolcular sinifi
{
public:
MathsTeacher(){profession="Muellim"; age=26;}
void walk() { cout << "Agir-agir Geze bilirem." << endl; } // virtual
void talk() { cout << "ingilisce Danisha bilirem." << endl; }//uzv funksiya
void teachMaths() { cout << "Riyaziyyatdan ders deyirem." << endl; }

};

// Footballer sinifi Person –un (baza sinifin) törəməsidir(varisidir).


class Footballer : public Person
{
public:
Footballer(){profession="Futbolcu"; age=26;}
void walk() { cout << "Tez-tez Geze bilirem." << endl; }// virtual funksiya
void talk() { cout << "Pis Dansha bilirem." << endl; }//uzv funksiya
void playFootball() { cout << "Futbol oynayiram." << endl; }

};

int main()


{
const int N=3;
Person *insan[N];
//insan[0]=new Footballer();
//insan[1]=new MathsTeacher();
//insan[2]=new Footballer();

for (int i = 0; i < N; i++)
{
if (rand()%2)
insan[i]=new Footballer();
else insan[i]=new MathsTeacher();
insan[i]->age=(rand()%30);
}

for (int i = 0; i < N; i++)


{
insan[i]->display();
insan[i]->walk();
insan[i]->talk();
insan[i]->playFootball(); //Sehv!
cout << endl;
}
return 0;
}




Misal. Proqram kodunda müdaxilə icazələrini döğrudurmu?
#include
#include
class base
{
public:
int x;
protected:
int y;
private:
int z;
};

class publicVaris: public base //Baza və Varis üzvlərə medaxilə icazəsində dəyişiklik olmur


{
// x - bu sinifin public üzvünə çevrildi.(dəyişilməz qaldı)
// y - bu sinifin ptotected üzvünə çevrildi. (dəyişilməz qaldı)
//publicVaris -də z-dən istifadə icazəsi yoxdur! (dəyişilməz qaldı)
};

class protectedVaris: protected base // publicVaris sinifi base sinifinin üzvlərinə müdaxiləsi - protected - çevrildi. Base-in Private üzvləri yenə də privete-dir!


{
// x - bu sinifin protected üzvünə çevrildi.
// y - bu sinifin protected üzvünə çevrildi.
//protectedVaris-də z-dən istifadə icazəsi yoxdur! (dəyişilməz qaldı)
};
class privateVaris: private base
{
// x -bu sinifin private üzvünə çevrildi.
// y -bu sinifin private üzvünə çevrildi.
// privateVaris-də z-dən istifadə icazəsi yoxdur! (dəyişilməz qaldı)
};

int main()


{
base b;
b.x=5;
//b.y=2;//müdaxiləyə icaze yoxdur
//b.z=0;//müdaxiləyə icaze yoxdur
publicVaris pubV;
pubV.x=1;
//pubV.y=2; //müdaxiləyə icaze yoxdur
//pubV.z=1; //müdaxiləyə icaze yoxdur
protectedVaris proV;
//proV.x=1;// müdaxiləyə icaze yoxdur
//proV.y=1;// müdaxiləyə icaze yoxdur
//proV.z=2;// müdaxiləyə icaze yoxdur
privateVaris prV;
//prV.x=5;// müdaxiləyə icaze yoxdur
//prV.y=2;// müdaxiləyə icaze yoxdur
//prV.z=1;// müdaxiləyə icaze yoxdur
return 0;
}

Yüklə 0,59 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin