Advertisement
nex036ara

virtual_metod(preklapanje,nasledjivanje)

Nov 27th, 2011
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.90 KB | None | 0 0
  1. //osoba.hpp
  2.  
  3. #ifndef OSOBA_DEF
  4. #define OSOBA_DEF
  5. #include "dinstring.hpp" //osim dinstring.hpp mora postojati i dinstring.cpp
  6. #include <iostream>
  7. using namespace std;
  8.  
  9. class Osoba{
  10.     protected:
  11.         DinString ime,prezime;
  12.     public:
  13.         Osoba(const char *s1="", const char *s2=""): ime(s1), prezime(s2) {}
  14.         Osoba(const DinString &ds1, const DinString &ds2): ime(ds1), prezime(ds2) {}
  15.         Osoba(const Osoba &os): ime(os.ime), prezime(os.prezime) {}
  16.         ~Osoba() {}
  17.         virtual void predstaviSe()const {cout<<"Zovem se "<<ime<<", prezivam "<<prezime<<"  "<<endl;}
  18. };
  19. #endif
  20.  
  21. //student.hpp
  22.  
  23. #ifndef STUDENT_DEF
  24. #define STUDENT_DEF
  25. #include "osoba.hpp"
  26.  
  27.  
  28. class Student: public Osoba{
  29.  
  30.     protected:
  31.         int brIndexa;
  32.     public:
  33.         Student(const char *s1="", const char *s2="", int i=0): Osoba(s1,s2), brIndexa(i) {}
  34.         Student(const DinString &ds1, const DinString &ds2, int i): Osoba(ds1,ds2), brIndexa(i) {}
  35.         Student(const Osoba &os, int i=0): Osoba(os), brIndexa(i) {}
  36.         Student(const Student &st): Osoba((Osoba)st), brIndexa(st.brIndexa) {}
  37.         ~Student(){}
  38.         void predstaviSe() const {cout<<"Zovem se"<<ime<<" "<<prezime<<" " <<endl;
  39.          cout<<"Moj broj indexa je: "<<brIndexa<<" "<<endl; }
  40.  
  41. };
  42. #endif
  43.  
  44. //zaposleni.hpp
  45.  
  46.  
  47. #ifndef ZAPOSLENI_DEF
  48. #define ZAPOSLENI_DEF
  49. #include "osoba.hpp"
  50.  
  51.  
  52. class Zaposleni: public Osoba{
  53.     protected:
  54.         int brRadnihSati;
  55.         double vrSata;
  56.     public:
  57.         Zaposleni(const char *s1="", const char *s2="", int sat=0, double cena=0): Osoba(s1,s2), brRadnihSati(sat), vrSata(cena) {}
  58.         Zaposleni(const DinString &ds1, const DinString &ds2,int sat, double cena): Osoba(ds1,ds2), brRadnihSati(sat), vrSata(cena) {}
  59.         Zaposleni(const Osoba &os,int sat, double cena ): Osoba(os), brRadnihSati(sat), vrSata(cena) {}
  60.         Zaposleni(const Zaposleni &zap): Osoba((Osoba)zap), brRadnihSati(zap.brRadnihSati), vrSata(zap.vrSata) {}
  61.         ~Zaposleni() {}
  62.         double getPlata()const {return brRadnihSati*vrSata;}
  63.         void predstaviSe()const {cout<<"Zovem se "<<ime<<" "<<prezime<<". "<<endl;
  64.             cout<<"Moja plata iznosi: "<<getPlata()<<" eura. "<<endl;}
  65.  
  66.  
  67.  
  68. };
  69. #endif
  70.  
  71. //direktor.hpp
  72.  
  73. #ifndef DIREKTOR_DEF
  74. #define DIREKTOR_DEF
  75. #include "zaposleni.hpp"
  76.  
  77. class Direktor: public Zaposleni{
  78.  
  79. protected:
  80.     char *strucnaSprema;
  81. public:
  82.     Direktor(const char *s1="", const char *s2="", int sat=0, double cena=0,char *ch=""): Zaposleni(s1,s2,sat,cena), strucnaSprema(ch){}
  83.     Direktor(const DinString &ds1, const DinString &ds2,int sat, double cena,char *ch): Zaposleni(ds1,ds2,sat,cena), strucnaSprema(ch) {}
  84.     Direktor(const Osoba &os,int sat, double cena, char *ch): Zaposleni(os,sat,cena), strucnaSprema(ch) {}
  85.     Direktor(const Zaposleni &zap, char *ch): Zaposleni(zap), strucnaSprema(ch) {}
  86.     Direktor(const Direktor &dir): Zaposleni((Zaposleni)dir), strucnaSprema(dir.strucnaSprema) {}
  87.     ~Direktor() {}
  88.  
  89. double getPlata()const {return brRadnihSati*vrSata*10;}
  90. void predstaviSe()const {cout<<"Zovem se "<<ime<<" "<<prezime<<". "<<endl;
  91.             cout<<"Moja plata iznosi: "<<getPlata()<<" eura. "<<endl;
  92.             cout<<"Ja sam direktor firme."<<endl;
  93.             cout<<"Moja strucna sprema je: "<<strucnaSprema<<" "<<endl;}
  94. };
  95. #endif
  96. //main.cpp
  97.  
  98. //imeni klasu osoba, tako da metoda predstaviSe() bude virtuelna, a zatim iz
  99. //klase osoba izvedi klasu Student i klasu zaposleni koja sadrzi polja
  100. //brojRadnihSati i vrednostSata kao i virtuelnu metodu izracunajPlatu() = brRadnihSati*vrSata
  101.  
  102. #include "student.hpp"
  103. #include "zaposleni.hpp"
  104. #include "direktor.hpp"
  105.  
  106. void predstavljanje(const Osoba &os) {
  107.     os.predstaviSe();
  108.     }
  109.  
  110. int main(){
  111.  
  112.     const char *s1 = "Velimir";
  113.     const char *s2 = "Idiotic";
  114.     const char *s3 = "Mujo";
  115.     const char *s4 = "Bosanac";
  116.     const char *s5 ="Dzosef";
  117.     const char *s6 = "Talambasic";
  118.  
  119.  
  120.     DinString ds1(s1), ds2(s2), ds3(s3), ds4(s4), ds5(s5), ds6(s6);
  121.  
  122.     Osoba osoba1(s1,s2), osoba2(s1,s4), osoba3(s5,s6), osoba4(s3,s4), osoba5(osoba1);
  123.     Student student1(s1,s2,13592),student2(osoba2,13593),student3(ds4,ds6,13597),student4(osoba5,13598);
  124.  
  125.     Zaposleni radnik1(osoba4, 10, 106.88),radnik2(s5,s6,12,106.88), radnik3(osoba5,14,106.88);
  126.     Direktor dir1(radnik3, "Visoka strucna sprema." ), dir2(radnik2, "Magistar." ),dir3(radnik1, "Doktor." ) ;
  127.  
  128.     predstavljanje(osoba1);
  129.     predstavljanje(osoba2);
  130.     predstavljanje(osoba3);
  131.     predstavljanje(osoba4);
  132.     cout<< "\n\n" <<endl;
  133.     predstavljanje(student1);
  134.     predstavljanje(student2);
  135.     predstavljanje(student3);
  136.      cout<< "\n\n" <<endl;
  137.     predstavljanje(radnik1);
  138.     predstavljanje(radnik2);
  139.     predstavljanje(radnik3);
  140.      cout<< "\n\n" <<endl;
  141.     predstavljanje(dir1);
  142.      cout<< "\n" <<endl;
  143.     predstavljanje(dir2);
  144.     cout<< "\n" <<endl;
  145.     predstavljanje(dir3);
  146.  
  147.  
  148. return 0;
  149. }
  150.  
  151.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement