Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #ifndef ACCOUNT_H
- #define ACCOUNT_H
- #include "Date.h"
- #include <string>
- using namespace std;
- struct Transaction
- {
- Date date;
- int transactionType; // 0, 1, 2 for account creation, deposit and withdrawal respectively
- double amount;
- };
- class Account {
- private:
- int accountNumber;
- string ownerName;
- protected:
- double balance;
- static int numberAccounts;
- Transaction *transactionHistory;
- int numberTransactions;
- public:
- Account(string ownerName_, double balance);
- virtual bool withdraw(double amount, Date date_);
- bool deposit(double amount, Date date_);
- int getAccountNumber() const;
- double getBalance() const;
- static int getNumberAccounts();
- virtual void print() const;
- };
- int Account::numberAccounts = 0;
- class RegularAccount : public Account {
- public:
- RegularAccount(string ownerName_, double balance_, Date &date_) : Account(ownerName_, balance_){};
- void print() const;
- };
- class PremiumAccount : public Account {
- private:
- static double MIN_BALANCE;
- public:
- PremiumAccount(string name, double amount):Account(name, amount) {};
- bool withdraw(double amount, Date &date);
- static double getMinBalance();
- void print() const;
- };
- double PremiumAccount :: MIN_BALANCE = 1000;
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement