Angajat

download Angajat

of 10

Transcript of Angajat

  • 8/16/2019 Angajat

    1/10

    #include#include#include#include#include#includeusing namespace std;

    class Angajat_abstract{public:int salariu;

      virtual long calcul_salariu()//pointer catre functie initializat cu null (functie virtuala pura)

    { return salariu;}

    };

    class Angajat{protected:

    char *nume;long salariu;int varsta;

    char* CNP;

    public:

      //proprietati sau interfete pentru atributele private(set-eri, get-eri)void set_nume(char* val){

    nume=new char[strlen(val)+1];strcpy(nume,val);

    }

    void set_salariul( long val){

    salariu=val;}

    void set_varsta( int val){

    varsta=val;}

    void set_CNP(char* val){

    CNP=new char[strlen(val)+1];

    strcpy(CNP,val);}

    char* get_nume(){

    return nume;}

    long get_salariul(){

  • 8/16/2019 Angajat

    2/10

    return salariu;}

    int get_varsta(){

    return varsta;}

    char* get_CNP(){

    return CNP;}

    //constructor fara parametrii

    Angajat(){

    nume=new char[strlen("nume")+1];strcpy(nume,"nume");

    CNP=new char[strlen("CNP")+1];strcpy(CNP, "CNP");

    salariu=200;varsta=30;

    }

    //costructor cu parametrii

    Angajat(char* nume, long salariu, int varsta,char* CNP){

    this->nume=new char[strlen("nume")+1];strcpy(this->nume,"nume");

    this->CNP=new char[strlen("CNP")+1];

    strcpy(this->CNP,"CNP");

    this->salariu=salariu;this->varsta=varsta;

    }

    //constructor de copiereAngajat (const Angajat & temp){

    this->nume=new char[strlen(temp.nume)+1];strcpy(this->nume,temp.nume);

    this->CNP=new char[strlen(temp.CNP)+1];strcpy(this->CNP,temp.CNP);

    this->salariu=temp.salariu;this->varsta=temp.varsta;

    }//destructor~Angajat(){

  • 8/16/2019 Angajat

    3/10

    delete[] nume;delete[] CNP;

    }

    //supraincarcare opreator "=" pentru atribuireAngajat & operator=(Angajat &temp){

    delete [] nume;delete [] CNP;

    this->nume=new char[strlen(temp.nume)+1];strcpy(this->nume,temp.nume);

    this->CNP=new char[strlen(temp.CNP)+1];strcpy(this->CNP,temp.CNP);

    this->salariu=temp.salariu;this->varsta=temp.varsta;

    return *this;}

    //supraincarcare operator "+" primire suma din salariulong operator +(long suma){

    salariu+=suma;return salariu;

    }

    //supraincarcare operator "-" retinere suma din salariulong operator -(long suma){

    salariu-=suma;return salariu;

    }

    //supraincarcare operator "+" pentru adunare obiectelong operator +(Angajat &a){

    return salariu+=a.salariu;}

    //supraincarcare operator "-" pentru scadere obiectelong operator -(Angajat &a){

    return salariu-=a.salariu;}

    //cast conversie Angajat in longoperator long(){

    return salariu;}

    //cast conversie Angajat in int

  • 8/16/2019 Angajat

    4/10

    operator int(){

    return varsta;}

    //cast conversie Angajat in char *operator char*(){

    return nume;return CNP;

    }};

    //CLASA 1 DERIVATAclass Angajat_cu_ziua: public Angajat{private:

    int timpdelucru;bool angajat_acum;

    public:

    friend ostream &operator > (istream &in,Angajat_cu_ziua &a);

    //constructor fara parametrii

    Angajat_cu_ziua():Angajat(){

    this->timpdelucru=8;this->angajat_acum=false;

    }

    //constructor cu parametrii

    Angajat_cu_ziua(int timpdelucru, bool angajat_acum, char* nume, long salariu, int varsta, char* CNP): Angajat(nume, salariu, varsta, CNP)

    {

    this->timpdelucru=timpdelucru;this->angajat_acum=angajat_acum;}

    //constructor de copiereAngajat_cu_ziua (const Angajat_cu_ziua &temp):Angajat(temp){

    this->timpdelucru=temp.timpdelucru;this->angajat_acum=temp.angajat_acum;

    }

    //supraincarcare operator "=" pentru atribuire

    Angajat_cu_ziua &operator=(Angajat_cu_ziua &temp){

    delete [] nume;delete [] CNP;

    this->nume=new char[strlen(temp.nume)+1];strcpy(this->nume,temp.nume);

    this->CNP=new char[strlen(temp.CNP)+1];strcpy(this->CNP,temp.CNP);

  • 8/16/2019 Angajat

    5/10

    this->salariu=temp.salariu;this->varsta=temp.varsta;this->timpdelucru=temp.timpdelucru;this->angajat_acum=temp.angajat_acum;

    return *this;}void set_timpdelucru(int val){

    timpdelucru=val;}

    void set_angajat_acum(bool val){

    angajat_acum=val;}

    int get_timpdelucru(){

    return timpdelucru;}

    bool get_angajat_acum()

    { return angajat_acum;}

    };

    //CLASA DERIVATA 2class Angajatinacord: public Angajat{private: char* functie;

     int experienta;

    public:

    friend ostream &operator > (istream &in,Angajatinacord &a);

    //constructor fara parametrii

    Angajatinacord(): Angajat(){

    this->functie="manager";this->experienta=10;

    }

    //constructor cu parametrii

    Angajatinacord( char* functie, int experienta, char* nume, long salariu, int varsta, char* CNP): Angajat(nume, salariu, varsta, CNP)

    {this->functie=new char[strlen("functie")+1];strcpy(this->functie,"functie");this->experienta=experienta;

    }

    //constructor de copiere

  • 8/16/2019 Angajat

    6/10

    Angajatinacord (const Angajatinacord &temp):Angajat(temp){

    this->functie=new char[strlen(temp.functie)+1];strcpy(this->functie,temp.functie);this->experienta=temp.experienta;

    }

    Angajatinacord &operator=(Angajatinacord &temp){

    delete [] nume;delete [] CNP;delete [] functie;

    this->nume=new char[strlen(temp.nume)+1];strcpy(this->nume,temp.nume);

    this->CNP=new char[strlen(temp.CNP)+1];strcpy(this->CNP,temp.CNP);

    this->salariu=temp.salariu;this->varsta=temp.varsta;

    this->functie=new char[strlen(temp.functie)+1];

    strcpy(this->functie,temp.functie);this->experienta=temp.experienta;

    return *this;}

    void set_functie( char* valoare){

    functie=valoare;}

    void set_experienta( int valoare){

    experienta=valoare;}

    char* get_functie(){

    return functie;}

    int get_experienta(){

    return experienta;}

    //preincrementareAngajatinacord operator++(){

    this->set_varsta(this->get_varsta()+1);this->experienta++;return *this;

    }

    //postincrementareAngajatinacord operator++(int d)

  • 8/16/2019 Angajat

    7/10

  • 8/16/2019 Angajat

    8/10

    }

    istream &operator>> (istream &in, Angajatinacord &a){

    char aux[30];coutaux;a.functie=new char[strlen(aux)+1];strcpy(a.functie, aux);couta.experienta;coutaux;a.nume=new char[strlen(aux)+1];strcpy(a.nume, aux);couta.salariu;couta.varsta;coutaux;a.CNP=new char[strlen(aux)+1];strcpy(a.CNP, aux);

    return in;}

    //CLASA TEMPLATEtemplateclass firma

    {private:T* departament;int nr_departament;

    public:int get_nr_departament(){

    return nr_departament;}

    void set_nr_departament(int val){

    nr_departamet=val;}

    //constructor cu parametriifirma(int n=0){

    this->nr_departament=n;if (n==0){ this->departament=NULL;}else

    this->departament=new T[n];}

  • 8/16/2019 Angajat

    9/10

    //constructor de copierefirma (firma & F){

    this->nr_departament=F.nr_departament;this->departament=new T [this->nr_departament];for(int i=0; inr_departament; i++)

    this->departament[i]=F.departament[i];}

    //destructor~firma(){

    delete[] departament;}

    //supraincarcare operator "="firma & operator=(firma & F){

    if(this->departament)delete[] this->departament;

    this->nr_departament=F.nr_departament;this->departament=new T[this->nr_departament];for(int i=0; inr_departament; i++)

    this->departament[i]=F.departament[i];}

    };

    void scrieInFisier(vector vectorAA, vector vectorAZ){

    fstream fisier ("Angajati.txt",ios::out);fisier

  • 8/16/2019 Angajat

    10/10

    vectorAngajatiInAcord.push_back(aa);}

    coutnr_ang_ziua;for(int i=0;i>az;vectorAngajatiCuZiua.push_back(az);

    }

    scrieInFisier(vectorAngajatiInAcord,vectorAngajatiCuZiua);Angajat_cu_ziua a;cin>>a;coutj;cout