-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathacctabc.h
58 lines (53 loc) · 1.31 KB
/
acctabc.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// acctabc.h -- bank account classes
#ifndef ACCTABC_H_
#define ACCTABC_H_
// Abstract Base classes
class AcctABC
{
private:
enum {MAX = 35};
char fullName[MAX];
long acctNum;
double balance;
protected:
const char * FullName()const { return fullName; }
long AcctNum()const { return acctNum; }
std::ios_base::fmtflags SetFormat()const;
public:
AcctABC (const char *s = "Nullbody", long an = -1,
double bal = 0.0);
void Deposit (double amt);
virtual void Withdraw (double amt) = 0;
double Balance()const {return balance; };
virtual void ViewAcct()const = 0;
virtual ~AcctABC(){}
};
// Brass Account class
class Brass: public AcctABC
{
public:
Brass(const char *s = "Nullbody", long an = -1,
double bal = 0.0): AcctABC (s, an, bal) { }
virtual void Withdraw (double amt);
virtual void ViewAcct()const;
virtual ~Brass(){}
};
// Brass PLus Account Class
class BrassPlus: public AcctABC
{
private:
double maxLoan;
double rate;
double owesBank;
public:
BrassPlus(const char *s = "Nullbody", long an = -1,
double bal = 0.0, double ml = 500,
double r = 0.10);
BrassPlus(const Brass & ba, double ml = 500, double r = 0.1);
virtual void ViewAcct()const;
virtual void Withdraw (double amt);
void ResetMax(double m) { maxLoan = m; }
void ResetRate(double r) { rate = r; }
void ResetOwes() { owesBank = 0; }
};
#endif