rijads

Workshop10_unfinnished

Dec 28th, 2013
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.88 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. //Implementirati nasljeđivanje između odgovarajućih klasa
  5. //Osmisliti osnovne atribute i metode za rad sa klasama
  6. class Zaposlenik
  7. {
  8. protected:
  9.     char* imePrezime;
  10.     double iznosPrimanja;
  11.     char* opisPosla;
  12. public:
  13.     Zaposlenik(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato")
  14.     {
  15.         this->imePrezime=new char [strlen(imePrezime)+1];
  16.         strcpy_s(this->imePrezime,strlen(imePrezime)+1,imePrezime);
  17.         this->iznosPrimanja=iznosPrimanja;
  18.         this->opisPosla=new char [strlen(opisPosla)+1];
  19.         strcpy_s(this->opisPosla,strlen(opisPosla)+1,opisPosla);
  20.     }
  21.     virtual ~Zaposlenik()
  22.     {
  23.         delete[]imePrezime;
  24.         delete[]opisPosla;
  25.     }
  26.     virtual void info()=0;
  27. };
  28.  
  29. class StalniZaposlenik:public Zaposlenik
  30. {
  31.     char *povlastice;
  32. public:
  33.     StalniZaposlenik(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato", char *povlastice="Nepoznato"):Zaposlenik(imePrezime,iznosPrimanja, opisPosla)
  34.     {
  35.         this->povlastice=new char[strlen(povlastice)+1];
  36.         strcpy_s(this->povlastice,strlen(povlastice)+1,povlastice);
  37.     }
  38.     ~StalniZaposlenik()
  39.     {
  40.         delete povlastice;
  41.     }
  42.     void info ()
  43.     {
  44.         char *crt="\n============================\n";
  45.         cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nPovlastice: "<<povlastice<<crt;
  46.     }
  47. };
  48.  
  49. class PrivremeniZaposlenik:public Zaposlenik
  50. {
  51.     char* ugovor;
  52. public:
  53.     PrivremeniZaposlenik(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato", char *ugovor="Nepoznato"):Zaposlenik(imePrezime,iznosPrimanja, opisPosla)
  54.     {
  55.         this->ugovor=new char[strlen(ugovor)+1];
  56.         strcpy_s(this->ugovor,strlen(ugovor)+1,ugovor);
  57.     }
  58.     ~PrivremeniZaposlenik()
  59.     {
  60.         delete []ugovor;
  61.     }
  62.     void info ()
  63.     {
  64.         char *crt="\n============================\n";
  65.         cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nUgovor: "<<ugovor<<crt;
  66.     }
  67. };
  68.  
  69. class Menadzer:virtual public Zaposlenik
  70. {
  71. protected:
  72.     char *upravljanje;
  73. public:
  74.     Menadzer(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato", char *upravljanje="Nepoznato"):Zaposlenik(imePrezime,iznosPrimanja, opisPosla)
  75.     {
  76.         this->upravljanje=new char[strlen(upravljanje)+1];
  77.         strcpy_s(this->upravljanje,strlen(upravljanje)+1,upravljanje);
  78.     }
  79.     ~Menadzer()
  80.     {
  81.         delete upravljanje;
  82.     }
  83.     void info ()
  84.     {
  85.         char *crt="\n============================\n";
  86.         cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nUpravljanje: "<<upravljanje<<crt;
  87.     }
  88. };
  89.  
  90. class Konsultant:virtual public Zaposlenik
  91. {
  92. protected:
  93.     char** konsultiranja;
  94.     int brojac;
  95.     int konsultacije;
  96. public:
  97.     Konsultant(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato"):Zaposlenik(imePrezime,iznosPrimanja, opisPosla)
  98.     {
  99.         brojac=0;
  100.         konsultacije=3;
  101.         *konsultiranja=new char[konsultacije];
  102.     }
  103.     ~Konsultant()
  104.     {
  105.         for (int i=0;i<brojac;i++)
  106.             delete konsultiranja[i];
  107.         delete []konsultiranja;
  108.     }
  109.     void info ()
  110.     {
  111.         char *crt="\n============================\n";
  112.         cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nKonsultacije:\n";
  113.         for (int i=0;i<brojac;i++)
  114.             cout<<i<<". konsultacije: "<<konsultiranja[i]<<endl;
  115.         cout<<crt;
  116.     }
  117.     void konsultiranje(char *a)
  118.     {
  119.         if(brojac>=konsultacije)
  120.         {
  121.             char ** temp;
  122.             *temp=new char[konsultacije+3];
  123.             for(int i=0;i<brojac;i++)
  124.             {
  125.                 temp[i]=new char(strlen(konsultiranja[i])+1);
  126.                 strcpy_s(temp[i],strlen(konsultiranja[i])+1,konsultiranja[i]);
  127.                 delete konsultiranja[i];
  128.             }
  129.             delete [] konsultiranja;
  130.             konsultiranja=temp;
  131.             konsultacije+=3;
  132.         }
  133.         konsultiranja[brojac]=new char[strlen(a)+1];
  134.         strcpy_s(konsultiranja[brojac],strlen(a)+1,a);
  135.         ++brojac;
  136.     }
  137.  
  138. };
  139. class Direktor:public Menadzer
  140. {
  141.     float budget;
  142. public:
  143.     Direktor(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato", char *upravljanje="Nepoznato",float budget=0):Menadzer(imePrezime,iznosPrimanja,opisPosla,upravljanje)
  144.     {
  145.         this->budget=budget;
  146.     }
  147.     ~Direktor()
  148.     {}
  149.     void info ()
  150.     {
  151.         char *crt="\n============================\n";
  152.         cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nUpravljanje: "<<upravljanje<<"\nBudget: "<<budget<<crt;
  153.     }
  154. };
  155. class MenadzerKonsultant:public Menadzer,public Konsultant
  156. {
  157.     char* vrsta;
  158. public:
  159.     MenadzerKonsultant(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato", char *upravljanje="Nepoznato", char* vrsta="rijetka"):Zaposlenik(imePrezime,iznosPrimanja, opisPosla),Menadzer(imePrezime,iznosPrimanja,opisPosla,upravljanje),Konsultant(imePrezime,iznosPrimanja,opisPosla)
  160.     {
  161.         this->vrsta=new char[strlen(vrsta)+1];
  162.         strcpy_s(this->vrsta,strlen(vrsta)+1,vrsta);
  163.     }
  164.     ~MenadzerKonsultant()
  165.     {
  166.         delete []vrsta;
  167.     }
  168.     void info ()
  169.     {
  170.         char *crt="\n============================\n";
  171.         cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nKonsultacije:"<<"\nUpravljanje: "<<upravljanje<<endl;
  172.         for (int i=0;i<brojac;i++)
  173.             cout<<i<<". konsultacije: "<<konsultiranja[i]<<endl;
  174.         cout<<crt;
  175.     }
  176. };
  177. void main()
  178. {
  179.     Zaposlenik *pok1;
  180.     Zaposlenik *pok2;
  181.     Zaposlenik *pok3;
  182.     Zaposlenik *pok4;
  183.     pok1=new StalniZaposlenik("Mike Smith",2200,"Analiticar","Parking: P-135; Topli obroci");
  184.     pok2=new PrivremeniZaposlenik("Ane Booth",1500,"Sekretarica","6 Mjeseci");
  185.     pok3=new Direktor("David Copperfield",5500,"Otpustanje radnika","firmom",50000);
  186.     pok4=new MenadzerKonsultant("Tom Hanks",3000,"Konsultiranje sa menedzerima, direktorom i ostalim zaposlenicima","Upravljanje svih odjela","Glavni");
  187.     pok4->konsultiranje("Test");
  188.     pok1->info();
  189.     pok2->info();
  190.     pok3->info();
  191.     pok4->info();
  192.  
  193. }
Advertisement
Add Comment
Please, Sign In to add comment