Project 2 - Implement the Code for controlling the retraction and extension of Airplane’s landing gear
#include
using namespace std;
enum class GearState {
Extended,
Retracted,
Transitioning,
};
class LandingGear {
private:
GearState state;
public:
LandingGear() : state(GearState::Retracted) {}
void extend() {
if (state == GearState::Retracted) {
cout << "Landing gear extending..." << endl;
state = GearState::Transitioning;
state = GearState::Extended;
cout << "Landing gear extended." << endl;
} else if (state == GearState::Extended) {
cout << "Landing gear is already extended." << endl;
} else {
cout << "Landing gear is transitioning. Please wait..." << endl;
}
}
void retract() {
if (state == GearState::Extended) {
cout << "Landing gear retracting..." << endl;
state = GearState::Transitioning;
state = GearState::Retracted;
cout << "Landing gear retracted." << endl;
} else if (state == GearState::Retracted) {
cout << "Landing gear is already retracted." << endl;
} else {
cout << "Landing gear is transitioning. Please wait..." << endl;
}
}
GearState getState() const {
return state;
}
};
int main() {
LandingGear gear;
gear.extend(); // Output: Landing gear extending... Landing gear extended.
gear.retract(); // Output: Landing gear retracting... Landing gear retracted.
gear.retract(); // Output: Landing gear is already retracted.
gear.extend(); // Output: Landing gear is transitioning. Please wait...
if (gear.getState() == GearState::Extended) {
cout << "Landing gear is extended." << endl;
} else if (gear.getState() == GearState::Retracted) {
cout << "Landing gear is retracted." << endl;
}
return 0;
}