diff --git a/src/main/java/formula/Product.java b/src/main/java/formula/Product.java index e3b9498682b968f638db83909e9631a9e9d6941f..65ddb825fce591c2e296507d52683aa4284c81f5 100644 --- a/src/main/java/formula/Product.java +++ b/src/main/java/formula/Product.java @@ -3,17 +3,26 @@ package formula; public class Product implements Formula { private Formula[] formulas; - // Constructeur prenant un tableau de formules public Product(Formula... formulas) { this.formulas = formulas; } + // Retourne la valeur initiale pour le produit (1) + public double initialValue() { + return 1; + } + + // Cumul des valeurs pour le produit (multiplication) + public double cumulativeValue(double accumulator, double value) { + return accumulator * value; + } + @Override public String asString() { StringBuilder sb = new StringBuilder("("); for (int i = 0; i < formulas.length; i++) { sb.append(formulas[i].asString()); - if (i < formulas.length - 1) sb.append("*"); // Ajouter un "*" entre les formules + if (i < formulas.length - 1) sb.append(symbol()); } sb.append(")"); return sb.toString(); @@ -21,10 +30,16 @@ public class Product implements Formula { @Override public double asValue() { - double product = 1; + double result = initialValue(); // Initialise avec la valeur de départ (1 pour Product) for (Formula formula : formulas) { - product *= formula.asValue(); + result = cumulativeValue(result, formula.asValue()); // Multiplie chaque valeur } - return product; + return result; + } + + // Méthode symbol() comme déjà définie + public String symbol() { + return "*"; } } + diff --git a/src/main/java/formula/Sum.java b/src/main/java/formula/Sum.java index 32dc2a991fef164fece6f1a5dccd51c30040300f..8e6b8ff4af77fbfaf0205a6e21e5c10676a66ffd 100644 --- a/src/main/java/formula/Sum.java +++ b/src/main/java/formula/Sum.java @@ -3,17 +3,26 @@ package formula; public class Sum implements Formula { private Formula[] formulas; - // Constructeur prenant un tableau de formules public Sum(Formula... formulas) { this.formulas = formulas; } + // Retourne la valeur initiale pour la somme (0) + public double initialValue() { + return 0; + } + + // Cumul des valeurs pour la somme (addition) + public double cumulativeValue(double accumulator, double value) { + return accumulator + value; + } + @Override public String asString() { StringBuilder sb = new StringBuilder("("); for (int i = 0; i < formulas.length; i++) { sb.append(formulas[i].asString()); - if (i < formulas.length - 1) sb.append("+"); // Ajouter un "+" entre les formules + if (i < formulas.length - 1) sb.append(symbol()); } sb.append(")"); return sb.toString(); @@ -21,10 +30,15 @@ public class Sum implements Formula { @Override public double asValue() { - double sum = 0; + double result = initialValue(); // Initialise avec la valeur de départ (0 pour Sum) for (Formula formula : formulas) { - sum += formula.asValue(); + result = cumulativeValue(result, formula.asValue()); // Ajoute chaque valeur } - return sum; + return result; + } + + // Méthode symbol() comme déjà définie + public String symbol() { + return "+"; } }