#include #include using namespace std; class Wheel{ public: int size; }; class Engine{ public: int horsepower; }; class Body{ public: string shape; }; class Car{ public: Wheel* wheels[4]; Engine* engine; Body* body; void specifications(){ cout<<"Body: "<shape<horsepower<size<size = 22; return wheel; } Engine* getEngine(){ Engine* engine = new Engine(); engine->horsepower = 400; return engine; } Body* getBody(){ Body* body = new Body(); body->shape = "SUV"; return body; } }; class NissanBuilder : public Builder { public: Wheel* getWheel(){ Wheel* wheel = new Wheel(); wheel->size = 16; return wheel; } Engine* getEngine(){ Engine* engine = new Engine(); engine->horsepower = 85; return engine; } Body* getBody(){ Body* body = new Body(); body->shape = "hatchback"; return body; } }; class Director { Builder* builder; public: void setBuilder(Builder* newBuilder){ builder = newBuilder; } Car* getCar(){ Car* car = new Car(); car->body = builder->getBody(); car->engine = builder->getEngine(); car->wheels[0] = builder->getWheel(); car->wheels[1] = builder->getWheel(); car->wheels[2] = builder->getWheel(); car->wheels[3] = builder->getWheel(); return car; } }; int main(){ Car* car; Director director; JeepBuilder jeepBuilder; NissanBuilder nissanBuilder; cout<<"Jeep"<specifications(); cout<specifications(); return 0; }