-
Notifications
You must be signed in to change notification settings - Fork 0
/
Product.cpp
59 lines (50 loc) · 1.34 KB
/
Product.cpp
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
58
59
#pragma once
#include <string>
#include <iostream>
#include "Product.h"
using namespace std;
// default constructor
Product::Product() {
this->identifier = 0;
this->quantity = 0;
this->average_cost = 0;
this->quantity_sold = 0;
this->average_sale = 0;
}
// custom constructor
Product::Product(int id, int q, float c) {
this->identifier = id;
this->quantity = q;
this->average_cost = c;
this->quantity_sold = 0;
this->average_sale = 0;
}
// calculates new average cost and increments quantity of product
void Product::buy(int q, float c) {
this->average_cost = (this->quantity * this->average_cost + q * c) / (this->quantity + q);
this->quantity += q;
}
// increments quantity sold, and calculates average sale price
bool Product::sell(int q, float c) {
if (this->quantity_sold + q > this->quantity || q == 0)
return false;
this->average_sale = (this->quantity_sold * this->average_sale + q * c) / (this->quantity_sold + q);
this->quantity_sold += q;
return true;
}
// getter functions
int Product::getIdentifier() {
return this->identifier;
}
int Product::getQuantity() {
return this->quantity;
}
float Product::getAverageCost() {
return this->average_cost;
}
int Product::getQuantitySold() {
return this->quantity_sold;
}
float Product::getAverageSale() {
return this->average_sale;
}