From 4fff5952c043c3e22602a3a17eae753f4248d07a Mon Sep 17 00:00:00 2001
From: Luyus <148471006+xinghenLuyus@users.noreply.github.com>
Date: Sun, 2 Mar 2025 17:10:06 +0800
Subject: [PATCH] Luyus
---
.idea/compiler.xml | 13 ++++
.idea/jarRepositories.xml | 20 ++++++
.idea/misc.xml | 12 ++++
.idea/workspace.xml | 58 ++++++++++++++----
src/main/java/cn/zust/edu/cn/App.java | 11 +++-
src/main/java/cn/zust/edu/cn/Circle.java | 26 ++++++++
src/main/java/cn/zust/edu/cn/IShape.java | 7 +++
src/main/java/cn/zust/edu/cn/Point.java | 18 +++++-
src/main/java/cn/zust/edu/cn/Rectangle.java | 37 ++++++++++-
.../java/cn/zust/edu/cn/ShapeManager.java | 22 +++++++
src/main/java/cn/zust/edu/cn/Triangle.java | 39 ++++++++++++
target/classes/cn/zust/edu/cn/App.class | Bin 0 -> 1157 bytes
target/classes/cn/zust/edu/cn/Circle.class | Bin 0 -> 1222 bytes
target/classes/cn/zust/edu/cn/IShape.class | Bin 0 -> 170 bytes
target/classes/cn/zust/edu/cn/Point.class | Bin 0 -> 582 bytes
target/classes/cn/zust/edu/cn/Rectangle.class | Bin 0 -> 1459 bytes
.../classes/cn/zust/edu/cn/ShapeManager.class | Bin 0 -> 1117 bytes
target/classes/cn/zust/edu/cn/Triangle.class | Bin 0 -> 1774 bytes
18 files changed, 246 insertions(+), 17 deletions(-)
create mode 100644 .idea/compiler.xml
create mode 100644 .idea/jarRepositories.xml
create mode 100644 .idea/misc.xml
create mode 100644 src/main/java/cn/zust/edu/cn/Circle.java
create mode 100644 src/main/java/cn/zust/edu/cn/IShape.java
create mode 100644 src/main/java/cn/zust/edu/cn/ShapeManager.java
create mode 100644 src/main/java/cn/zust/edu/cn/Triangle.java
create mode 100644 target/classes/cn/zust/edu/cn/App.class
create mode 100644 target/classes/cn/zust/edu/cn/Circle.class
create mode 100644 target/classes/cn/zust/edu/cn/IShape.class
create mode 100644 target/classes/cn/zust/edu/cn/Point.class
create mode 100644 target/classes/cn/zust/edu/cn/Rectangle.class
create mode 100644 target/classes/cn/zust/edu/cn/ShapeManager.class
create mode 100644 target/classes/cn/zust/edu/cn/Triangle.class
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..d112009
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..9e0563e
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 0c6b7f8..5a39b62 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,5 +1,8 @@
+
+
+
@@ -11,7 +14,14 @@
-
+
+
+
+
+
+
+
+
@@ -21,6 +31,7 @@
+
@@ -31,26 +42,37 @@
-
+
+
+
-
-
-
-
-
-
-
-
-
+
@@ -67,10 +89,19 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -82,6 +113,7 @@
1662520054313
+
1662520558309
@@ -101,7 +133,7 @@
-
+
diff --git a/src/main/java/cn/zust/edu/cn/App.java b/src/main/java/cn/zust/edu/cn/App.java
index bf9c122..d157ffb 100644
--- a/src/main/java/cn/zust/edu/cn/App.java
+++ b/src/main/java/cn/zust/edu/cn/App.java
@@ -6,7 +6,16 @@ package cn.zust.edu.cn;
*/
public class App {
public static void main(String[] args) {
- System.out.println("hello world!");
+ ShapeManager shapeManager = new ShapeManager();
+ Rectangle rect = new Rectangle(new Point(10, 10), 100, 200);
+ Triangle tri = new Triangle(new Point(0, 10), new Point(50, 50), new Point(150, 0));
+ Circle cir = new Circle(new Point(100, 100), 100);
+ shapeManager.addShape(rect);
+ shapeManager.addShape(tri);
+ shapeManager.addShape(cir);
+ shapeManager.drawShapes();
+ shapeManager.delShape(rect);
+ shapeManager.drawShapes();
}
}
diff --git a/src/main/java/cn/zust/edu/cn/Circle.java b/src/main/java/cn/zust/edu/cn/Circle.java
new file mode 100644
index 0000000..1f18574
--- /dev/null
+++ b/src/main/java/cn/zust/edu/cn/Circle.java
@@ -0,0 +1,26 @@
+package cn.zust.edu.cn;
+
+public class Circle implements IShape {
+ Point ptCenter;
+ int radius;
+
+ public Circle(Point center, int r) {
+ this.ptCenter = center;
+ this.radius = r;
+ }
+
+ @Override
+ public double perimeter() {
+ return 2 * Math.PI * radius;
+ }
+
+ @Override
+ public double area() {
+ return Math.PI * radius * radius;
+ }
+
+ @Override
+ public void draw() {
+ System.out.println("Drawing Circle at (" + ptCenter.x + ", " + ptCenter.y + ") with radius " + radius);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/cn/zust/edu/cn/IShape.java b/src/main/java/cn/zust/edu/cn/IShape.java
new file mode 100644
index 0000000..017cdba
--- /dev/null
+++ b/src/main/java/cn/zust/edu/cn/IShape.java
@@ -0,0 +1,7 @@
+package cn.zust.edu.cn;
+
+public interface IShape {
+ double perimeter();
+ double area();
+ void draw();
+}
diff --git a/src/main/java/cn/zust/edu/cn/Point.java b/src/main/java/cn/zust/edu/cn/Point.java
index 5661ad0..8d2a940 100644
--- a/src/main/java/cn/zust/edu/cn/Point.java
+++ b/src/main/java/cn/zust/edu/cn/Point.java
@@ -5,5 +5,21 @@ package cn.zust.edu.cn;
* @since 2023/3/7 10:50
*/
public class Point {
+ int x;
+ int y;
-}
+ public Point() {
+ this.x = 0;
+ this.y = 0;
+ }
+
+ public Point(int x, int y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ public Point(Point p) {
+ this.x = p.x;
+ this.y = p.y;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/cn/zust/edu/cn/Rectangle.java b/src/main/java/cn/zust/edu/cn/Rectangle.java
index f70897e..4e578a3 100644
--- a/src/main/java/cn/zust/edu/cn/Rectangle.java
+++ b/src/main/java/cn/zust/edu/cn/Rectangle.java
@@ -4,5 +4,38 @@ package cn.zust.edu.cn;
* @author czg
* @since 2023/3/7 10:50
*/
-public class Rectangle {
-}
+public class Rectangle implements IShape {
+ Point ptTopLeft;
+ Point ptTopRight;
+ int width;
+ int height;
+
+ public Rectangle() {
+ this.ptTopLeft = new Point();
+ this.ptTopRight = new Point();
+ this.width = 0;
+ this.height = 0;
+ }
+
+ public Rectangle(Point topleft, int height, int width) {
+ this.ptTopLeft = topleft;
+ this.ptTopRight = new Point(topleft.x + width, topleft.y);
+ this.width = width;
+ this.height = height;
+ }
+
+ @Override
+ public double perimeter() {
+ return 2 * (width + height);
+ }
+
+ @Override
+ public double area() {
+ return width * height;
+ }
+
+ @Override
+ public void draw() {
+ System.out.println("Drawing Rectangle at (" + ptTopLeft.x + ", " + ptTopLeft.y + ") with width " + width + " and height " + height);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/cn/zust/edu/cn/ShapeManager.java b/src/main/java/cn/zust/edu/cn/ShapeManager.java
new file mode 100644
index 0000000..6e2ab98
--- /dev/null
+++ b/src/main/java/cn/zust/edu/cn/ShapeManager.java
@@ -0,0 +1,22 @@
+package cn.zust.edu.cn;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ShapeManager {
+ private final List shapes = new ArrayList<>();
+
+ public void addShape(IShape shape) {
+ shapes.add(shape);
+ }
+
+ public void delShape(IShape shape) {
+ shapes.remove(shape);
+ }
+
+ public void drawShapes() {
+ for (IShape shape : shapes) {
+ shape.draw();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/cn/zust/edu/cn/Triangle.java b/src/main/java/cn/zust/edu/cn/Triangle.java
new file mode 100644
index 0000000..c7d6ec5
--- /dev/null
+++ b/src/main/java/cn/zust/edu/cn/Triangle.java
@@ -0,0 +1,39 @@
+package cn.zust.edu.cn;
+
+public class Triangle implements IShape {
+ Point ptA;
+ Point ptB;
+ Point ptC;
+ double edgeA;
+ double edgeB;
+ double edgeC;
+
+ public Triangle(Point ptA, Point ptB, Point ptC) {
+ this.ptA = ptA;
+ this.ptB = ptB;
+ this.ptC = ptC;
+ this.edgeA = calculateDistance(ptA, ptB);
+ this.edgeB = calculateDistance(ptB, ptC);
+ this.edgeC = calculateDistance(ptC, ptA);
+ }
+
+ private double calculateDistance(Point p1, Point p2) {
+ return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
+ }
+
+ @Override
+ public double perimeter() {
+ return edgeA + edgeB + edgeC;
+ }
+
+ @Override
+ public double area() {
+ double s = perimeter() / 2;
+ return Math.sqrt(s * (s - edgeA) * (s - edgeB) * (s - edgeC));
+ }
+
+ @Override
+ public void draw() {
+ System.out.println("Drawing Triangle with vertices (" + ptA.x + ", " + ptA.y + "), (" + ptB.x + ", " + ptB.y + "), (" + ptC.x + ", " + ptC.y + ")");
+ }
+}
\ No newline at end of file
diff --git a/target/classes/cn/zust/edu/cn/App.class b/target/classes/cn/zust/edu/cn/App.class
new file mode 100644
index 0000000000000000000000000000000000000000..644d416730935062fc2a25cd69270c8f159abb54
GIT binary patch
literal 1157
zcmZ`&+iuf95IvilQ`a=krI)0%v|N*>jUkjAk%+`I;)8fZ%x(%rR_cfK?3puXW@l%A{{HqIz&4($2qCN>q9KYHgMQ3EaHGrJ
zw(+WUY@0qqY}aue{~1F#UuYW9MA09DzdmLlC3c0E=eX2rr?@}HLNqlxn;>7PK&5Y
zPerss!3_;J#Wksx$4{kWAmG~??noia?n+cafgu&B?|Hw^5ZUWlHbbK3xc1@jq-A?Y
zywxQnRqL6&+u+nQ+Mk0FzvB$(vVwgesS0VGaK~j>$iJ;!j7{D59JfvNlAn8RicU{)
zGiZbVriNi9m_nZ8e5gb&PYz=)Nc%Tc#0gVshHQ}XcMJr>bUd1qAY*cK>}*@#%ra9v=xgmF=G3A3`kI6b&EviGU-_n3o;1Uk^+
zA_)&EoFa`+^q$1owkP%D9?G(^b
literal 0
HcmV?d00001
diff --git a/target/classes/cn/zust/edu/cn/Circle.class b/target/classes/cn/zust/edu/cn/Circle.class
new file mode 100644
index 0000000000000000000000000000000000000000..96c50f9510fe83719a32e59d62b2e12bcec7bf34
GIT binary patch
literal 1222
zcmZ`(YflqF6g^W)w_TRfv>*>b7oXemSReReQGr&pS{_MB6Fx5Oh7Pv7&9W=vAMocG
z4U|L^e}I3<#CT`7DF`)9rgQJioOAD)GyCh$_n!b3uqh*gJ_%6;{fIH7_RSBb-Z1Sw
zeRFr;s(K8uC2n)?1w)^ftt1dfLV~Pd01CrM)z&}x2cB-#e4XZb?p7NXL%ikXE!(qP
zhAX8Dd$t^Idxii?Di}hF7+kZ){R0M8l#pgfo)xifdiB`y`1J4X!rWMFIT2107{j=P
z2?bX%`A^a1qXW-sQmu|prH_;XB<|>2E|Hc!*D{-igli0=XB?E~_TH+`8#T+7F@?T3
zrWrB?*F2;JHEc>XJyjE{Hx=B%ZK~RAwJf{FFsFqyfodU`k-e1a;8Wvwp-IRp$cf&E
zd#OW8d=yl(f@+RoQY-!+Fb&O83&BB4PQmM~daT*&>fjXuX|L%vKnp
zd8bBuhDzMFHvHzU4o-PoZNyebR8r?X9Ty}i7YOQg>HxOdXi~cc9rj3B%C5;d-fJO)p(-@_EKUQd5
zrD#VyE3uY41Lg1*eh$YKS0rP#NBJ5f(cLsbP$S2)%JK=WtS8
zoDu|!XqZ#oqDtc%Mt@*x=M>k|Y8y8QO*+P%HfGZE-SD0WABN!|&D(g?#%)Hn8
z@dU8M*dQQG^Tyu&rL$6atNSK9aw`TAVN&sxZOzTWZugbs9U*DOl_%-M5yIJgMTpo5
vs}zoJ-`kEb%Ff>9vMy^Oq`$^RUltS8qjVrtzyL9NkooHniGDP%GeG(Qe*q#r
literal 0
HcmV?d00001
diff --git a/target/classes/cn/zust/edu/cn/Point.class b/target/classes/cn/zust/edu/cn/Point.class
new file mode 100644
index 0000000000000000000000000000000000000000..3922329b1f6c47e7700b0e9bf6c8855911baca3c
GIT binary patch
literal 582
zcmZut%Syvg6r9_ntxeN+6RoN#MLj%a!9zBZvQ&p&xKWJ@X8tw`!s$jp{`~KMALvLT%^=-g)#e
z_7>Ofc+O077*5>z$X)mnr%8Qv?=KbXVV1<9LcTi~^hOGuZgz*%)T4rN6-JARcjk+d
z5gXi>C9z9;IX;3ME<=QPC2Al&3dB02Q+6n+^*^Ed+6RgPl{cnxXb_vwiDjaR5-OODV;#IFH@M-oKMe3!suJ;omFmI?n?Q^
z@>{zRC=A_nTqn4#kT8o&8d3`54Y&NUyB3t~X17dx-gDd_0}Y8ZhM{Z7>ez=7g~`6e
z1p*SfZ7ZZZ!J^lx*>A{jpw^cc0#*cUzmA+BWy16YXQdTLcwEN>4k!$+JI$b_psEs`
z)NxRvLoGW>)Nn}0w1m|AH0wL8<4EXzkZO-g&&LR2R;$IOG)~~8hEqCD!~A0q^$%--
zy~_T*E{mP0g(Gsj^1RQs>w#}us}&6;h5XL&7}9k;;srvfjkf&wsiEt?hD-d$mV>&GJ*99IEw})uCpR54GU3?m{*L)0eC0qb7
z{0n0@#IfHXhGU4A@h-Z(I_AFO_;(b!iJ9D)Eu14_hU3}7#oU$HEr@$9a>vBJ9@%-?
dTc~W|&d#>v9~k`8ndPWey)uXLR7Or*>LwV)|+fF?0Taaoh~gI*
zFAgyJ3Fe0YZS&MG0K~_*!PjV6Jv^@C25$m4`Am9TkBQV+tN0P-Viyw;JRjsSsVg4v
zWO~?;NAups9Wn{rJ(V$Y0%L-FdB(;B-tD^RA=tiU^DXv_kmD0CZ=Y=AzqNMW82Zvp9}q*>By@w)h2SkQgi9KkP`2IhY9bqPG6D}vHr
DaJS%l
literal 0
HcmV?d00001
diff --git a/target/classes/cn/zust/edu/cn/Triangle.class b/target/classes/cn/zust/edu/cn/Triangle.class
new file mode 100644
index 0000000000000000000000000000000000000000..ee89bbeac987e3af6ee23672e6dbb78f521458fb
GIT binary patch
literal 1774
zcmb7F>vG#f6#mwBBHJi8CrxP6rfPy4Ted42uEnK<#4QcDZNR}$%1x1lt;Dg6EH{)F
z;0^f6D==jervo!Q01w6Rt>idO>i)nQ?e5ug_B-F6i~P^OfBp^NP3$HSK~zCZ#Rx_P
zCU?xorqMK8b>qSIj&1n@qc@$F)A=uD3jg
zN1HZ{+x~|Fv*j}eo37LHixOpA#e{^Q;hL1ERHXXydXn;tigTD1n6k{K)oq%-U2;0U
z*|G?3WQOAo-_4dJ{;Mj^g1QxNR;58L#TosrZ
zb{%5<#CKzKl_8bCBy{8yaruR(0A+PN2lSrmilGGOQx{B)(T|AK|-%y#C
zw*+FHA3cUYmZ6ml$U7?D#SMW(+xDD2+qbj1Gpy}9enWd~
zd%k1Y9W5hG@2L0)cUduJyKT2>0)P%5=R2pWRReJk>Rq0D=x5^u?yEVd1l%1A+zq_|>dt2tV?6FkYWph+b
zHXY^uX3TFm9f9*_@s1N$Wa!%0<*-6%lSRPD@j$G`3=1SHZr8KyJC1ZPc6{iXj1I1_
z3L_Bs8l$XoegJ}MXBP)EyEmBGWx>q83TAc_=MkP8!M7a0qx36ce1H}G2tv;tLecYw
z7}E=fnAG)L{s_~DnA7!qAz01pdLb9A7M}7{1mAO9Bpb;hM!yM+VVuu2zbTh6iDgW&
zrBX0yp@*KZ4T}GpCL=xpllq=
z)-$a9PQ#GaD360M(zO->3|yyCqZ_GD!wy^v+0%W8H%L_KCiDZ|{Q&b8hXv~_^o0OA
zgqi3=3;ZyEdDQ24&_%MmT@ph7L`wzVL7gir0VJ)@Z!)2ZDS?o68ZNFr7nJrOC=S_0u=5`dplQwk
literal 0
HcmV?d00001
--
Gitee