Advertisement
kirill_76rus

february_20

Feb 20th, 2020
437
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. #include<iostream>
  2. #include<utility>
  3. using namespace std;
  4. class figure {
  5. public:
  6.     virtual double getPerimeter() = 0;
  7.     virtual double getSquare() = 0;
  8.     virtual void print() = 0;
  9.  
  10. };
  11. class sqare :public figure {
  12. private:
  13.     double large;
  14. public:
  15.     sqare(const double& l) {
  16.         large = l;
  17.     }
  18.     double getSquare() override {
  19.         return large * large;
  20.     }
  21.     double getPerimeter() override {
  22.         return large * 4;
  23.     }
  24.     void print() override {
  25.         cout << "square "<<large;
  26.  
  27.     }
  28.  
  29. };
  30. class treingular :public figure {
  31. private:
  32.     double large;
  33. public:
  34.     treingular(const double& temp) {
  35.         large = temp;
  36.     }
  37.     double getSquare() override {
  38.         return (1 / 2) * large * large;
  39.     }
  40.     double getPerimeter() override {
  41.         return large * 3;
  42.  
  43.     }
  44.     void print() override {
  45.         cout << "treingular\n";
  46.     }
  47. };
  48. class circle :public figure {
  49. private:
  50.     double radius;
  51. public:
  52.     circle(const double& r) {
  53.         radius = r;
  54.     }
  55.     double getSquare() override {
  56.         return radius * radius * 3.14;
  57.     }
  58.     double getPerimeter() override {
  59.         return radius * 2 * 3.14;
  60.     }
  61.     void print() override {
  62.         cout << "circle \n";
  63.  
  64.     }
  65.  
  66. };
  67. class Factory {
  68. public:
  69.     virtual figure* createFirst(int n) = 0;
  70.     virtual figure* createSecond(int n) = 0;
  71.  
  72. };
  73. class SimpleFactory :public Factory {
  74. public:
  75.     figure* createFirst(int n)
  76.     {
  77.         return new sqare(n);//?
  78.     }
  79.     figure* createSecond(int n) {
  80.         return new circle(n);
  81.     }
  82. };
  83.  
  84. int main() {
  85.     /*circle c(10);
  86.     c.print();
  87.     cout << c.getSquare() << ' ' << c.getPerimeter() << ' \n';
  88.     sqare s(10);
  89.     s.print();
  90.     cout << s.getSquare() << ' ' << c.getPerimeter() << '\n';
  91.     treingular t(10);
  92.     t.print();
  93.     cout << t.getSquare() << ' ' << t.getPerimeter() << '\n';
  94.     */
  95.     Factory* myfactory = new SimpleFactory;
  96.     figure* shapes[10];
  97.     shapes[0] = myfactory->createFirst(3);
  98.     shapes[0]->print();
  99.     shapes[1] = myfactory->createSecond(3);
  100.     shapes[1]->print();
  101.     for (int i = 0; i <= 9; ++i) {
  102.         shapes[i] = myfactory->createFirst(i);
  103.     }
  104.     for (int i = 0; i < 10; ++i) {
  105.         shapes[i]->print();
  106.     }
  107.  
  108.     //figure* shapes[3];
  109.     //shapes[0]=myfactory create first
  110.  
  111.  
  112.  
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement