/
Coin.cs
69 lines (60 loc) · 2.01 KB
/
Coin.cs
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
using System;
namespace SimpleVendingMachine {
public class Coin {
public enum Denomination {
SLUG = 0, NICKEL = 5, DIME = 10, QUARTER = 25, HALFDOLLAR = 50
}
// Constructor(s)
public Coin() : this(Denomination.SLUG) { }
public Coin(Denomination coin) {
Enumeral = coin;
}
public Coin(int coinValueInCents) {
switch (coinValueInCents) {
case 5:
Enumeral = Denomination.NICKEL;
break;
case 10:
Enumeral = Denomination.DIME;
break;
case 25:
Enumeral = Denomination.QUARTER;
break;
case 50:
Enumeral = Denomination.HALFDOLLAR;
break;
default:
// ToDo throw exception
Enumeral = Denomination.SLUG;
break;
}
}
public Coin(string coinName) {
Denomination coinType;
if (coinName.Length == 1) {
coinType = AbbrevNameToFullName(coinName);
} else {
Enum.TryParse(coinName.ToUpper(), out coinType);
}
Enumeral = coinType;
}
// Properties
public Denomination Enumeral {get; set;}
public decimal ValueOf => (int)Enumeral / 100M;
public override string ToString() => Enumeral.ToString();
private Denomination AbbrevNameToFullName(string firstLetter) {
switch (firstLetter.ToUpper()) {
case "N":
return Denomination.NICKEL;
case "D":
return Denomination.DIME;
case "Q":
return Denomination.QUARTER;
case "H":
return Denomination.HALFDOLLAR;
default:
return Denomination.SLUG;
}
}
}
}