| < Day Day Up > |
|
The best way to study the workings of this project is to see all the code laid out before you. The Aircraft Engine simulation project contains a total of fourteen source files. First the header files: aircraftutils.h, fuelpump.h, oilpump.h, tempraturesensor.h, oxygensensor.h, compressor.h, and engine.h. Then, the class implementation files: fuelpump.cpp, oilpump.cpp, temperaturesensor.cpp, oxygensensor.cpp, compressor.cpp, and engine.cpp. Lastly, the main.cpp file contains the main() functions needed to get everything running. The source files will be presented in this order with no line numbering.
aircraftutils.h
#ifndef __AIRCRAFT_UTILITIES_H #define __AIRCRAFT_UTILITIES_H enum PartStatus {NotWorking, Working}; enum EngineStatus {NotReady, Ready}; #endif
fuelpump.h
#ifndef FUEL_PUMP_H #define FUEL_PUMP_H #include "aircraftutils.h" class FuelPump { public: FuelPump(PartStatus _status = Working, short engine_number = 0); ~FuelPump(); PartStatus isWorkingProperly(); void setStatus(PartStatus _status); void registerWithEngineNumber(short _engine_number); short getRegisteredEngineNumber(); private: PartStatus status; short registered_engine_number; }; #endif
oilpump.h
#ifndef OIL_PUMP_H #define OIL_PUMP_H #include "aircraftutils.h" class OilPump { public: OilPump(PartStatus _status = Working, short engine_number = 0); ~OilPump(); PartStatus isWorkingProperly(); void setStatus(PartStatus _status); void registerWithEngineNumber(short _engine_number); short getRegisteredEngineNumber(); private: PartStatus status; short registered_engine_number; }; #endif
temperaturesensor.h
#ifndef TEMP_SENSOR_H #define TEMP_SENSOR_H #include "aircraftutils.h" class TemperatureSensor { public: TemperatureSensor(PartStatus _status = Working, short engine_number = 0); ~TemperatureSensor(); PartStatus isWorkingProperly(); void setStatus(PartStatus _status); void registerWithEngineNumber(short _engine_number); short getRegisteredEngineNumber(); private: PartStatus status; short registered_engine_number; }; #endif
oxygensensor.h
#ifndef OXYGEN_SENSOR_H #define OXYGEN_SENSOR_H #include "aircraftutils.h" class OxygenSensor { public: OxygenSensor(PartStatus _status = Working, short engine_number = 0); ~OxygenSensor(); PartStatus isWorkingProperly(); void setStatus(PartStatus _status); void registerWithEngineNumber(short _engine_number); short getRegisteredEngineNumber(); private: PartStatus status; short registered_engine_number; }; #endif
compressor.h
#ifndef COMPRESSOR_H #define COMPRESSOR_H #include "aircraftutils.h" class Compressor { public: Compressor(PartStatus _status = Working, short engine_number = 0); ~Compressor(); PartStatus isWorkingProperly(); void setStatus(PartStatus _status); void registerWithEngineNumber(short _engine_number); short getRegisteredEngineNumber(); private: PartStatus status; short registered_engine_number; }; #endif
engine.h
#ifndef ENGINE_H #define ENGINE_H #include "aircraftutils.h" #include "fuelpump.h" #include "oxygensensor.h" #include "oilpump.h" #include "compressor.h" #include "temperaturesensor.h" class Engine{ public: Engine(); ~Engine(); EngineStatus checkEngineStatus(); void startEngine(); void stopEngine(); void setFuelPumpStatus(PartStatus _status); void setOilPumpStatus(PartStatus _status); void setTemperatureSensorStatus(PartStatus _status); void setOxygenSensorStatus(PartStatus _status); void setCompressorStatus(PartStatus _status); private: static short engine_count; FuelPump its_fuel_pump; OilPump its_oil_pump; TemperatureSensor its_temperature_sensor; OxygenSensor its_oxygen_sensor; Compressor its_compressor; short its_engine_number; EngineStatus its_status; bool engine_is_running; };
#endif
fuelpump.cpp
#include "aircraftutils.h" #include "fuelpump.h" #include <iostream> using namespace std; FuelPump::FuelPump(PartStatus _status, short engine_number):status(_status), registered_engine_number(engine_number){ switch(status){ case NotWorking: cout<<"Fuel pump "<<registered_engine_number <<" malfunction"<<endl; break; case Working : cout<<"Fuel pump "<<registered_engine_number<<" working"<<endl; break; default : ; } } FuelPump::~FuelPump(){ cout<<"Fuel pump "<<registered_engine_number<<" destroyed"<<endl; } PartStatus FuelPump::isWorkingProperly(){ return status;} void FuelPump::setStatus(PartStatus _status){ status = _status;} void FuelPump::registerWithEngineNumber(short _engine_number){ registered_engine_number = _engine_number; } short FuelPump::getRegisteredEngineNumber(){return registered_engine_number;}
oilpump.cpp
#include "aircraftutils.h" #include "oilpump.h" #include <iostream> using namespace std; OilPump::OilPump(PartStatus _status, short engine_number):status(_status), registered_engine_number(engine_number){ switch(status){ case NotWorking: cout<<"Oil pump "<<registered_engine_number<<" malfunction"<<endl; break; case Working : cout<<"Oil pump "<<registered_engine_number<<" working"<<endl; break; default : ; } } OilPump::~OilPump(){ cout<<"Oil pump "<<registered_engine_number<<" destroyed"<<endl; } PartStatus OilPump::isWorkingProperly(){ return status;} void OilPump::setStatus(PartStatus _status){ status = _status;} void OilPump::registerWithEngineNumber(short _engine_number){ registered_engine_number = _engine_number; } short OilPump::getRegisteredEngineNumber(){return registered_engine_number;}
temperaturesensor.cpp
#include "aircraftutils.h" #include "temperaturesensor.h" #include <iostream> using namespace std; TemperatureSensor::TemperatureSensor(PartStatus _status, short engine_number) :status(_status), registered_engine_number(engine_number){ switch(status){ case NotWorking: cout<<"Temperature sensor "<<registered_engine_number <<" malfunction"<<endl; break; case Working : cout<<"Temperature sensor "<<registered_engine_number <<" working"<<endl; break; default : ; } } TemperatureSensor::~TemperatureSensor(){ cout<<"Temperature sensor "<<registered_engine_number<<" destroyed"<<endl; } PartStatus TemperatureSensor::isWorkingProperly(){ return status;} void TemperatureSensor::setStatus(PartStatus _status){ status = _status;} void TemperatureSensor::registerWithEngineNumber(short _engine_number){ registered_engine_number = _engine_number; } short TemperatureSensor::getRegisteredEngineNumber(){return registered_engine_number;}
oxygensensor.cpp
#include "aircraftutils.h" #include "oxygensensor.h" #include <iostream> using namespace std; OxygenSensor::OxygenSensor(PartStatus _status, short engine_number) :status(_status), registered_engine_number(engine_number){ switch(status){ case NotWorking: cout<<"Oxygen sensor "<<registered_engine_number <<" malfunction"<<endl; break; case Working : cout<<"Oxygen sensor "<<registered_engine_number <<" working"<<endl; break; default : ; } } OxygenSensor::~OxygenSensor(){ cout<<"Oxygen sensor "<<registered_engine_number<<" destroyed"<<endl; } PartStatus OxygenSensor::isWorkingProperly(){ return status;} void OxygenSensor::setStatus(PartStatus _status){ status = _status;} void OxygenSensor::registerWithEngineNumber(short _engine_number){ registered_engine_number = _engine_number; } short OxygenSensor::getRegisteredEngineNumber(){return registered_engine_number;}
compressor.cpp
#include "aircraftutils.h" #include "compressor.h" #include <iostream> using namespace std; Compressor::Compressor(PartStatus _status, short engine_number) :status(_status), registered_engine_number(engine_number){ switch(status){ case NotWorking: cout<<"Compressor "<<registered_engine_number <<" malfunction"<<endl; break; case Working : cout<<"Compressor "<<registered_engine_number <<" working"<<endl; break; default : ; } } Compressor::~Compressor(){ cout<<"Compressor "<<registered_engine_number<<" destroyed"<<endl; } PartStatus Compressor::isWorkingProperly(){ return status;} void Compressor::setStatus(PartStatus _status){ status = _status;} void Compressor::registerWithEngineNumber(short _engine_number){ registered_engine_number = _engine_number; } short Compressor::getRegisteredEngineNumber(){return registered_engine_number;}
engine.cpp
#include "aircraftutils.h" #include "fuelpump.h" #include "oxygensensor.h" #include "oilpump.h" #include "compressor.h" #include "temperaturesensor.h" #include "engine.h" #include <iostream> using namespace std; short Engine::engine_count = 1; Engine::Engine():its_engine_number(engine_count++), engine_is_running(false), its_fuel_pump(Working, engine_count), its_oil_pump(Working, engine_count), its_temperature_sensor(Working, engine_count), its_oxygen_sensor(Working, engine_count), its_compressor(Working, engine_count) {} Engine::~Engine(){ engine_count--; } EngineStatus Engine::checkEngineStatus(){ if(its_fuel_pump.isWorkingProperly() && its_oil_pump.isWorkingProperly() && its_temperature_sensor.isWorkingProperly() && its_oxygen_sensor.isWorkingProperly() && its_compressor.isWorkingProperly()){ its_status = Ready; cout<<"All engine number "<<its_engine_number <<" components working properly."<<endl; } else{ its_status = NotReady; cout<<"Engine number "<<its_engine_number<<" malfunction!"<<endl; stopEngine(); } return its_status; } void Engine::startEngine(){ if(!engine_is_running && checkEngineStatus()){ cout<<"Engine number "<<its_engine_number<<" started."<<endl; engine_is_running = true; } else cout<<"Engine number "<<its_engine_number<<" cannot start."<<endl; } void Engine::stopEngine(){ if(engine_is_running){ engine_is_running = false; cout<<"Engine number "<<its_engine_number<<" stopped."<<endl; } else cout<<"Engine "<<its_engine_number<<" not running!"<<endl; } void Engine::setFuelPumpStatus(PartStatus _status){ its_fuel_pump.setStatus(_status); } void Engine::setOilPumpStatus(PartStatus _status){ its_oil_pump.setStatus(_status); } void Engine::setTemperatureSensorStatus(PartStatus _status){ its_temperature_sensor.setStatus(_status); } void Engine::setOxygenSensorStatus(PartStatus _status){ its_oxygen_sensor.setStatus(_status); } void Engine::setCompressorStatus(PartStatus _status){ its_compressor.setStatus(_status); }
main.cpp
#include <iostream> using namespace std; #include "engine.h" int main(){ Engine e1,e2; e1.checkEngineStatus(); e2.checkEngineStatus(); e1.stopEngine(); e1.startEngine(); e2.startEngine(); e1.setCompressorStatus(NotWorking); e1.checkEngineStatus(); return 0; }
| < Day Day Up > |
|