From 54904bc76d47f9bfc536c02fe112ddf008a02989 Mon Sep 17 00:00:00 2001
From: a23022716 <celia.arezki.1@etu.univ-amu.fr>
Date: Fri, 27 Sep 2024 11:29:59 +0200
Subject: [PATCH] ADD of The abstract class AbstractShape implements the Shape
 interface and provides common functionality for managing points

---
 src/main/java/shape/AbstractShape.java | 30 ++++++++++++++++++++++++++
 src/main/java/shape/Shape.java         |  4 +++-
 2 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 src/main/java/shape/AbstractShape.java

diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java
new file mode 100644
index 0000000..4b58511
--- /dev/null
+++ b/src/main/java/shape/AbstractShape.java
@@ -0,0 +1,30 @@
+package shape;
+
+import javafx.geometry.Point2D;
+import javafx.scene.canvas.GraphicsContext;
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractShape implements Shape {
+    protected List<Point2D> points = new ArrayList<>();
+
+    public void addPoints(Point2D... points) {
+        for (Point2D point : points) {
+            this.points.add(point);
+        }
+    }
+
+    @Override
+    public int pointsCount() {
+        return points.size();
+    }
+
+    @Override
+    public Point2D point(int index) {
+        return points.get(index);
+    }
+
+    @Override
+    public abstract void draw(GraphicsContext graphicsContext);
+}
+
diff --git a/src/main/java/shape/Shape.java b/src/main/java/shape/Shape.java
index 16766e4..8e28d81 100644
--- a/src/main/java/shape/Shape.java
+++ b/src/main/java/shape/Shape.java
@@ -3,8 +3,10 @@ package shape;
 import javafx.geometry.Point2D;
 import javafx.scene.canvas.GraphicsContext;
 
+
 public interface Shape {
     int pointsCount();
     Point2D point(int index);
-    void draw(GraphicsContext context);
+    void draw(GraphicsContext graphicsContext);
 }
+
-- 
GitLab