Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<utility>
- using namespace std;
- class figure {
- public:
- virtual double getPerimeter() = 0;
- virtual double getSquare() = 0;
- virtual void print() = 0;
- };
- class sqare :public figure {
- private:
- double large;
- public:
- sqare(const double& l) {
- large = l;
- }
- double getSquare() override {
- return large * large;
- }
- double getPerimeter() override {
- return large * 4;
- }
- void print() override {
- cout << "square "<<large;
- }
- };
- class treingular :public figure {
- private:
- double large;
- public:
- treingular(const double& temp) {
- large = temp;
- }
- double getSquare() override {
- return (1 / 2) * large * large;
- }
- double getPerimeter() override {
- return large * 3;
- }
- void print() override {
- cout << "treingular\n";
- }
- };
- class circle :public figure {
- private:
- double radius;
- public:
- circle(const double& r) {
- radius = r;
- }
- double getSquare() override {
- return radius * radius * 3.14;
- }
- double getPerimeter() override {
- return radius * 2 * 3.14;
- }
- void print() override {
- cout << "circle \n";
- }
- };
- class Factory {
- public:
- virtual figure* createFirst(int n) = 0;
- virtual figure* createSecond(int n) = 0;
- };
- class HardFactory :public Factory {
- public:
- figure* createFirst(int n)
- {
- return new sqare(n);//?
- }
- figure* createSecond(int n) {
- return new circle(n);
- }
- };
- class SimpleFactory :public Factory {
- public:
- figure* createFirst(int n)
- {
- return new treingular(n);//?
- }
- figure* createSecond(int n) {
- return new treingular(n);
- }
- };
- int main() {
- /*circle c(10);
- c.print();
- cout << c.getSquare() << ' ' << c.getPerimeter() << ' \n';
- sqare s(10);
- s.print();
- cout << s.getSquare() << ' ' << c.getPerimeter() << '\n';
- treingular t(10);
- t.print();
- cout << t.getSquare() << ' ' << t.getPerimeter() << '\n';
- */
- Factory* myfactory = new SimpleFactory;
- figure* shapes[10];
- shapes[0] = myfactory->createFirst(3);
- shapes[0]->print();
- shapes[1] = myfactory->createSecond(3);
- shapes[1]->print();
- for (int i = 0; i <= 9; ++i) {
- shapes[i] = myfactory->createFirst(i);
- }
- for (int i = 0; i < 10; ++i) {
- shapes[i]->print();
- }
- Factory* myfactory_1 = new HardFactory;
- figure* shapes_1[4];
- shapes_1[0] = myfactory_1->createSecond(2);
- //figure* shapes[3];
- //shapes[0]=myfactory create first
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement