Dear All,
For the car case I posted before (car has some parts, and parts must
have the same maker, such as Ford), what I really concerned is that:
There are two implementations:
1.
class Car
{
public:
SetEngine(Engine*);
SetTransmission(Transmission*)
private:
Engine *m_engine;
Transmission *m_transmission;
...
};
For a Ford car
Car fordCar;
FordEngine * pFordEngine;
FordTranismission *pFordTransmission;
fordCar.SetEngine(pFordEngine);
fordCar.SetTransmission(pFordTransmission);
2.
class Car
{
public:
virtual SetEngine(Engine*);
virtual SetTransmission(Transmission*)
};
class FordCar : public Car
{
public:
virtual SetEngine(Engine*) {...}
virtual SetTransmission(Transmission*) {...}
private:
FordEngine *m_engine;
FordTransmission *m_transmission;
};
The difference is that I put the private part members is the derived
classes. I want to know which design is better and why?
I appreciate your kind help
Tim