Advertisement
borisdexter

Iskluchoci i staticki promenlivi

Jan 24th, 2020
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.52 KB | None | 0 0
  1. * Voved
  2. -staticki chlenovi
  3. -iskluchoci
  4.  
  5. 1. Дел од производите во една продавница по новата политика на продавницата мора да имаат одреден попуст. За таа цел во системот на продавницата потребно е да се моделира апстрактната класа Discount. Оваа класа како податок ги има курсевите на евра и долари во денари и методите кои мора секоја класа што ќе наследи од неа да ги имплементира:
  6. • float discount_price(); • float price();
  7. • void print_rule();
  8. За секој производ треба да се чуваат информации за името и цената на производот. Со ова треба да се моделира класата Product. Во неа покрај конструкторите треба да се имплементираат сите потребни методи.
  9. Производите се поделени на неколку типови: FoodProduct, Drinks и Cosmetics.
  10. Според новата политика на продавницата храната нема попуст. Пијалоците и тоа алкохолните поскапи од 20 евра имаат попуст 5%, а неалкохолните од
  11. 1.3. Задача | 7
  12. Објектно ориентирано програмирање
  13. брендот Coca-Cola имаат попуст од 10%. Сите козметички производи поскапи од 5 евра имаат попуст 12%, а оние поскапи од 20 долари имаат попуст 14%.
  14. Да се пресмета вкупната цена на сите производи заедно со попустот.
  15. Исто така да се креира функција changePrice(float) во класата Product која што ќе нуди можност за промена на постоечката цена на производот. Ако се направи обид да се внесе негативна вредност за цената да се фрли исклучок (објект од класата NegativeValueException). Фатете го исклучокот во главната функција каде што ќе ги излистате сите производи од тип Cosmetics и ќе им ја промените цената.
  16.  
  17. int main() {
  18. int n = 0;
  19. float newPrice;
  20. Discount **d = new Discount*[10];
  21. d[n++] = new FoodProduct("leb", 30);
  22. d[n++] = new Drinks("viski", 1350, "Jack Daniel's", true);
  23. d[n++] = new FoodProduct("sirenje", 390, 105);
  24. d[n++] = new Drinks("votka", 850, "Finlandia", true);
  25. d[n++] = new Cosmetics("krema", 720, 100);
  26. d[n++] = new Drinks("sok", 50, "Coca-Cola", false);
  27. d[n++] = new Cosmetics("parfem", 3500, 50);
  28. cout << "Vkupnata cena na site proizvodi e: " << total_discount(d, n) << endl;
  29. //se menuva cenata na site Kozmeticki proizvodi
  30. cout << "Promena na cenata na kozmetickite proizvodi " << endl;
  31. for (int i = 0; i < n; ++i) {
  32. Cosmetics* c = dynamic_cast<Cosmetics *>(d[i]);
  33. if (c != 0){
  34. c->print();
  35. cin >> newPrice;
  36. try{
  37. c->changePrice(newPrice);
  38. }
  39. catch (NegativeValueException i){
  40. i.print();
  41. } }
  42. }
  43. for (int i = 0; i < n; ++i) {
  44. delete d[i];
  45. }
  46. delete[] d;
  47. return 0; }
  48.  
  49. 2.
  50. Да се креира класа Kasa која што треба да ја претставува касата на една
  51. 1.2. Задача | 3
  52. Објектно ориентирано програмирање
  53. продавница во која муштериите можат да плаќаат во готово или со картичка. За секоја каса (Kasa) се водат две суми за дневното работење. Едната е вредноста на средствата добиени од готовина, а другата е сумата на средствата од картички. Исто така, секој објект од класата се креира во различен ден, па затоа за секој објект се чува и денот, месецот и годината кога касата е отворена.
  54. Во класата Kasa има функција kasaPrimi() со која ќе се овозможи примање на парични средства на сметката на продавницата. За плаќањето во готовина да се креира една функција со потпис kasaPrimi(double) со која на сумата во касата се додава цената на сметката.
  55. За плаќањето со картичка да се направи функција со потпис kasaPrimi(double, Kartichka) која како аргумент покрај вредноста на сметката има и референца кон самата картичка (мастер или маестро). Имено со повик на оваа функција потребно е да се ажурираат податоците и во касата и во картичката со која се плаќа некоја сметка.
  56. Во класата да се дефинира и функција prikaziKasa() со која ќе се прикажат информациите – заедно со вкупната дневна добивка кои се значајни за една каса.
  57.  
  58.  
  59. int main() {
  60. Kasa deneshna(10000, 22, 4, 2014);
  61. Kartichka *k;
  62. deneshna.prikaziKasa();
  63. cout << "Primam vo gotovo!" << endl;
  64. deneshna.kasaPrimi(5000);
  65. deneshna.prikaziKasa();
  66. k = new Master(10000.00, "1234567890123456", 54000.00);
  67. cout << "Primam so kartichka!" << endl;
  68. deneshna.kasaPrimi(10000.00, *k);
  69. deneshna.prikaziKasa();
  70. k = new Maestro("lozinka", "1234567890123456", 54000.00);
  71. cout << "Primam so kartichka!" << endl;
  72. deneshna.kasaPrimi(10000, *k);
  73. deneshna.prikaziKasa();
  74. Master::setPopust2(0.07);
  75. k = new Master(10000, "4567891234567890", 3000);
  76. cout << "Primam so kartichka!" << endl;
  77. deneshna.kasaPrimi(10000, *k);
  78. deneshna.prikaziKasa();
  79. return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement