首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 組合類別實作汽車模擬程式:引擎、變速箱、懸吊系統

     編輯:程式設計綜合問答

運用 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 中組合,不影響既有代碼。

main() 範例

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++ 組合類別,達到高內聚、低耦合,是掌握物件導向設計的基石練習。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved