From 1d3cca561c3fd3ea58fcd92f4c7d51c7797c0309 Mon Sep 17 00:00:00 2001 From: Khalid Talakshi Date: Mon, 28 Feb 2022 09:16:38 -0500 Subject: [PATCH 1/2] added circle adapter --- .../designpatterns/adapter/AdapterMain.java | 2 ++ .../designpatterns/adapter/CircleAdapter.java | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/CircleAdapter.java diff --git a/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/AdapterMain.java b/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/AdapterMain.java index 256bd43..1879283 100644 --- a/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/AdapterMain.java +++ b/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/AdapterMain.java @@ -8,11 +8,13 @@ public static void main(String[] args) { // Old objects Line line = new Line(); Rectangle rectangle = new Rectangle(); + Circle circle = new Circle(); // Adapt them with adapters List shapes = new ArrayList(); shapes.add(new LineAdapter(line)); shapes.add(new RectangleAdapter(rectangle)); + shapes.add(new CircleAdapter(circle)); // Code can now operate using common interface int x1 = 7; diff --git a/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/CircleAdapter.java b/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/CircleAdapter.java new file mode 100644 index 0000000..1f9b0c5 --- /dev/null +++ b/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/CircleAdapter.java @@ -0,0 +1,16 @@ +package ca.uwaterloo.cs446.designpatterns.adapter; + +public class CircleAdapter implements Shape { + private Circle adaptee; + + public CircleAdapter(Circle circle) { + this.adaptee = circle; + } + + @Override + public void draw(int x1, int y1, int x2, int y2) { + int centerX = (Math.max(x1, x2) - Math.min(x1, x2)) / 2; + int centerY = (Math.max(y1, y2) - Math.min(y1, y2)) / 2; + adaptee.draw(centerX, centerY, Math.min(Math.abs(x1 - x2), Math.abs(y1 - y2))); + } +} From 74a7a8b23af3b3b0774eeece9c93f241ca634060 Mon Sep 17 00:00:00 2001 From: Khalid Talakshi Date: Mon, 28 Feb 2022 09:20:34 -0500 Subject: [PATCH 2/2] added documentation --- .../cs446/designpatterns/adapter/CircleAdapter.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/CircleAdapter.java b/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/CircleAdapter.java index 1f9b0c5..e9cc1f4 100644 --- a/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/CircleAdapter.java +++ b/src/main/java/ca/uwaterloo/cs446/designpatterns/adapter/CircleAdapter.java @@ -9,8 +9,12 @@ public CircleAdapter(Circle circle) { @Override public void draw(int x1, int y1, int x2, int y2) { + // Center is the difference between the two points int centerX = (Math.max(x1, x2) - Math.min(x1, x2)) / 2; int centerY = (Math.max(y1, y2) - Math.min(y1, y2)) / 2; - adaptee.draw(centerX, centerY, Math.min(Math.abs(x1 - x2), Math.abs(y1 - y2))); + + // radius is the minimum distance between x and y + int radius = Math.min(Math.abs(x1 - x2), Math.abs(y1 - y2)); + adaptee.draw(centerX, centerY, radius); } }