Advertisement
neogz

Polimorf YT DM

Feb 6th, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.24 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. char crt[] = { "----------------------------------------\n" };
  5. class Uredjaj {
  6. protected: 
  7.     char _ID[13];
  8.     char * _naziv;
  9.     char * _proizvodjac;
  10.     float _cijena;
  11. public:
  12.     Uredjaj(char * ID, char * naziv, char * proizvodjac , float cijena){
  13.         strcpy_s(_ID, 13, ID);
  14.  
  15.         int vel = strlen(naziv) + 1;
  16.         _naziv = new char[vel];
  17.         strcpy_s(_naziv, vel, naziv);
  18.  
  19.         vel = strlen(proizvodjac) + 1;
  20.         _proizvodjac = new char[vel];
  21.         strcpy_s(_proizvodjac, vel, proizvodjac);
  22.  
  23.         _cijena = cijena;
  24.     }
  25.     Uredjaj(Uredjaj & obj){
  26.         strcpy_s(_ID, 13, obj._ID);
  27.  
  28.         int vel = strlen(obj._naziv) + 1;
  29.         _naziv = new char[vel];
  30.         strcpy_s(_naziv, vel, obj._naziv);
  31.  
  32.         vel = strlen(obj._proizvodjac) + 1;
  33.         _proizvodjac = new char[vel];
  34.         strcpy_s(_proizvodjac, vel, obj._proizvodjac);
  35.  
  36.         _cijena = obj._cijena;
  37.     }
  38.     virtual ~Uredjaj(){
  39.         cout << "UREDJAJ :: DESTRUKTOR\n";
  40.         delete _naziv;
  41.         delete _proizvodjac;
  42.         _naziv = nullptr;
  43.         _proizvodjac = nullptr;
  44.     }
  45.     virtual void info() = 0;
  46.     /*
  47.     {
  48.         cout << _ID << " / " << _naziv << " / " << _proizvodjac << " / " << _cijena << endl;
  49.     }
  50.     */
  51.     void powerOn(){
  52.         cout << "UKLJUCUJE SE !!!" << endl;
  53.     }
  54.     void powerOff(){
  55.         cout << "ISKLJUCUJE SE !!!" << endl;
  56.     }
  57. };
  58. class Printer : virtual public Uredjaj{
  59. protected: 
  60.     int _brzinaPrinta;
  61.     int _brojac = 0;
  62. public:
  63.     Printer(char * ID = "-", char * naziv = "-", char * proizvodjac = "-", float cijena = 0,int brzinaPrinta = 0):Uredjaj(ID,naziv,proizvodjac,cijena){
  64.         _brzinaPrinta = brzinaPrinta;
  65.     }
  66.     Printer(Printer & obj):Uredjaj(obj){
  67.         _brzinaPrinta = obj._brzinaPrinta;
  68.         _brojac = obj._brojac;
  69.     }
  70.     ~Printer(){
  71.         cout << "PRINTER :: DESTRUKTOR\n";
  72.     }
  73.     void info(){
  74.         cout <<crt<< "PRINTER\n";
  75.         cout << _ID << " / " << _naziv << " / " << _proizvodjac << " / " << _cijena << endl;
  76.         //Uredjaj::info();
  77.         cout << "Brzina printa: " << _brzinaPrinta << endl;
  78.         cout << "Stranica isprintano: " << _brojac << endl;
  79.  
  80.     }
  81.     void print(int brojStranica){
  82.         cout << crt << "PRINTAM - " << brojStranica <<endl << crt;
  83.         for (int i = 0; i < brojStranica; i++){
  84.             cout << "Printam stranicu: " << i + 1 << endl;
  85.         }
  86.         cout << crt << "OPERACIJA USPJESNO OBAVLJENA!"<<endl << crt;
  87.         _brojac += brojStranica;
  88.     }
  89. };
  90. class Skener : virtual public Uredjaj{
  91. protected:
  92.     int _brzinaScana;
  93.     int _brojac=0;
  94. public:
  95.     Skener(char * ID = "-", char * naziv = "-", char * proizvodjac = "-", float cijena = 0, int brzinaScana = 0) :Uredjaj(ID, naziv, proizvodjac, cijena){
  96.         _brzinaScana = brzinaScana;
  97.     }
  98.     Skener(Skener & obj) :Uredjaj(obj){
  99.         _brzinaScana = obj._brzinaScana;
  100.         _brojac = obj._brojac;
  101.     }
  102.     ~Skener(){
  103.         cout << "SKENER  :: DESTRUKTOR\n";
  104.     }
  105.  
  106.     void info(){
  107.         cout << crt << "SKENER" << endl;
  108.         cout << _ID << " / " << _naziv << " / " << _proizvodjac << " / " << _cijena << endl;
  109.         //Uredjaj::info();
  110.         cout << "Brzina skeniranja: " << _brzinaScana << endl;
  111.         cout << "Stranica skenirano: " << _brojac << endl;
  112.     }
  113.     void skeniraj(int brojStranica){
  114.         cout << crt << "SKENIRAM- " << brojStranica << endl << crt;
  115.         for (int i = 0; i < brojStranica; i++){
  116.             cout << "Skeniram stranicu: " << i + 1 << endl;
  117.         }
  118.         cout << crt << "OPERACIJA USPJESNO OBAVLJENA!" << endl << crt;
  119.         _brojac += brojStranica;
  120.     }
  121. };
  122. class PrinterSkener : public Printer, public Skener{
  123. public:
  124.     PrinterSkener(char * ID = "-", char * naziv = "-", char * proizvodjac = "-", float cijena = 0, int brzinaPrinta = 0, int brzinaSkeniranja = 0): Uredjaj(ID, naziv, proizvodjac, cijena),Printer(ID, naziv, proizvodjac, cijena, brzinaPrinta), Skener(ID, naziv, proizvodjac, cijena, brzinaSkeniranja){
  125.  
  126.     }
  127.     ~PrinterSkener(){
  128.         cout << "PRINTER - SKENER  :: DESTRUKTOR\n";
  129.  
  130.     }
  131.     void setCijena(float cijena){
  132.         Printer::_cijena = cijena;
  133.         Skener::_cijena = cijena;
  134.     }
  135.     void info(){
  136.         cout << crt << "PRINTER-SKENER" << endl;
  137.         cout << Printer::_ID << " / " << Printer::_naziv << " / " << Printer::_proizvodjac << " / " << Printer::_cijena << endl;
  138.         //Uredjaj::info();
  139.         cout << "Brzina printa: " << Printer::_brzinaPrinta << endl;
  140.         cout << "Stranica isprintano: " << Printer::_brojac << endl;
  141.         cout << "Brzina skeniranja: " << Skener::_brzinaScana << endl;
  142.         cout << "Stranica skenirano: " << Skener::_brojac << endl;
  143.     }
  144. };
  145. int main(){
  146.  
  147.     /*
  148.     Printer p1("1234FG4A", "LX120","HP",160.95,18);
  149.     p1.powerOn();
  150.     p1.info();
  151.     p1.print(3);
  152.     p1.print(6);
  153.  
  154.     p1.info();
  155.  
  156.     p1.powerOff();
  157.  
  158.     Skener s1("F6G1AG4", "SCX2000", "Toshiba", 349.99, 36);
  159.     s1.powerOn();
  160.     s1.info();
  161.     s1.skeniraj(2);
  162.     s1.skeniraj(5);
  163.     s1.info();
  164.     s1.powerOff();
  165.     */
  166.  
  167.     Uredjaj * pok1 = new Printer("1234FG4A", "LX120", "HP", 160.95, 18);
  168.     Uredjaj * pok2 = new Skener("F6G1AG4", "SCX2000", "Toshiba", 349.99, 36);
  169.    
  170.     Uredjaj *niz[4];
  171.     niz[0] = new Printer("1234FG4A", "LX120", "HP", 160.95, 18);
  172.     niz[1] = new Skener("F6G1AG4", "SCX2000", "Toshiba", 349.99, 36);
  173.     niz[2] = new Printer("12G2t1A", "CE120", "Lexmark", 111.95, 12);
  174.     niz[3] = new PrinterSkener("X1GG44G", "ESTUDIO 166","Lenovo", 750, 45, 32);
  175.  
  176.     PrinterSkener * pok = NULL;
  177.  
  178.     for (int i = 0; i < 4; i++){
  179.         pok = dynamic_cast<PrinterSkener *>(niz[i]);
  180.         if (pok != NULL){
  181.             pok->skeniraj(i);
  182.             pok->print(i);
  183.         }
  184.         niz[i]->info();
  185.  
  186.  
  187.  
  188.         delete niz[i];
  189.     }
  190.  
  191.     system("pause > null");
  192.     return 0;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement