1
0

acctabc.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // acctabc.h -- bank account classes
  2. #ifndef ACCTABC_H_
  3. #define ACCTABC_H_
  4. #include <iostream>
  5. #include <string>
  6. // Abstract Base Class
  7. class AcctABC
  8. {
  9. private:
  10. std::string fullName;
  11. long acctNum;
  12. double balance;
  13. protected:
  14. struct Formatting
  15. {
  16. std::ios_base::fmtflags flag;
  17. std::streamsize pr;
  18. };
  19. const std::string & FullName() const {return fullName;}
  20. long AcctNum() const {return acctNum;}
  21. Formatting SetFormat() const;
  22. void Restore(Formatting & f) const;
  23. public:
  24. AcctABC(const std::string & s = "Nullbody", long an = -1,
  25. double bal = 0.0);
  26. void Deposit(double amt) ;
  27. virtual void Withdraw(double amt) = 0; // pure virtual function
  28. double Balance() const {return balance;};
  29. virtual void ViewAcct() const = 0; // pure virtual function
  30. virtual ~AcctABC() {}
  31. };
  32. // Brass Account Class
  33. class Brass :public AcctABC
  34. {
  35. public:
  36. Brass(const std::string & s = "Nullbody", long an = -1,
  37. double bal = 0.0) : AcctABC(s, an, bal) { }
  38. virtual void Withdraw(double amt);
  39. virtual void ViewAcct() const;
  40. virtual ~Brass() {}
  41. };
  42. //Brass Plus Account Class
  43. class BrassPlus : public AcctABC
  44. {
  45. private:
  46. double maxLoan;
  47. double rate;
  48. double owesBank;
  49. public:
  50. BrassPlus(const std::string & s = "Nullbody", long an = -1,
  51. double bal = 0.0, double ml = 500,
  52. double r = 0.10);
  53. BrassPlus(const Brass & ba, double ml = 500, double r = 0.1);
  54. virtual void ViewAcct()const;
  55. virtual void Withdraw(double amt);
  56. void ResetMax(double m) { maxLoan = m; }
  57. void ResetRate(double r) { rate = r; };
  58. void ResetOwes() { owesBank = 0; }
  59. };
  60. #endif