chasnasestra

oop

Feb 2nd, 2018
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.29 KB | None | 0 0
  1. //дефаулт конструктор
  2. Coffee( const char *i="", float c=0.0, int p=0){
  3.     this->ime = new char[strlen(i)+1];
  4.     strcpy(this->ime, i);
  5.     this->cena=c;
  6.     this->popust = p;
  7. }
  8.  
  9. //copy конструктор
  10. Coffee &operator = (const Coffee &ob){
  11.     if(this != &ob){
  12.         this->ime = new char[strlen(ob.ime)+1];
  13.         strcpy(this->ime, ob.ime);
  14.         this->cena = ob.cena;
  15.         this->popust = ob.popust;
  16.         return *this;
  17.     } else return *this;
  18. }
  19.  
  20. //output ostream operator
  21. friend ostream &operator<<(ostream &output, Person p)
  22. {
  23.     output<<p.name<<endl;
  24.     if(p.age>10) output<< p.age <<endl;
  25.     else output<< p.age <<endl;
  26.  
  27.     return output;
  28. }
  29.  
  30. //get
  31. int getCena() { return this->cena; }
  32.  
  33. //динамичка алокација
  34. this->ime = new char[strlen(i)+1];
  35. strcpy(this->ime, i);
  36.  
  37. //postincrement operator
  38. Coffee &operator --(){
  39.     cena = cena - (cena*0.2);
  40.     return *this;
  41. }
  42.  
  43. //preincrement operator
  44. Coffee &operator ++(int)
  45. {
  46.     popust = popust + 5;
  47.     return *this;
  48. }
  49.  
  50. //predecrement operator
  51. Coffee &operator --(){
  52.     cena = cena - (cena*0.2);
  53.     return *this;
  54. }
  55.  
  56. //postdecrement operator
  57. Coffee &operator --(int){
  58.     cena = cena - (cena*0.2);
  59.     return *this;
  60. }
  61.  
  62. //собирање оператор помеѓу два објектни(проперти)
  63. Coffee operator + (const Coffee &ob){
  64.     char *temp = new char[strlen(this->ime)+1+strlen(ob.ime)+1]
  65.     for(int i=0; i<strlen(this->ime); i++){
  66.         temp[i] = this->ime[i];
  67.     }
  68.     temp[strlen(this->ime)] = '-';
  69.     int j=0;
  70.     for(int i=0)
  71. }
  72.  
  73. //dinamicki void setter
  74. void setName(char *name){
  75.     this->name = char new[strlen(name)+1];
  76.     strcpy(this->name, name);
  77. }
  78.  
  79. //setiranje int
  80. void setPopust(int popust){
  81.     return this->popust = popust;
  82. }
  83.  
  84. //плагер функ // објект на место во низа
  85. void setCoffee(int i, Coffee &c) {
  86.         for(int j = 0; j < n; j++) {
  87.             if (j == i) {
  88.                 niza[j] = c;
  89.         }
  90.     }
  91. } /* влезови - индекс елемент и објект ц
  92.     лупа низ низа - ако индексот во низа =
  93.     посакуван елемент -: смени објект во низа
  94.     со објектот во дефиниција на функцијата. */
  95.  
  96. //оператор додавање нов објект во низа
  97. CoffeeShop &operator += (const Coffee &object) {
  98.    
  99.     Coffee *temp = new Coffee [n+1];
  100.  
  101.     for(int i = 0; i<n; i++) {
  102.         temp[i] = this->niza[i];
  103.     }
  104.  
  105.     temp[n++] = object;
  106.     delete [] niza;
  107.     niza = temp;
  108.     return *this;
  109. }
  110.  
  111. //наследување
  112. class CrnoKafe: public Kafe{}{};
  113.  
  114. //наследување конструктор
  115. CrnoKafe( const char *ime, int popust, int boja):
  116. Kafe(ime, popust){
  117.     boja = new char[strlen(boja)+1];
  118.     strcpy(this->boja, boja);
  119. }
  120.  
  121. //наследување копи конструктор
  122. CrnoKafe(const CrnoKafe &k){
  123.     boja = new char[strlen(k.boja)+1];
  124.     strcpy(this->boja, k.boja);
  125. }
  126.  
  127. //низа од објекти во класи
  128. class CrnoKafe {
  129.     Kafe *kafinja;
  130.     int brKafinja;
  131. }
  132.  
  133. //низа од објекти во default конструктор
  134. CrnoKafe(){
  135.     this->brKafinja = 0;
  136.     this->kafinja = new Kafe[brKafinja];
  137. }
  138.  
  139. //додавање елемент += оператор во низа
  140. Kafic &operator+=(Kafe &k) {
  141.     if(k.getRating()>5)
  142.         {
  143.             Kafe *tmp=new Kafe[brKafinja+1];
  144.             for(int i=0;i<this->brKafinja;i++)
  145.             {
  146.                 tmp[i]=this->kafinja[i];
  147.             }
  148.             delete [] kafinja;
  149.             kafinja=tmp;
  150.             this->kafinja[brKafinja]=k;
  151.             this->brKafinja++;
  152.         }
  153.     return *this;
  154. }
  155.  
  156. //при оформување на оператор тој може да се користи
  157. //над секој објект од класата
  158. //аритметика над приватно проперти од објект хендл
  159. //со гет метод
  160.  
  161. //функција споредба на елементи класи низа
  162. //функција со амперсанд од апстрактна класа
  163. Nedviznost &najskap_imot (Nedviznost **ned, int n){
  164. Nedviznost *max = ned[0]; //постави прв елемент за макс
  165.                           //макс зема нед елемент со копи конструктор
  166.     for(int i = 0; i < n; i++){
  167.     if(ned[i]  > max){ //изведено од < преоптоварен оператор
  168.         max = ned[i];                      
  169.     }
  170.     }
  171.     return *max;
  172. }
  173.  
  174. //споредба на апстрактна класа (дали од апстрактната класа е добиена една или друга изведена класа)
  175. void mostExpensiveBook (Book **books, int n){
  176.    
  177.     int online=0, pecateni=0;
  178.     int maxcena=0,maxi;
  179.    
  180.     for(int i=0; i<n; i++){
  181.         if(dynamic_cast <OnlineBook*>(books[i])) // дали книгата е онлајн книга
  182.             ++online; //ако не е тогаш е печатена книга
  183.         else ++pecateni;        
  184.        
  185.         if(books[i]->bookPrice() > maxcena){
  186.             maxi=i;
  187.             maxcena=books[i]->bookPrice();
  188.         }
  189.     }
Advertisement
Add Comment
Please, Sign In to add comment