1. // main.cpp
  2. #include <iostream>
  3. #include <string.h>
  4. #include "ship.h"
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10. Ship artemis("artemis");
  11. cout << artemis.getEngines() << endl;
  12. // Success, the program has exited without error.
  13. return 0;
  14. }
  15. //ship.cpp
  16. #include "ship.h"
  17.  
  18. using namespace std;
  19.  
  20. // Constructors
  21.  
  22. /* auto name, auto power */
  23. Ship::Ship() {
  24. setName("Artemis");
  25. setShields(50);
  26. setWeapons(0);
  27. setLifeSupport(20);
  28. setEngines(20);
  29. setHyperdrive(10);
  30. }
  31. /* manual name, auto power */
  32. Ship::Ship(string strNameCon) {
  33. setName(strNameCon);
  34. setShields(50);
  35. setWeapons(0);
  36. setLifeSupport(20);
  37. setEngines(20);
  38. setHyperdrive(10);
  39. }
  40. /* manual name, manual power */
  41. Ship::Ship(string strNameCon, unsigned int nShieldsCon, unsigned int nWeaponsCon, unsigned int nLifeSupportCon, unsigned int nEnginesCon, unsigned int nHyperdriveCon) {
  42. if (!(nShieldsCon + nWeaponsCon + nLifeSupportCon + nEnginesCon + nHyperdriveCon > 100)) {
  43. setName(strNameCon);
  44. setShields(nShieldsCon);
  45. setWeapons(nWeaponsCon);
  46. setLifeSupport(nLifeSupportCon);
  47. setEngines(nEnginesCon);
  48. setHyperdrive(nHyperdriveCon);
  49. } else {
  50. cerr << "Power overload. Power values may not add to more than 100."
  51. }
  52. }
  53.  
  54. // Destructor
  55.  
  56. Ship::~Ship() {
  57. delete nShields, nWeapons, nLifeSupport, nEngines, nHyperdrive, strName;
  58. }
  59.  
  60. // Gets and Sets
  61.  
  62. void Ship::setShields(unsigned int val) {
  63. if ( !(val + nWeapons + nLifeSupport + nEngines + nHyperdrive > 100) ) {
  64. nShields = val;
  65. } else { cerr << "Power overload. Power values may not add to more than 100." }
  66. }
  67. unsigned int Ship::getShields() {
  68. return nShields;
  69. }
  70. void Ship::setWeapons(unsigned int val) {
  71. if ( !(nShields + val + nLifeSupport + nEngines + nHyperdrive > 100) ) {
  72. nWeapons = val;
  73. } else { cerr << "Power overload. Power values may not add to more than 100." }
  74. }
  75. unsigned int Ship::getWeapons() {
  76. return nWeapons;
  77. }
  78. void Ship::setLifeSupport(unsigned int val) {
  79. if ( !(nShields + nWeapons + val + nEngines + nHyperdrive > 100) ) {
  80. nLifeSupport = val;
  81. } else { cerr << "Power overload. Power values may not add to more than 100." }
  82. }
  83. unsigned int Ship::getLifeSupport() {
  84. return nLifeSupport;
  85. }
  86. void Ship::setEngines(unsigned int val) {
  87. if ( !(nShields + nWeapons + nLifeSupport + val + nHyperdrive > 100) ) {
  88. nEngines = val;
  89. } else { cerr << "Power overload. Power values may not add to more than 100." }
  90. }
  91. unsigned int Ship::getEngines() {
  92. return nEngines;
  93. }
  94. void Ship::setHyperdrive(unsigned int val) {
  95. if ( !(nShields + nWeapons + nLifeSupport + nEngines + val > 100) ) {
  96. nHyperdrive = val;
  97. } else { cerr << "Power overload. Power values may not add to more than 100." }
  98. }
  99. unsigned int Ship::getHyperdrive() {
  100. return nHyperdrive;
  101. }
  102. void Ship::setName(string val) {
  103. strName = val;
  104. }
  105. string Ship::getName() {
  106. return strName;
  107. }
  108.  
  109. //ship.h
  110. #ifndef SHIP_H
  111. #define SHIP_H
  112.  
  113. using namespace std;
  114.  
  115. class Ship {
  116. private:
  117. unsigned int nShields;
  118. unsigned int nWeapons;
  119. unsigned int nLifeSupport;
  120. unsigned int nEngines;
  121. unsigned int nHyperdrive;
  122. string strName;
  123. protected:
  124. public:
  125. /* auto name, auto power */
  126. Ship();
  127. /* manual name, auto power */
  128. Ship(string strNameCon);
  129. /* manual name, manual power */
  130. Ship(string strNameCon, unsigned int nShieldsCon, unsigned int nWeaponsCon, unsigned int nLifeSupportCon, unsigned int nEnginesCon, unsigned int nHyperdriveCon);
  131.  
  132. void setShields(unsigned int val);
  133. unsigned int getShields();
  134.  
  135. void setWeapons(unsigned int val);
  136. unsigned int getWeapons();
  137.  
  138. void setLifeSupport(unsigned int val);
  139. unsigned int getLifeSupport();
  140.  
  141. void setEngines(unsigned int val);
  142. unsigned int getEngines();
  143.  
  144. void setHyperdrive(unsigned int val);
  145. unsigned int getHyperdrive();
  146.  
  147. void setName(string val);
  148. unsigned int getName();
  149. };
  150.  
  151. #endif
  152.