0% found this document useful (0 votes)
18 views8 pages

Cod 12 P5

The document discusses object-oriented programming concepts like classes, objects, inheritance, polymorphism and more. It provides examples of defining classes with properties and methods, and inheriting from base classes.

Uploaded by

Mihaela Guja
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views8 pages

Cod 12 P5

The document discusses object-oriented programming concepts like classes, objects, inheritance, polymorphism and more. It provides examples of defining classes with properties and methods, and inheriting from base classes.

Uploaded by

Mihaela Guja
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 8

#include <iostream>

#include <iomanip>
#include <cstdlib>
#include <ctime>

#include <string>
#include <cstring>
using namespace std;

/*
CLASS

class nume_class
{

proprietate1;
proprietate2;
...
proprietateN;

metoda1();
metoda2();
...
metodaN();

}Object1,....,ObjectN;

nume_class Object1,....,ObjectN;

// zone de securitate

1. public:
2. private:
3. protected:

::

seteri si geteri

metode private

this

inline

constructori

1. constructor implicit
2. constructor supraincarcat
3. constructor de copiere

constructor(param1,....,paramN):proprietatea1(param1),...,proprietateaN(paramN)
{
}

destructor

functii prietene

friend

Supraincarcarea operatorilor

tip_date_functie operator opeator_supraincarcat(param1,...,paramN)


{

metode Supraincarcarea operatorilor

supraincarcarea = []

string

Mostenirea

class Nume_clasa1 : public Nume_clasa2

clasa derivata : public deBaza

simpla : clasa derivata : public deBaza

multimpla : clasa derivata : public deBaza1, public deBaza2, ..., public


deBazaN

protected:

clase virtuale

tipurile de mosteniri

1. mostenirea public => clasa derivata : public deBaza

public: - public
protected: - protected
privata: - nu se mosteneste

*/

/*
class A
{
protected:

int a;

public:

A(){ cout<<" constructor A "<<endl; }

A(int a):a(a){ }

~A(){ cout<<" destructor A "<<endl; }

void mA(){ cout<<" metoda A "<<endl; }

void showA(){ cout<<" a= "<<this->a; }

};

class B : public A
{
protected:

int b;

public:

B(){ cout<<" constructor B "<<endl; }

B(int b, int a):b(b),A(a){ }

~B(){ cout<<" destructor B "<<endl; }

void mB(){ cout<<" metoda B "<<endl; }

void showB(){ cout<<" b= "<<this->b; }

};

class C : public B
{
protected:

int c;
public:

C(){ cout<<" constructor C "<<endl;


this->mA();
this->mB();
}

C( int a, int b, int c):c(c),B( b , a ){}

~C(){ cout<<" destructor C "<<endl;


this->mA();
this->mB();
}

void mC(){ cout<<" metoda C "<<endl; }


void showC(){ cout<<" c= "<<this->c; }
};

// A -> B -> C

// C x1 -> B -> A

// B x2 -> A

// A x3
*/
/*
class OM
{
private:

void ALG_pasword(){ };

string password;

public:

OM(int Ani=NULL){ this->Ani=Ani; }


OM(string Nume){ this->Nume=Nume; this->Ani=NULL; }

OM(int Ani,string Nume){ this->Nume=Nume; this->Ani=Ani; }

~OM(){};

void setNUME(){ cin>>this->Nume; }


string getNUME(){ return this->Nume;}

void setANI(){ cin>>this->Ani; }


int getANI(){ return this->Ani; }

protected:
string Nume;
int Ani;

};
class Student : public OM
{
string Grupa;
double Medie;

public:

Student(double Medie=NULL):Medie(Medie){ }

Student(string Grupa):Grupa(Grupa),Medie(NULL){ }

Student(string Grupa,double Medie, string


Nume):Grupa(Grupa),Medie(Medie),OM(Nume){ }

Student(int Ani , string Grupa , double Medie , string Nume ):Grupa(Grupa),

Medie(Medie),OM(Ani,Nume){ }

Student(Student&OBJ)
{
this->Nume = OBJ.Nume;
this->Ani = OBJ.Ani;
this->Grupa =OBJ.Grupa;
this->Medie = OBJ.Medie;
}

~Student(){};

void setMEDIE(){ cin>>this->Medie; }


double getMEDIE(){ return this->Medie;}

void setGRUPA(){ cin>>this->Grupa; }


string getGRUPA(){ return this->Grupa; }

};

*/
/*
class Angajat : public OM
{
public:
string Functie;
int Salariu;
};
*/

/*

class A
{
protected :

int a;

public:

A(){ cout<<" constructor A "<<endl; }


~A(){ cout<<" destructor A "<<endl; }

};

class B : virtual public A


{
public:

B(){ cout<<" constructor B "<<endl; }

~B(){ cout<<" destructor B "<<endl; }

};

class C : virtual public A


{
public:

C(){ cout<<" constructor C "<<endl; }

~C(){ cout<<" destructor C "<<endl; }

};

class D : public B , public C


{
public:

D(){ cout<<" constructor D "<<endl; this->a = 123 ; }

~D(){ cout<<" destructor D "<<endl; }

};

// -> B -> A
// D
// -> C -> A

// -> B -> virtual A


// D -> A
// -> C -> virtual A
*/

/*
tipurile de mosteniri

1. mostenirea public => clasa derivata : public deBaza

public: - public
protected: - protected
privata: - nu se mosteneste

2. mostenirea protected => clasa derivata : protected deBaza


public: - protected
protected: - protected
privata: - nu se mosteneste

3. mostenirea private => clasa derivata : private deBaza (se mosteneste o


singura data)

public: - private
protected: - private
privata: - nu se mosteneste

*/

class A
{
int x;

public:

A(){ cout<<" constructor A "<<endl; }

~A(){ cout<<" destructor A "<<endl; }

void mA(){ cout<<" mA() "<<endl; }

protected :

int a;

};

class B : private A
{

public:

B(){ cout<<" constructor B "<<endl; this->a=123; this->mA(); }

~B(){ cout<<" destructor B "<<endl; }

};

class C : public B
{

public:

B(){ cout<<" constructor B "<<endl; this->a=123; this->mA(); }

~B(){ cout<<" destructor B "<<endl; }

};

int main()
{
srand(time(0));

// OM, Student => public, protected, private

// 1. Student : public OM, Student x;


// 2. Student : protected OM, Student x;
// 3. Student : private OM, Student x;

B w;

/*

D x;

Student A;

cout<<" Enter Nume = ";


A.setNUME() ;

cout<<" Enter Ani =";


A.setANI();

cout<<" Enter Grupa =";


A.setGRUPA();

cout<<" Enter Medie =";


A.setMEDIE();

Student X(33,"LPS2222ro",0.99,"JoraKardan");

Student B(X);

cout<<" Nume = "<<B.getNUME()<<endl;


cout<<" Ani = "<<B.getANI()<<endl;
cout<<" Grupa = "<<B.getGRUPA()<<endl;
cout<<" Medie = "<<B.getMEDIE()<<endl;

*/

return 0;
}

You might also like