From 778e6e72c74c94f86f1406f4055efb7b0597e273 Mon Sep 17 00:00:00 2001
From: MichaelaWalker <112041868+MichaelaWalker@users.noreply.github.com>
Date: Wed, 17 Jan 2024 18:39:49 -0500
Subject: [PATCH 1/5] Creating and running test
---
RefactoringAssignment.iml | 10 ++++++++
src/{ => ifs}/InsuranceCalculator.java | 2 ++
test/ifs/IfElseDemoTest.java | 32 ++++++++++++++++++++++++++
3 files changed, 44 insertions(+)
rename src/{ => ifs}/InsuranceCalculator.java (96%)
create mode 100644 test/ifs/IfElseDemoTest.java
diff --git a/RefactoringAssignment.iml b/RefactoringAssignment.iml
index 7e880ab..454125c 100644
--- a/RefactoringAssignment.iml
+++ b/RefactoringAssignment.iml
@@ -24,5 +24,15 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/InsuranceCalculator.java b/src/ifs/InsuranceCalculator.java
similarity index 96%
rename from src/InsuranceCalculator.java
rename to src/ifs/InsuranceCalculator.java
index 558e0a0..a5b8b80 100644
--- a/src/InsuranceCalculator.java
+++ b/src/ifs/InsuranceCalculator.java
@@ -1,3 +1,5 @@
+package ifs;
+
public class InsuranceCalculator {
public double calculateInsurance(double income) {
diff --git a/test/ifs/IfElseDemoTest.java b/test/ifs/IfElseDemoTest.java
new file mode 100644
index 0000000..84b91fc
--- /dev/null
+++ b/test/ifs/IfElseDemoTest.java
@@ -0,0 +1,32 @@
+package ifs;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class IfElseDemoTest {
+ @Test
+ public void low() {
+ assertEquals(1825, insuranceFor(5000), 0.01);
+ }
+
+ @Test
+ public void medium() {
+ assertEquals(38600, insuranceFor(25000), 0.01);
+ }
+
+ @Test
+ public void high() {
+ assertEquals(78500, insuranceFor(50000), 0.01);
+ }
+
+ @Test
+ public void veryHigh() {
+ assertEquals(106400, insuranceFor(100_000), 0.01);
+ }
+
+ private double insuranceFor(double income) {
+ return new InsuranceCalculator().calculateInsurance(income);
+ }
+
+}
\ No newline at end of file
From 8bc8381c85a0b63e16dacc6e55974842ba0f238e Mon Sep 17 00:00:00 2001
From: MichaelaWalker <112041868+MichaelaWalker@users.noreply.github.com>
Date: Wed, 17 Jan 2024 18:51:42 -0500
Subject: [PATCH 2/5] Extracting methods
---
src/ifs/InsuranceCalculator.java | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/ifs/InsuranceCalculator.java b/src/ifs/InsuranceCalculator.java
index a5b8b80..6f9ae2d 100644
--- a/src/ifs/InsuranceCalculator.java
+++ b/src/ifs/InsuranceCalculator.java
@@ -10,8 +10,24 @@ public double calculateInsurance(double income) {
} else if (income <= 60000) {
return (income-30000)*0.1+76500;
} else {
- return (income-60000)*0.02+105600;
+ return calculateInsuranceVeryHigh(income);
}
}
+ private static double calculateInsuranceVeryHigh(double income) {
+ return (income - getAdjustment()) * getWeight() + getConstant();
+ }
+
+ private static int getConstant() {
+ return 105600;
+ }
+
+ private static double getWeight() {
+ return 0.02;
+ }
+
+ private static int getAdjustment() {
+ return 60000;
+ }
+
}
From c12e4df89759225f9be27557bf93897fe2a852b0 Mon Sep 17 00:00:00 2001
From: MichaelaWalker <112041868+MichaelaWalker@users.noreply.github.com>
Date: Wed, 17 Jan 2024 19:03:23 -0500
Subject: [PATCH 3/5] Using extract delegate refactoring
---
src/ifs/InsuranceCalculator.java | 21 +++------------------
src/ifs/InsuranceStrategyVeryHigh.java | 21 +++++++++++++++++++++
2 files changed, 24 insertions(+), 18 deletions(-)
create mode 100644 src/ifs/InsuranceStrategyVeryHigh.java
diff --git a/src/ifs/InsuranceCalculator.java b/src/ifs/InsuranceCalculator.java
index 6f9ae2d..6ee7014 100644
--- a/src/ifs/InsuranceCalculator.java
+++ b/src/ifs/InsuranceCalculator.java
@@ -2,6 +2,8 @@
public class InsuranceCalculator {
+ private final InsuranceStrategyVeryHigh insuranceStrategyVeryHigh = new InsuranceStrategyVeryHigh();
+
public double calculateInsurance(double income) {
if (income <= 10000) {
return income*0.365;
@@ -10,24 +12,7 @@ public double calculateInsurance(double income) {
} else if (income <= 60000) {
return (income-30000)*0.1+76500;
} else {
- return calculateInsuranceVeryHigh(income);
+ return InsuranceStrategyVeryHigh.calculateInsuranceVeryHigh(income);
}
}
-
- private static double calculateInsuranceVeryHigh(double income) {
- return (income - getAdjustment()) * getWeight() + getConstant();
- }
-
- private static int getConstant() {
- return 105600;
- }
-
- private static double getWeight() {
- return 0.02;
- }
-
- private static int getAdjustment() {
- return 60000;
- }
-
}
diff --git a/src/ifs/InsuranceStrategyVeryHigh.java b/src/ifs/InsuranceStrategyVeryHigh.java
new file mode 100644
index 0000000..a406bed
--- /dev/null
+++ b/src/ifs/InsuranceStrategyVeryHigh.java
@@ -0,0 +1,21 @@
+package ifs;
+
+public class InsuranceStrategyVeryHigh {
+ public InsuranceStrategyVeryHigh() {
+ }
+ public static double calculateInsuranceVeryHigh(double income) {
+ return (income - getAdjustment()) * getWeight() + getConstant();
+ }
+
+ static int getConstant() {
+ return 105600;
+ }
+
+ static double getWeight() {
+ return 0.02;
+ }
+
+ static int getAdjustment() {
+ return 60000;
+ }
+}
\ No newline at end of file
From e54602796f55a152eb764c4ca3b35bb0aaf53876 Mon Sep 17 00:00:00 2001
From: MichaelaWalker <112041868+MichaelaWalker@users.noreply.github.com>
Date: Wed, 17 Jan 2024 19:40:06 -0500
Subject: [PATCH 4/5] Fine tuning
---
src/ifs/InsuranceCalculator.java | 6 +++---
src/ifs/InsuranceStrategy.java | 13 +++++++++++++
src/ifs/InsuranceStrategyVeryHigh.java | 14 +++++++-------
3 files changed, 23 insertions(+), 10 deletions(-)
create mode 100644 src/ifs/InsuranceStrategy.java
diff --git a/src/ifs/InsuranceCalculator.java b/src/ifs/InsuranceCalculator.java
index 6ee7014..6cd7c25 100644
--- a/src/ifs/InsuranceCalculator.java
+++ b/src/ifs/InsuranceCalculator.java
@@ -1,8 +1,7 @@
package ifs;
public class InsuranceCalculator {
-
- private final InsuranceStrategyVeryHigh insuranceStrategyVeryHigh = new InsuranceStrategyVeryHigh();
+ InsuranceStrategyVeryHigh strategy;
public double calculateInsurance(double income) {
if (income <= 10000) {
@@ -12,7 +11,8 @@ public double calculateInsurance(double income) {
} else if (income <= 60000) {
return (income-30000)*0.1+76500;
} else {
- return InsuranceStrategyVeryHigh.calculateInsuranceVeryHigh(income);
+ strategy = new InsuranceStrategyVeryHigh();
+ return strategy.calculateInsuranceVeryHigh(income);
}
}
}
diff --git a/src/ifs/InsuranceStrategy.java b/src/ifs/InsuranceStrategy.java
new file mode 100644
index 0000000..4762658
--- /dev/null
+++ b/src/ifs/InsuranceStrategy.java
@@ -0,0 +1,13 @@
+package ifs;
+
+public abstract class InsuranceStrategy {
+ public double calculateInsuranceVeryHigh(double income) {
+ return (income - getAdjustment()) * getWeight() + getConstant();
+ }
+
+ public abstract int getConstant();
+
+ public abstract double getWeight();
+
+ public abstract int getAdjustment();
+}
diff --git a/src/ifs/InsuranceStrategyVeryHigh.java b/src/ifs/InsuranceStrategyVeryHigh.java
index a406bed..d652aaf 100644
--- a/src/ifs/InsuranceStrategyVeryHigh.java
+++ b/src/ifs/InsuranceStrategyVeryHigh.java
@@ -1,21 +1,21 @@
package ifs;
-public class InsuranceStrategyVeryHigh {
+public class InsuranceStrategyVeryHigh extends InsuranceStrategy {
public InsuranceStrategyVeryHigh() {
}
- public static double calculateInsuranceVeryHigh(double income) {
- return (income - getAdjustment()) * getWeight() + getConstant();
- }
- static int getConstant() {
+ @Override
+ public int getConstant() {
return 105600;
}
- static double getWeight() {
+ @Override
+ public double getWeight() {
return 0.02;
}
- static int getAdjustment() {
+ @Override
+ public int getAdjustment(){
return 60000;
}
}
\ No newline at end of file
From 588c2852af49a125944ee00fe5a69f3d0f37dabb Mon Sep 17 00:00:00 2001
From: MichaelaWalker <112041868+MichaelaWalker@users.noreply.github.com>
Date: Wed, 17 Jan 2024 21:02:42 -0500
Subject: [PATCH 5/5] Implementing abstract class
---
src/ifs/InsuranceCalculator.java | 13 ++++++++-----
src/ifs/InsuranceStrategy.java | 2 +-
src/ifs/InsuranceStrategyHigh.java | 18 ++++++++++++++++++
src/ifs/InsuranceStrategyLow.java | 18 ++++++++++++++++++
src/ifs/InsuranceStrategyMedium.java | 18 ++++++++++++++++++
5 files changed, 63 insertions(+), 6 deletions(-)
create mode 100644 src/ifs/InsuranceStrategyHigh.java
create mode 100644 src/ifs/InsuranceStrategyLow.java
create mode 100644 src/ifs/InsuranceStrategyMedium.java
diff --git a/src/ifs/InsuranceCalculator.java b/src/ifs/InsuranceCalculator.java
index 6cd7c25..db5d7dc 100644
--- a/src/ifs/InsuranceCalculator.java
+++ b/src/ifs/InsuranceCalculator.java
@@ -1,18 +1,21 @@
package ifs;
public class InsuranceCalculator {
- InsuranceStrategyVeryHigh strategy;
+ private InsuranceStrategy strategy;
public double calculateInsurance(double income) {
if (income <= 10000) {
- return income*0.365;
+ strategy = new InsuranceStrategyLow();
+ return strategy.calculate(income);
} else if (income <= 30000) {
- return (income-10000)*0.2+35600;
+ strategy = new InsuranceStrategyMedium();
+ return strategy.calculate(income);
} else if (income <= 60000) {
- return (income-30000)*0.1+76500;
+ strategy = new InsuranceStrategyHigh();
+ return strategy.calculate(income);
} else {
strategy = new InsuranceStrategyVeryHigh();
- return strategy.calculateInsuranceVeryHigh(income);
+ return strategy.calculate(income);
}
}
}
diff --git a/src/ifs/InsuranceStrategy.java b/src/ifs/InsuranceStrategy.java
index 4762658..82bd3b3 100644
--- a/src/ifs/InsuranceStrategy.java
+++ b/src/ifs/InsuranceStrategy.java
@@ -1,7 +1,7 @@
package ifs;
public abstract class InsuranceStrategy {
- public double calculateInsuranceVeryHigh(double income) {
+ public double calculate(double income) {
return (income - getAdjustment()) * getWeight() + getConstant();
}
diff --git a/src/ifs/InsuranceStrategyHigh.java b/src/ifs/InsuranceStrategyHigh.java
new file mode 100644
index 0000000..4b61c16
--- /dev/null
+++ b/src/ifs/InsuranceStrategyHigh.java
@@ -0,0 +1,18 @@
+package ifs;
+
+public class InsuranceStrategyHigh extends InsuranceStrategy {
+ @Override
+ public int getConstant() {
+ return 76500;
+ }
+
+ @Override
+ public double getWeight() {
+ return 0.1;
+ }
+
+ @Override
+ public int getAdjustment() {
+ return 30000;
+ }
+}
diff --git a/src/ifs/InsuranceStrategyLow.java b/src/ifs/InsuranceStrategyLow.java
new file mode 100644
index 0000000..66b71be
--- /dev/null
+++ b/src/ifs/InsuranceStrategyLow.java
@@ -0,0 +1,18 @@
+package ifs;
+
+public class InsuranceStrategyLow extends InsuranceStrategy {
+ @Override
+ public int getConstant() {
+ return 0;
+ }
+
+ @Override
+ public double getWeight() {
+ return 0.365;
+ }
+
+ @Override
+ public int getAdjustment() {
+ return 0;
+ }
+}
diff --git a/src/ifs/InsuranceStrategyMedium.java b/src/ifs/InsuranceStrategyMedium.java
new file mode 100644
index 0000000..49d4fa5
--- /dev/null
+++ b/src/ifs/InsuranceStrategyMedium.java
@@ -0,0 +1,18 @@
+package ifs;
+
+public class InsuranceStrategyMedium extends InsuranceStrategy {
+ @Override
+ public int getConstant() {
+ return 35600;
+ }
+
+ @Override
+ public double getWeight() {
+ return 0.2;
+ }
+
+ @Override
+ public int getAdjustment() {
+ return 10000;
+ }
+}