Skip to content
Snippets Groups Projects
Commit 9a6ddad7 authored by RADELLAH Badr's avatar RADELLAH Badr
Browse files

Formula TP2

parent ad925775
No related branches found
No related tags found
No related merge requests found
package formula;
public class Product implements Formula {
private Formula[] formulas;
public class Product extends VariadicOperator {
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;
super(formulas);
}
@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(symbol());
}
sb.append(")");
return sb.toString();
public String symbol() {
return "*";
}
@Override
public double asValue() {
double result = initialValue(); // Initialise avec la valeur de départ (1 pour Product)
for (Formula formula : formulas) {
result = cumulativeValue(result, formula.asValue()); // Multiplie chaque valeur
}
return result;
public double initialValue() {
return 1;
}
// Méthode symbol() comme déjà définie
public String symbol() {
return "*";
@Override
public double cumulativeValue(double accumulator, double value) {
return accumulator * value;
}
}
package formula;
public class Sum implements Formula {
private Formula[] formulas;
public class Sum extends VariadicOperator {
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;
super(formulas);
}
@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(symbol());
}
sb.append(")");
return sb.toString();
public String symbol() {
return "+";
}
@Override
public double asValue() {
double result = initialValue(); // Initialise avec la valeur de départ (0 pour Sum)
for (Formula formula : formulas) {
result = cumulativeValue(result, formula.asValue()); // Ajoute chaque valeur
}
return result;
public double initialValue() {
return 0;
}
// Méthode symbol() comme déjà définie
public String symbol() {
return "+";
@Override
public double cumulativeValue(double accumulator, double value) {
return accumulator + value;
}
}
package formula;
public abstract class VariadicOperator implements Formula {
protected Formula[] formulas;
public VariadicOperator(Formula... formulas) {
this.formulas = formulas;
}
// Méthode abstraite pour le symbole
public abstract String symbol();
// Méthode abstraite pour la valeur initiale de l'opération
public abstract double initialValue();
// Méthode abstraite pour le cumul des valeurs
public abstract double cumulativeValue(double accumulator, double 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(symbol());
}
sb.append(")");
return sb.toString();
}
@Override
public double asValue() {
double result = initialValue();
for (Formula formula : formulas) {
result = cumulativeValue(result, formula.asValue());
}
return result;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment