運用 C++ 組合關係設計汽車類別,將引擎、變速箱、懸吊系統封裝為獨立類別,再由 Car 類別組合這三個元件,是物件導向「組合優於繼承」原則的經典練習。
class Suspension {
public:
char type[20]; // "independent" 或 "non-independent"
};
class Transmission {
public:
enum Type { Auto, Manual } type;
int gears; // 檔位數
void start() {}
void stop() {}
};
class Engine {
public:
double displacement; // 排氣量 (L)
void start() {}
void stop() {}
};
class Car {
public:
Engine engine;
Transmission transmission;
Suspension suspension;
};
Car 直接包含三個成員物件,而非指標或參考。生命週期與 Car 同步,構造/解構自動處理,無需手動管理記憶體。Engine 與 Transmission 均提供 start()/stop(),便於 Car 統一呼叫(如 car.engine.start())。Car 中組合,不影響既有代碼。int main() {
Car myCar;
myCar.engine.displacement = 2.0;
myCar.transmission.type = Transmission::Auto;
myCar.transmission.gears = 6;
strcpy(myCar.suspension.type, "independent");
myCar.engine.start();
myCar.transmission.start();
// 模擬行駛...
myCar.transmission.stop();
myCar.engine.stop();
return 0;
}
此範例展示如何將真實世界的「整體-部分」關係映射為 C++ 組合類別,達到高內聚、低耦合,是掌握物件導向設計的基石練習。