diff options
feat(Week07): Add solutions
1 files changed, 46 insertions, 0 deletions
| -rw-r--r-- | Week07/Exercise01/Transaction.h | 46 |
diff --git a/Week07/Exercise01/Transaction.h b/Week07/Exercise01/Transaction.h new file mode 100644 index 0000000..d4941ce --- /dev/null +++ b/Week07/Exercise01/Transaction.h @@ -0,0 +1,46 @@ +#ifndef _TRANSACTION +#define _TRANSACTION + +#include "String.h" +#include <fstream> + +const unsigned STATUS_PENDING = 0; +const unsigned STATUS_ACCEPTED = 1; +const unsigned STATUS_REJECTED = 2; + +// Няма да обвързваме транзакции с потребители директно +// (т.е. няма член-данна която свързва User обект). +// Тази връзка осъществяваме с UserTransaction класа. +// Логически, можем да приемем че не искаме банковия служител +// да знае за акаунтите на купувачите. +class Transaction { + unsigned clerkNumber; + double sum; + unsigned bankCard; + // Уговаряме се, че стойността на status ще бъде равна на една + // от глобалните променливи STATUS_PENDING, STATUS_ACCEPTED и STATUS_REJECTED. + // Тук е добро място за употреба на енумерации (enum). + unsigned status; + +public: + Transaction(double sum, unsigned bankCard); + // Ако направим поне един конструктор, то конструктора по подразбиране + // спира да се създава автоматично + Transaction(); + + // Не искаме транзакции да могат да се променят своеволно. + // Т.е. след като се създаде транзакция, единствено можем да променяме статус + unsigned GetClerkNumber() const; + double GetSum() const; + unsigned GetBankCard() const; + + unsigned GetStatus() const; + String GetStatusStr() const; + void SetStatus(unsigned clerk, unsigned status); + + void PrintTransactionInfo() const; + + void Export(std::ofstream& exportFile) const; +}; + +#endif /* _TRANSACTION */ |
