diff --git a/.idea/misc.xml b/.idea/misc.xml index 6624aa5239bd87293312b297feabe77375fc86df..480dc8a7b94017006a3c6b6c36395e0fff6eaa41 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,9 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="FrameworkDetectionExcludesConfiguration"> <file type="web" url="file://$PROJECT_DIR$" /> </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="corretto-16" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/out" /> </component> </project> \ No newline at end of file diff --git a/src/main/java/Formule/Formula.java b/src/main/java/Formule/Formula.java new file mode 100644 index 0000000000000000000000000000000000000000..79c3766a411b31f5854a99c2600cb4f139377636 --- /dev/null +++ b/src/main/java/Formule/Formula.java @@ -0,0 +1,7 @@ +package Formule; + +public interface Formula { + String asString(); + double asValue(); + +} diff --git a/src/main/java/Formule/Operator.java b/src/main/java/Formule/Operator.java new file mode 100644 index 0000000000000000000000000000000000000000..5c759b60a1dd24fd958a32885f2427dce9856b3b --- /dev/null +++ b/src/main/java/Formule/Operator.java @@ -0,0 +1,8 @@ +package Formule; + +public interface Operator { + String Symbol(); + double initialValue(); + + double cumulative(double acc, double value); +} diff --git a/src/main/java/Formule/Product.java b/src/main/java/Formule/Product.java new file mode 100644 index 0000000000000000000000000000000000000000..f3f9e844b3580deb76d8e5f05fc5b0fd74f00e3d --- /dev/null +++ b/src/main/java/Formule/Product.java @@ -0,0 +1,25 @@ +package Formule; + +public class Product implements Operator{ + Formula[]formule; + public Product(Formula[]formule){ + this.formule=formule; + } + + + + @Override + public String Symbol() { + return "*"; + } + + @Override + public double initialValue() { + return 0; + } + + @Override + public double cumulative(double acc, double value) { + return acc*value; + } +} diff --git a/src/main/java/Formule/ProductOperator.java b/src/main/java/Formule/ProductOperator.java new file mode 100644 index 0000000000000000000000000000000000000000..c9ba7af07add3caa46a48a2a9cff948c9968f79c --- /dev/null +++ b/src/main/java/Formule/ProductOperator.java @@ -0,0 +1,7 @@ +package Formule; + +public class ProductOperator extends VariadicOperator{ + public ProductOperator(Operator operator, Formula[] formulas) { + super(operator, formulas); + } +} diff --git a/src/main/java/Formule/Sum.java b/src/main/java/Formule/Sum.java new file mode 100644 index 0000000000000000000000000000000000000000..8a51d953aebfc0fa8e3d1703732c5314b182e0a1 --- /dev/null +++ b/src/main/java/Formule/Sum.java @@ -0,0 +1,25 @@ +package Formule; + +public class Sum implements Operator{ + Formula[]formule; + public Sum(){ + this.formule=formule; + } + + + @Override + public String Symbol() { + return "+"; + } + + + @Override + public double initialValue() { + return 0; + } + + @Override + public double cumulative(double acc, double value) { + return acc + value; + } +} diff --git a/src/main/java/Formule/SumOperator.java b/src/main/java/Formule/SumOperator.java new file mode 100644 index 0000000000000000000000000000000000000000..675799439f02b3510ea5fbf12e9eee78e875074e --- /dev/null +++ b/src/main/java/Formule/SumOperator.java @@ -0,0 +1,7 @@ +package Formule; + +public class SumOperator extends VariadicOperator{ + public SumOperator(Formula... formulas) { + super(new Sum(), formulas); + } +} diff --git a/src/main/java/Formule/Test.java b/src/main/java/Formule/Test.java new file mode 100644 index 0000000000000000000000000000000000000000..e0a6f1b696b34335d6311f009cbe0af327a0fb0d --- /dev/null +++ b/src/main/java/Formule/Test.java @@ -0,0 +1,15 @@ +package Formule; + +public class Test { + public static void main(String[] args) { + Variable variable1 = new Variable("x", 2); + Variable variable2 = new Variable("y", 2); + Variable variable3 = new Variable("z", 4); + + + Formula sum = new SumOperator(variable1, variable2, variable3); + + System.out.println(sum.asString()); + System.out.println(sum.asValue()); + } +} diff --git a/src/main/java/Formule/Variable.java b/src/main/java/Formule/Variable.java new file mode 100644 index 0000000000000000000000000000000000000000..9a1aae8582d5f9886c47648bfb83ec578c68656a --- /dev/null +++ b/src/main/java/Formule/Variable.java @@ -0,0 +1,20 @@ +package Formule; + +public class Variable implements Formula{ + private String name; + private double value ; + + public Variable(String name, double value){ + this.name=name; + this.value=value; + } + @Override + public String asString() { + return this.name; + } + + @Override + public double asValue() { + return this.value; + } +} diff --git a/src/main/java/Formule/VariadicOperator.java b/src/main/java/Formule/VariadicOperator.java new file mode 100644 index 0000000000000000000000000000000000000000..d7af11024dfcf21bfdc7d9f84d4c0df3e3c2737f --- /dev/null +++ b/src/main/java/Formule/VariadicOperator.java @@ -0,0 +1,29 @@ +package Formule; + +public abstract class VariadicOperator implements Formula{ + private Formula[]formulas; + private Operator operator ; + public VariadicOperator(Operator operator,Formula[] formulas){ + + this.formulas=formulas; + this.operator=operator; + } + public String asString(){ + String result=""; + for(Formula a:formulas){ + result+=a.asString(); + result+= operator.Symbol(); + } + return result; + } + public double asValue(){ + double valeur =0; + for(Formula a:formulas){ + valeur+=operator.cumulative(operator.initialValue(), a.asValue()); + + } + return valeur; + + } + +} diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java new file mode 100644 index 0000000000000000000000000000000000000000..09f0e2063b4711565ba03273e1df2ce7068725f7 --- /dev/null +++ b/src/main/java/shape/AbstractShape.java @@ -0,0 +1,16 @@ +package shape; + +import java.awt.geom.Point2D; +import java.util.List; + +public abstract class AbstractShape implements Shape{ + List<Point2D> point; + public AbstractShape(List<Point2D>point){ + this.point=point; + } + public void addPoints(Point2D points){ + point.add(points); + + } + +} diff --git a/src/main/java/shape/BorderDecorator.java b/src/main/java/shape/BorderDecorator.java new file mode 100644 index 0000000000000000000000000000000000000000..6ba7e31534329defe0356a60ddfab4ff39563065 --- /dev/null +++ b/src/main/java/shape/BorderDecorator.java @@ -0,0 +1,35 @@ +package shape; + +import javafx.scene.canvas.GraphicsContext; + +import java.awt.geom.Point2D; + +public class BorderDecorator extends Decorator { + private double radius; + + + public BorderDecorator(Shape decoratedShape, double radius ) { + super(decoratedShape); + this.radius=radius; + } + + @Override + public void drawDecoration(GraphicsContext graphicsContext) { + + } + + @Override + public int pointsCount() { + return 0; + } + + @Override + public Point2D point(int index) { + return null; + } + + @Override + public void draw(GraphicsContext context) { + + } +} diff --git a/src/main/java/shape/CenterDecorator.java b/src/main/java/shape/CenterDecorator.java new file mode 100644 index 0000000000000000000000000000000000000000..0ce6d392e21ac124deabe52087f13c809908a864 --- /dev/null +++ b/src/main/java/shape/CenterDecorator.java @@ -0,0 +1,35 @@ +package shape; + +import javafx.scene.canvas.GraphicsContext; + +import java.awt.geom.Point2D; + +public class CenterDecorator extends Decorator{ + private double radius; + public CenterDecorator(Shape decoratedShape, double radius) { + super(decoratedShape); + this.radius=radius; + } + + + @Override + public void drawDecoration(GraphicsContext graphicsContext) { + + } + + @Override + public int pointsCount() { + + return 0; + } + + @Override + public Point2D point(int index) { + return null; + } + + @Override + public void draw(GraphicsContext context) { + + } +} diff --git a/src/main/java/shape/Decorator.java b/src/main/java/shape/Decorator.java new file mode 100644 index 0000000000000000000000000000000000000000..a24c4eaa4b84a037962c314c7aa1f45337a3f318 --- /dev/null +++ b/src/main/java/shape/Decorator.java @@ -0,0 +1,16 @@ +package shape; + +import javafx.scene.canvas.GraphicsContext; + +import java.awt.geom.Point2D; + +public abstract class Decorator implements Shape { + private Shape decoratedShape; + public Decorator(Shape decoratedShape){ + this.decoratedShape=decoratedShape; + } + + + public abstract void drawDecoration(GraphicsContext graphicsContext); + +} diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/Polygon.java new file mode 100644 index 0000000000000000000000000000000000000000..569413effbce9b184c6e0fa92517a03ba2990345 --- /dev/null +++ b/src/main/java/shape/Polygon.java @@ -0,0 +1,39 @@ +package shape; + +import javafx.scene.canvas.GraphicsContext; + +import java.awt.geom.Point2D; +import java.util.List; + +public class Polygon extends AbstractShape{ + + public Polygon(List<Point2D> point) { + super(point); + } + + @Override + public void addPoints(Point2D points) { + super.point.add(points); + + } + + @Override + public int pointsCount() { + int result=0; + for(Point2D a:point){ + result+=1; + } + return result; + + } + + @Override + public Point2D point(int index) { + return point.get( index); + } + + @Override + public void draw(GraphicsContext context) { + + } +} diff --git a/src/main/java/shape/Shape.java b/src/main/java/shape/Shape.java index 16766e4f3e3128b1582a817d665eb65d32c26047..61f663c177a5b36aa5ec4a48259f018dadb91806 100644 --- a/src/main/java/shape/Shape.java +++ b/src/main/java/shape/Shape.java @@ -1,8 +1,9 @@ package shape; -import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; +import java.awt.geom.Point2D; + public interface Shape { int pointsCount(); Point2D point(int index);