From 46e409f3ca33ec3c7546d0589301c2a4f967c10a Mon Sep 17 00:00:00 2001 From: mokha Date: Sun, 5 May 2019 19:25:48 -0600 Subject: collapse assignment1 dir --- .../java/ca/mokhan/assignment1/BonusOnSavings.java | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/java/ca/mokhan/assignment1/BonusOnSavings.java (limited to 'src/main/java/ca/mokhan/assignment1/BonusOnSavings.java') diff --git a/src/main/java/ca/mokhan/assignment1/BonusOnSavings.java b/src/main/java/ca/mokhan/assignment1/BonusOnSavings.java new file mode 100644 index 0000000..41090ec --- /dev/null +++ b/src/main/java/ca/mokhan/assignment1/BonusOnSavings.java @@ -0,0 +1,36 @@ +package ca.mokhan.assignment1; + +public class BonusOnSavings { + double annualRate = 0.0; + double quarterlyRate = 0.0; + + public BonusOnSavings() { + this(0.03, 0.05); + } + + public BonusOnSavings(double quarterlyRate, double annualRate) { + this.quarterlyRate = quarterlyRate; + this.annualRate = annualRate; + } + + public double computeBonus(double monthlyCommitment, double q1, double q2, double q3, double q4) { + double quarterlyTarget = monthlyCommitment * 3; + double annualTarget = monthlyCommitment * 12; + + return this.quarterlyBonus(quarterlyTarget, q1) + + this.quarterlyBonus(quarterlyTarget, q2) + + this.quarterlyBonus(quarterlyTarget, q3) + + this.quarterlyBonus(quarterlyTarget, q4) + + this.annualBonus(annualTarget, q1 + q2 + q3 + q4); + } + + private double quarterlyBonus(double target, double actual) { + return (actual >= target) ? actual * this.quarterlyRate : 0.0; + } + + private double annualBonus(double target, double actual) { + if (actual < target) return 0.0; + + return (actual * this.annualRate) + ((actual - target) * 0.25); + } +} -- cgit v1.2.3