Skip to content
Snippets Groups Projects
Commit 6712acf9 authored by VIOLA Anthony's avatar VIOLA Anthony
Browse files

TP1 exercice 4.2

parent adda21b5
No related branches found
No related tags found
No related merge requests found
Pipeline #18475 canceled
public interface Formula {
public String asString();
public double asValue();
}
public class Product {
import java.util.Arrays;
public class Product implements Formula {
private Formula[] formules;
public Product(Formula formule1, Formula formule2){
formules = new Formula[2];
formules[0] = formule1;
formules[1] = formule2;
}
public Product(Formula[] formules){
this.formules = Arrays.copyOf(formules, formules.length);
}
public double asValue(){
double result = 0;
for (Formula formule: formules) {
if (result == 0){
result = formule.asValue();
}else{
result*=formule.asValue();
}
}
return result;
}
public String asString() {
String result = "(";
for (int i=0;i<formules.length;i++) {
if (i!=0){
result+="*";
}
result += formules[i].asString();
}
return result+")";
}
}
public class Sum {
import java.util.Arrays;
public class Sum implements Formula{
private Formula[] formules;
public Sum(Formula formule1, Formula formule2){
formules = new Formula[2];
formules[0] = formule1;
formules[1] = formule2;
}
public Sum(Formula[] formules){
this.formules = Arrays.copyOf(formules, formules.length);
}
public double asValue(){
double result = 0;
for (Formula formule: formules) {
result += formule.asValue();
}
return result;
}
public String asString() {
String result = "(";
for (int i=0;i<formules.length;i++) {
if (i!=0){
result+="+";
}
result += formules[i].asString();
}
return result+")";
}
}
public class Variable {
public class Variable implements Formula{
private String name;
private double value;
public Variable(String name, double value){
this.name = name;
this.value = value;
}
public void set(double value){
this.value = value;
}
public double asValue() {
return this.value;
}
public String asString(){
return this.name;
}
}
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.*;
public class FormulaTest {
@Test
void testFormula2() {
Variable x = new Variable("x", 2.5);
Variable y = new Variable("y", 4);
Formula formula = new Sum(x, new Product(y, new Sum(x, y)));
assertThat(formula.asString()).isEqualTo("(x+(y*(x+y)))");
assertThat(formula.asValue()).isEqualTo(28.5);
x.set(5);
assertThat(formula.asValue()).isEqualTo(41.0);
}
@Test
void testFormulaEnsemble() {
Variable x = new Variable("x", 2.5);
Variable y = new Variable("y", 4);
Variable z = new Variable("z", 1.5);
Formula formule1 = new Sum(x,y);
Formula formule2 = new Product(x,z);
Formula[] formules = new Formula[]{formule1, y, formule2};
Formula sumformules = new Sum(formules);
Formula proformules = new Product(formules);
assertThat(sumformules.asString()).isEqualTo("((x+y)+y+(x*z))");
assertThat(proformules.asString()).isEqualTo("((x+y)*y*(x*z))");
assertThat(sumformules.asValue()).isEqualTo(14.25);
assertThat(proformules.asValue()).isEqualTo(97.5);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment