-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPreisStrategie.cpp
77 lines (45 loc) · 1.41 KB
/
PreisStrategie.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "PreisStrategie.h"
#include "AusleihPos.h"
// *************************************** PreisStrategie ***********************************************
PreisStrategie::PreisStrategie() {
_typ = Kunde::NORMAL;
}
int PreisStrategie::preis(CD cd, Date tag) {
Date d = cd.holeAusleihe()->getDate();
return cd.preis(tag-d);
}
int PreisStrategie::typ() {
return _typ;
}
PreisStrategie *PreisStrategie::itoPS(int typ) {
PreisStrategie *ps;
if (typ == Kunde::NORMAL)
ps = new PreisStrategie;
else if (typ == Kunde::MITARBEITER)
ps = new MitarbeiterPreis;
else if (typ == Kunde::GROSSKUNDE)
ps = new GrossKundenPreis;
else
throw "ERROR: no such PreisStrategie-type found!!";
return ps;
}
// ************************************ MitarbeiterPreis ************************************************
MitarbeiterPreis::MitarbeiterPreis() {
_typ = Kunde::MITARBEITER;
}
int MitarbeiterPreis::preis(CD cd, Date tag) {
if(cd.ident() != 2)
return PreisStrategie::preis(cd, tag);
else
return 0;
}
// ********************************** GrossKundenPreis ***************************************************
GrossKundenPreis::GrossKundenPreis() {
_typ = Kunde::GROSSKUNDE;
}
int GrossKundenPreis::preis(CD cd, Date tag) {
int preis = 0;
preis = PreisStrategie::preis(cd, tag);
preis = preis - (preis * 0.15);
return preis;
}