diff --git a/src/main/java/shape/BorderDecorator.java b/src/main/java/shape/BorderDecorator.java
new file mode 100644
index 0000000000000000000000000000000000000000..94286243e692e15a84eac006252ee7baefb5b6af
--- /dev/null
+++ b/src/main/java/shape/BorderDecorator.java
@@ -0,0 +1,23 @@
+package shape;
+
+import javafx.geometry.Point2D;
+import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.paint.Color;
+
+public class BorderDecorator extends Decorator {
+    private double radius;
+
+    public BorderDecorator(Shape decoratedShape, double radius) {
+        super(decoratedShape);
+        this.radius = radius;
+    }
+
+    @Override
+    protected void drawDecoration(GraphicsContext context) {
+        context.setStroke(Color.RED);  // Couleur de la bordure
+        for (int i = 0; i < decoratedShape.pointsCount(); i++) {
+            Point2D point = decoratedShape.point(i);
+            context.strokeOval(point.getX() - radius, point.getY() - radius, radius * 2, radius * 2);
+        }
+    }
+}
diff --git a/src/main/java/shape/CenterDecorator.java b/src/main/java/shape/CenterDecorator.java
new file mode 100644
index 0000000000000000000000000000000000000000..04f43fe4773e4168f61b8daf1d2aa8aaa5656c06
--- /dev/null
+++ b/src/main/java/shape/CenterDecorator.java
@@ -0,0 +1,34 @@
+package shape;
+
+import javafx.geometry.Point2D;
+import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.paint.Color;
+
+public class CenterDecorator extends Decorator {
+    private double radius;
+
+    public CenterDecorator(Shape decoratedShape, double radius) {
+        super(decoratedShape);
+        this.radius = radius;
+    }
+
+    @Override
+    protected void drawDecoration(GraphicsContext context) {
+        context.setStroke(Color.BLUE);  // Couleur du cercle du centre
+        // Calculer le centre de la forme
+        Point2D center = calculateCenter();
+        context.strokeOval(center.getX() - radius, center.getY() - radius, radius * 2, radius * 2);
+    }
+
+    // Méthode pour calculer le centre d'une forme
+    private Point2D calculateCenter() {
+        double sumX = 0, sumY = 0;
+        for (int i = 0; i < decoratedShape.pointsCount(); i++) {
+            Point2D point = decoratedShape.point(i);
+            sumX += point.getX();
+            sumY += point.getY();
+        }
+        return new Point2D(sumX / decoratedShape.pointsCount(), sumY / decoratedShape.pointsCount());
+    }
+}
+
diff --git a/src/main/java/shape/Decorator.java b/src/main/java/shape/Decorator.java
new file mode 100644
index 0000000000000000000000000000000000000000..ebae7709700da8409f866dd79d5b96b6ca7c91cb
--- /dev/null
+++ b/src/main/java/shape/Decorator.java
@@ -0,0 +1,30 @@
+package shape;
+
+import javafx.geometry.Point2D;
+import javafx.scene.canvas.GraphicsContext;
+
+public abstract class Decorator implements Shape {
+    protected Shape decoratedShape;
+
+    public Decorator(Shape decoratedShape) {
+        this.decoratedShape = decoratedShape;
+    }
+
+    @Override
+    public int pointsCount() {
+        return decoratedShape.pointsCount();
+    }
+
+    @Override
+    public Point2D point(int index) {
+        return decoratedShape.point(index);
+    }
+
+    @Override
+    public void draw(GraphicsContext context) {
+        decoratedShape.draw(context);
+        drawDecoration(context);  // Ajoute la décoration
+    }
+
+    protected abstract void drawDecoration(GraphicsContext context);  // Méthode abstraite pour la décoration
+}
diff --git a/src/main/java/shape/ShapeContainer.java b/src/main/java/shape/ShapeContainer.java
index ffafdf89335cb2d3ede584ab8a1255d4abb0b057..124534f31be9a9a22b40d9067dbed82826aba3f5 100644
--- a/src/main/java/shape/ShapeContainer.java
+++ b/src/main/java/shape/ShapeContainer.java
@@ -5,18 +5,18 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class ShapeContainer {
-    private List<Shape> shapes = new ArrayList<>();  // Liste des formes
+    // Liste pour stocker les formes
+    private List<Shape> shapes = new ArrayList<>();
 
-    // Méthode pour ajouter une forme au conteneur
+    // Méthode pour ajouter une forme dans le conteneur
     public void add(Shape shape) {
-        shapes.add(shape);
+        shapes.add(shape);  // Ajoute la forme à la liste
     }
 
-    // Méthode pour dessiner toutes les formes sur le canvas
+    // Méthode pour dessiner toutes les formes
     public void draw(GraphicsContext context) {
         for (Shape shape : shapes) {
-            shape.draw(context);
+            shape.draw(context);  // Appelle la méthode draw de chaque forme
         }
     }
 }
-