From 9cb5e898c1a270cb892a8fb0bfd3f7096f1a1db0 Mon Sep 17 00:00:00 2001 From: Nirina <andriantsoa.nirina@etu.univ-amu.fr> Date: Fri, 11 Oct 2024 01:34:27 +0200 Subject: [PATCH] exercice 1 et 3 --- .idea/misc.xml | 3 +- src/main/java/Formule/Formula.java | 7 ++++ src/main/java/Formule/Operator.java | 8 +++++ src/main/java/Formule/Product.java | 25 +++++++++++++ src/main/java/Formule/ProductOperator.java | 7 ++++ src/main/java/Formule/Sum.java | 25 +++++++++++++ src/main/java/Formule/SumOperator.java | 7 ++++ src/main/java/Formule/Test.java | 15 ++++++++ src/main/java/Formule/Variable.java | 20 +++++++++++ src/main/java/Formule/VariadicOperator.java | 29 +++++++++++++++ src/main/java/shape/AbstractShape.java | 16 +++++++++ src/main/java/shape/BorderDecorator.java | 35 ++++++++++++++++++ src/main/java/shape/CenterDecorator.java | 35 ++++++++++++++++++ src/main/java/shape/Decorator.java | 16 +++++++++ src/main/java/shape/Polygon.java | 39 +++++++++++++++++++++ src/main/java/shape/Shape.java | 3 +- 16 files changed, 288 insertions(+), 2 deletions(-) create mode 100644 src/main/java/Formule/Formula.java create mode 100644 src/main/java/Formule/Operator.java create mode 100644 src/main/java/Formule/Product.java create mode 100644 src/main/java/Formule/ProductOperator.java create mode 100644 src/main/java/Formule/Sum.java create mode 100644 src/main/java/Formule/SumOperator.java create mode 100644 src/main/java/Formule/Test.java create mode 100644 src/main/java/Formule/Variable.java create mode 100644 src/main/java/Formule/VariadicOperator.java create mode 100644 src/main/java/shape/AbstractShape.java create mode 100644 src/main/java/shape/BorderDecorator.java create mode 100644 src/main/java/shape/CenterDecorator.java create mode 100644 src/main/java/shape/Decorator.java create mode 100644 src/main/java/shape/Polygon.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 6624aa5..480dc8a 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 0000000..79c3766 --- /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 0000000..5c759b6 --- /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 0000000..f3f9e84 --- /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 0000000..c9ba7af --- /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 0000000..8a51d95 --- /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 0000000..6757994 --- /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 0000000..e0a6f1b --- /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 0000000..9a1aae8 --- /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 0000000..d7af110 --- /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 0000000..09f0e20 --- /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 0000000..6ba7e31 --- /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 0000000..0ce6d39 --- /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 0000000..a24c4ea --- /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 0000000..569413e --- /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 16766e4..61f663c 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); -- GitLab