Advertisement
nex036ara

virtual_metod

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