📜  C ++ |类和对象|问题6(1)

📅  最后修改于: 2023-12-03 15:13:45.223000             🧑  作者: Mango

C++ | 类和对象 | 问题6

问题描述

在一个交通信号灯系统中,红、黄、绿三种颜色的灯分别代表不同的交通状态。现在要设计一个程序模拟这个交通信号灯系统。

要求:

  1. 设计一个TrafficLight类,该类应该包含一个颜色成员变量。

  2. TrafficLight类应该具有两个公有成员函数:一个函数用于改变灯的颜色;另一个函数用于返回灯的颜色。

  3. 分别定义红、黄、绿三个对象,每个对象都具有TrafficLight类的所有成员函数,并初始化相应颜色。

  4. 在控制台上输出三个对象的颜色,并依次循环改变颜色、输出颜色的过程。

解决方案
TrafficLight类的设计与实现

根据问题描述,TrafficLight类需要包含一个颜色成员变量和两个公有成员函数:一个用于改变灯的颜色,另一个用于返回灯的颜色。

class TrafficLight {
private:
    string color; // 颜色成员变量
public:
    TrafficLight(string c = "red"): color(c) {} // 构造函数,初始化颜色成员变量
    void setColor(string c) { color = c; } // 改变灯的颜色
    string getColor() { return color; } // 返回灯的颜色
};

在构造函数中初始化颜色成员变量,可以给出默认的颜色参数,也可以留空。

TrafficLight对象的初始化与循环输出

在Main函数中,定义好红、黄、绿三个TrafficLight对象,并初始化它们的颜色成员变量。然后,用while循环实现循环改变颜色和输出颜色的过程。

int main() {
    TrafficLight red("red"); // 初始化红灯
    TrafficLight yellow("yellow"); // 初始化黄灯
    TrafficLight green("green"); // 初始化绿灯
    
    while (true) {
        cout << "Red light is " << red.getColor() << endl; // 输出红灯颜色
        cout << "Yellow light is " << yellow.getColor() << endl; // 输出黄灯颜色
        cout << "Green light is " << green.getColor() << endl; // 输出绿灯颜色
        
        red.setColor("green"); // 将红灯颜色改为绿色
        yellow.setColor("red"); // 将黄灯颜色改为红色
        green.setColor("yellow"); // 将绿灯颜色改为黄色
        
        Sleep(2000); // 延迟2秒
        system("cls"); // 清空控制台输出
    }
    return 0;
}

其中,Sleep函数和system函数用于控制输出时间和清空控制台输出。

完整代码
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;

class TrafficLight {
private:
    string color; // 颜色成员变量
public:
    TrafficLight(string c = "red"): color(c) {} // 构造函数,初始化颜色成员变量
    void setColor(string c) { color = c; } // 改变灯的颜色
    string getColor() { return color; } // 返回灯的颜色
};

int main() {
    TrafficLight red("red"); // 初始化红灯
    TrafficLight yellow("yellow"); // 初始化黄灯
    TrafficLight green("green"); // 初始化绿灯
    
    while (true) {
        cout << "Red light is " << red.getColor() << endl; // 输出红灯颜色
        cout << "Yellow light is " << yellow.getColor() << endl; // 输出黄灯颜色
        cout << "Green light is " << green.getColor() << endl; // 输出绿灯颜色
        
        red.setColor("green"); // 将红灯颜色改为绿色
        yellow.setColor("red"); // 将黄灯颜色改为红色
        green.setColor("yellow"); // 将绿灯颜色改为黄色
        
        Sleep(2000); // 延迟2秒
        system("cls"); // 清空控制台输出
    }
    return 0;
}
总结

通过以上实现,我们可以清楚地了解到如何在C++中设计一个包含成员变量和成员函数的类,并如何创建类的对象并使用类的成员函数来访问和改变对象的私有成员。此外,我们还学会如何通过循环、延迟和清空控制台输出等技巧,将程序输出效果控制在我们期望的范围内。