From 3499f7a64018cc690eba3c7504da779dff62a9a2 Mon Sep 17 00:00:00 2001
From: Frank <2418482709@qq.com>
Date: Sun, 2 Mar 2025 17:48:46 +0800
Subject: [PATCH] zhz
---
.idea/compiler.xml | 13 +++
.idea/jarRepositories.xml | 20 +++++
.idea/misc.xml | 12 +++
.idea/workspace.xml | 75 ++++++++++--------
src/main/java/cn/zust/edu/cn/App.java | 19 ++++-
src/main/java/cn/zust/edu/cn/IShape.java | 7 ++
src/main/java/cn/zust/edu/cn/Point.java | 17 ++++
src/main/java/cn/zust/edu/cn/ShapeManger.java | 22 +++++
.../java/cn/zust/edu/cn/shape/Circle.java | 29 +++++++
.../java/cn/zust/edu/cn/shape/Rectangle.java | 38 +++++++++
.../java/cn/zust/edu/cn/shape/Triangle.java | 54 +++++++++++++
target/classes/cn/zust/edu/cn/App.class | Bin 0 -> 1519 bytes
target/classes/cn/zust/edu/cn/IShape.class | Bin 0 -> 170 bytes
target/classes/cn/zust/edu/cn/Point.class | Bin 0 -> 564 bytes
target/classes/cn/zust/edu/cn/Rectangle.class | Bin 0 -> 282 bytes
.../classes/cn/zust/edu/cn/ShapeManger.class | Bin 0 -> 1118 bytes
.../classes/cn/zust/edu/cn/shape/Circle.class | Bin 0 -> 1267 bytes
.../cn/zust/edu/cn/shape/Rectangle.class | Bin 0 -> 1523 bytes
.../cn/zust/edu/cn/shape/Triangle.class | Bin 0 -> 1956 bytes
19 files changed, 271 insertions(+), 35 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/IShape.java
create mode 100644 src/main/java/cn/zust/edu/cn/ShapeManger.java
create mode 100644 src/main/java/cn/zust/edu/cn/shape/Circle.java
create mode 100644 src/main/java/cn/zust/edu/cn/shape/Rectangle.java
create mode 100644 src/main/java/cn/zust/edu/cn/shape/Triangle.java
create mode 100644 target/classes/cn/zust/edu/cn/App.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/ShapeManger.class
create mode 100644 target/classes/cn/zust/edu/cn/shape/Circle.class
create mode 100644 target/classes/cn/zust/edu/cn/shape/Rectangle.class
create mode 100644 target/classes/cn/zust/edu/cn/shape/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..789324d
--- /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..7e7a4c3 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,5 +1,8 @@
+
+
+
@@ -11,7 +14,14 @@
-
+
+
+
+
+
+
+
+
@@ -31,25 +41,35 @@
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
@@ -67,10 +87,19 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -101,7 +130,7 @@
-
+
@@ -119,26 +148,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/java/cn/zust/edu/cn/App.java b/src/main/java/cn/zust/edu/cn/App.java
index bf9c122..4ef7c4c 100644
--- a/src/main/java/cn/zust/edu/cn/App.java
+++ b/src/main/java/cn/zust/edu/cn/App.java
@@ -1,4 +1,9 @@
package cn.zust.edu.cn;
+
+import cn.zust.edu.cn.shape.Circle;
+import cn.zust.edu.cn.shape.Rectangle;
+import cn.zust.edu.cn.shape.Triangle;
+
/**
*
* @author czg
@@ -6,7 +11,19 @@ package cn.zust.edu.cn;
*/
public class App {
public static void main(String[] args) {
- System.out.println("hello world!");
+ ShapeManger shapeManager=new ShapeManger();
+ 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(100,new Point(100,100));
+ System.out.println("进行第一次绘制:");
+ shapeManager.addShape(rect);
+ shapeManager.addShape(tri);
+ shapeManager.addShape(cir);
+ shapeManager.drawShapes();
+ System.out.println("-----------------------------------------------------------------------------------------------");
+ System.out.println("进行第二次绘制:");
+ shapeManager.delShape(rect);
+ shapeManager.drawShapes();
}
}
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..84ba88b
--- /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..62049f6 100644
--- a/src/main/java/cn/zust/edu/cn/Point.java
+++ b/src/main/java/cn/zust/edu/cn/Point.java
@@ -5,5 +5,22 @@ package cn.zust.edu.cn;
* @since 2023/3/7 10:50
*/
public class Point {
+ public int x;
+ public int y;
+ //无参构造函数
+ public Point() {
+ }
+
+ //有参构造函数
+ public Point(int x, int y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ // 拷贝构造函数
+ public Point(Point p) {
+ this.x = p.x;
+ this.y = p.y;
+ }
}
diff --git a/src/main/java/cn/zust/edu/cn/ShapeManger.java b/src/main/java/cn/zust/edu/cn/ShapeManger.java
new file mode 100644
index 0000000..24fa9b1
--- /dev/null
+++ b/src/main/java/cn/zust/edu/cn/ShapeManger.java
@@ -0,0 +1,22 @@
+package cn.zust.edu.cn;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ShapeManger {
+ private final List shapes ;
+ public ShapeManger(){
+ 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();
+ }
+ }
+}
diff --git a/src/main/java/cn/zust/edu/cn/shape/Circle.java b/src/main/java/cn/zust/edu/cn/shape/Circle.java
new file mode 100644
index 0000000..878c140
--- /dev/null
+++ b/src/main/java/cn/zust/edu/cn/shape/Circle.java
@@ -0,0 +1,29 @@
+package cn.zust.edu.cn.shape;
+
+import cn.zust.edu.cn.IShape;
+import cn.zust.edu.cn.Point;
+
+public class Circle implements IShape {
+ private Point ptCenter; // 圆心位置
+ private int radius;// 半径
+
+ public Circle(int r, Point Center) {
+ this.radius = r;
+ this.ptCenter = Center;
+ }
+
+ @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("将把圆形的圆心绘制在坐标(" + ptCenter.x + ", " + ptCenter.y + "),并且它的半径长为 " + radius);
+ }
+}
diff --git a/src/main/java/cn/zust/edu/cn/shape/Rectangle.java b/src/main/java/cn/zust/edu/cn/shape/Rectangle.java
new file mode 100644
index 0000000..a7fc64d
--- /dev/null
+++ b/src/main/java/cn/zust/edu/cn/shape/Rectangle.java
@@ -0,0 +1,38 @@
+package cn.zust.edu.cn.shape;
+
+import cn.zust.edu.cn.IShape;
+import cn.zust.edu.cn.Point;
+
+/**
+ *
+ * @author czg
+ * @since 2023/3/7 10:50
+ */
+public class Rectangle implements IShape {
+ Point ptTopLeft;
+ Point ptBottomRight;
+ int width;
+ int height;
+
+ public Rectangle() {
+ }
+
+ public Rectangle(Point ptTopLeft, int width, int height) {
+ this.ptTopLeft = ptTopLeft;
+ this.width = width;
+ this.height = height;
+ }
+
+ public double perimeter(){
+ return 2*(width+height);
+ }
+ public double area(){
+ return width*height;
+ }
+ public void draw(){
+ int rightbottom1=ptTopLeft.x+width;
+ int rightbottom2=ptTopLeft.y-height;
+ System.out.println("将把矩形的左上角绘制在坐标 (" + ptTopLeft.x + ", " + ptTopLeft.y + "),其右下角绘制在坐标 ("+rightbottom1+", "+rightbottom2+"),其宽度为 " + width + ",高度为 " + height);
+ }
+
+}
diff --git a/src/main/java/cn/zust/edu/cn/shape/Triangle.java b/src/main/java/cn/zust/edu/cn/shape/Triangle.java
new file mode 100644
index 0000000..cb7b8ee
--- /dev/null
+++ b/src/main/java/cn/zust/edu/cn/shape/Triangle.java
@@ -0,0 +1,54 @@
+package cn.zust.edu.cn.shape;
+import cn.zust.edu.cn.IShape;
+import cn.zust.edu.cn.Point;
+
+public class Triangle implements IShape {
+ //三角形坐标
+ private Point ptA;
+ private Point ptB;
+ private Point ptC;
+
+ public Triangle(Point ptA, Point ptB, Point ptC) {
+ this.ptA = ptA;
+ this.ptB = ptB;
+ this.ptC = ptC;
+ }
+
+ // 只读属性:边长
+ public double getEdgeA() {
+ return distance(ptB, ptC);
+ }
+
+ public double getEdgeB() {
+ return distance(ptA, ptC);
+ }
+
+ public double getEdgeC() {
+ return distance(ptA, ptB);
+ }
+
+ // 计算两点间的距离
+ private double distance(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 getEdgeA() + getEdgeB() + getEdgeC();
+
+ }
+
+ @Override
+ public double area() {
+ //利用海伦公式
+ double s=perimeter()/2;
+ return Math.sqrt(s * (s - getEdgeA()) * (s - getEdgeB()) * (s - getEdgeC()));
+ }
+
+ @Override
+ public void draw() {
+ System.out.println("将把三角形的顶点分别绘制在坐标 ("
+ + ptA.x + ", " + ptA.y + ")、("
+ + ptB.x + ", " + ptB.y + ") 和 ("
+ + ptC.x + ", " + ptC.y + ")");
+ }
+}
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..b409be245463150863a68bcd68be3ecb1972c368
GIT binary patch
literal 1519
zcmcIkOHUI~6#i~om@kJ_$<#+L{z{BB51WdVhKrOq8U0P43@T;wisC%SH_UI
z&={jD_H1;~8ftWF{2eOn{0GK!Z)*t6uym5SGxwbDe&0Rk+;hMG+4%xs7;`dQa7*wg
zs6sV^x~i}1T0&1QYjaDhW<1MKJ#Hnf>=g!gsAo}vmmv^OY8$ysRx^#9M*qsF8LC3zaL=L)89r|DGqi;w
zPK(AkPC_F?M}@njyI@;FRz?GwIaLe8)FD*P0?t-08lYV{icVT~JYmXcMLU=5pv;BB
zhw;>)3qc9p3Xb9UfkH%|WU}TOC>HhQuv
zR)!9DWnPGi1UzfHMLBK?-E&GZ`E`4lR{I^?3`(ZlYC82ALwlu!h@;erT*?*=9IQkM
zlKoaBq??M&(B%yL*E<{+w@9|b8CN>)gp#AFoEn;
zjpH=a=*#F^)ms4jAl#Q}j`dTB8Wz)MuX>msCB0X2~#x4-H*WeZplP;<)|hGtzo8n!*f#3zvs)C3*50E%P4ATkF~VdIs~EO7V2>yK0JgUkLXHD
zqY>+9!Umf03@vy;cg9Nu@CxlB{^3%Ln8Xd@@nREGn5GN_k;P47bI}_?7`Ndj-VxlP
MnTPx{gmz)}FWbI;Z2$lO
literal 0
HcmV?d00001
diff --git a/target/classes/cn/zust/edu/cn/IShape.class b/target/classes/cn/zust/edu/cn/IShape.class
new file mode 100644
index 0000000000000000000000000000000000000000..2eacc522c098bb3ecf3b6e4098db6d3e398adcb2
GIT binary patch
literal 170
zcmXYqF%E)I5JYDI`63oJ-a#9G;}MLBl?93Y3LAwWk}qEqk7nTkJd|-!o1M+>%)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..00802000ccbf9204afa4dee16e59952bf18db815
GIT binary patch
literal 564
zcmZvY!A`OIyoL?qU%p>&7Ur&0g7Hnyx7lL-0j6#ClkK*t=
zdl-h(YkxT5N~50y{$$`!Be~~AExnIs1gF0YaYWGFUavDCwB6+$@{b+~=2enSgYYa8
zlBo>t%OkPN_6od&0!SXi8GBQ)$Qf^g&l*<`I1)#_`vH1W19d)Sao~0h6*N?)ny`i@
z-$bC53*5?zxn_$%cWVx#yFEwcU#h_(V3vkD$}Co85s}*-%>m
literal 0
HcmV?d00001
diff --git a/target/classes/cn/zust/edu/cn/Rectangle.class b/target/classes/cn/zust/edu/cn/Rectangle.class
new file mode 100644
index 0000000000000000000000000000000000000000..5835193bbd8eaee2eacda9a0de7f8e79bc0ebc33
GIT binary patch
literal 282
zcmZ`!yKcfj5S%qOCJu=aRYaE#C~{4@L}?;XSs+0~e>NvL%h-~!Q{=BwMM{wm$VWxY
zp@@!KX?ABHvwOdP-#-8zF^J%y6T1_>sVfYVD$~VU*Vgg>q~Gl9K`=@#
z2|fv;Rn^v+nOUcDdtUY64#hn}-tV5!_yghN&-#YF6{rBgu0B)jWB7mTQkcBaX1rl3wSK3Y4
z+OVJ2wp85{2$!6eWBy77rcdx8siB$!lBxUjWfl;xdb0kiB6kLL
znbmgJt*a-Ft~}v;_3zEH-Un9`R2M3PO~5k$EoD@(@8vK%%e@QTPJm
z#Xh2+V1DquZJy)w03wWwl4Ig3HLD+kYq(BL;0E7GpZAzKbY83Q5$0kKi2$A-vGh~Y
z(J{n*PI{pCIr`5n+$Krj&WXhIF~kWH6aOLJJ?wdpeBD!4*Vw}ufif%22)sj@!o0vY
zWGhQO~G()^DUN@K>4CWqXuHhF<19Lz5z69>m
H6hQGWS%%+%
literal 0
HcmV?d00001
diff --git a/target/classes/cn/zust/edu/cn/shape/Circle.class b/target/classes/cn/zust/edu/cn/shape/Circle.class
new file mode 100644
index 0000000000000000000000000000000000000000..cee23fd2808294b37967b708f596422581f6ba2c
GIT binary patch
literal 1267
zcmZ`(TTc@~7(LTMw=K)Xa=%nTMcWG03*IOy0;1J&NlKdVxU?HsEZb(;s`v^4Lp1S0
z6Js?ut(A2Ntr4&DWPPh7+9Fsm53-s8G|#e_sFU)YYbJ9eE>r#Mb$$BJPakft@KO!
zxTCAK>DO>?YmKAJWi4E&L9Ku~5%p;Jr}gOclrB$F$EgfmpfX}2DXHL)M(9yplch=G
zILuJJ%Ry;H9qZ00$%L%A;f39aCWdC?e;}1(47qR;J^_9a0j_LCK4D172b`*f
zQ?)WQ_`?4ObRx)LYiZ=bXGEOksBGGab_TEi=hw%^m+a=sGvoaXztxikV}16=^Nr1w
z)ke;6LBvH|qHm?Atj?(;-$AaB8yz4iJ4IXpS)@FV(hNeH>z-8UQ{<$=uPsH_c3quhF)NGdKRW0I!uIF~HY#}#s;cR$`<
z*M>+WGN$9NLtSZEQzm88t@HqTiBlr~(3H@m`wZ@ADx<~aK83RuSX#q{T9#1!$t>uh(L)7*o5muz2%rST
z=%q}fRfZerqlf@-lXjW8x@IM&n7tn!*J+z@6+J4%#Vc-ur`y^NZ
literal 0
HcmV?d00001
diff --git a/target/classes/cn/zust/edu/cn/shape/Rectangle.class b/target/classes/cn/zust/edu/cn/shape/Rectangle.class
new file mode 100644
index 0000000000000000000000000000000000000000..186c501b7117d74d0b0af72257f15065eea0890a
GIT binary patch
literal 1523
zcmZ`&TTc^F5dIDYwuLR)%0&dRfS0yjssi4MH&nD*6~&PF=0aDxrtLP{t+!`yK@*Kn
z#%MG?c!`NuCAq{&77I9zo)+d=*FoURKO*nQbrZ3
z1(se=E-I0fk{OMh9KN8Am;%+kT1GSX2)KfwArIW}NT`uf3t6CTBon!s&zTW5k&lp_
zODb74a+>mpA*BjkMDhddNUB@oS=*l!c>=%&8nG%z{a3+x!rf?ifCv-
zsCa9XDK;?0MuFB~?EgSFA_5f~0&Z*(Xb=7Re8;+8uN20_~u}5W~^x{
zVw$ph1iX~|^Yw#bh!t#?u>(5=+@|g*rWXk=)Iw^b=#{Wr#vbeyShh%)1*9zZJe8qm
zSgaL8686)tvImb1^0bk*tl6iVrk*~{QzB4#Ku=J3NnFdQC-UiG)i|RJ^Dz43`iPPm
zQVfm#VzAOoYB_;G`EZtva#WxtSdMW9I2H>H@uaJUmR3#Gus7u(=}>5d=tvmKB>~xB
zb;Gt$dXB%{tpYWJdfpgO`!&{CS6ZM=+%2@zE>u8ZA1Y~SY4PX_^c7E99NVW=p|gr`
zw8`{6KwcM}f}`O{i1%bv;2?c@=>Z?n`EiIW*#V&+hsk4tBlKm06e0Q2dL{_3pMVr@
zoq#vIass}2zDCL*3?UofK_lwWM4P+Z<_z~6q=(RqtDWOmNYVBeMQw>9UTWbC>2MK6
zjwqyYY6Ph{*XuaVbodgxKcMv!I?hgFwSP?k>x#ev*84Y=+-7z+liM;EZ)Ibv1Msrl
z?btrD3)oh`uK5Q0?IyOvON+MxoiMQ4mK|`U6=i#I9>=MXf-q-s!fvj>NxNqQe*iQ%
BUD^Nu
literal 0
HcmV?d00001
diff --git a/target/classes/cn/zust/edu/cn/shape/Triangle.class b/target/classes/cn/zust/edu/cn/shape/Triangle.class
new file mode 100644
index 0000000000000000000000000000000000000000..94d18548ceb7d3c13520588acfaf5b5ba4dbb0b5
GIT binary patch
literal 1956
zcmb7FT~ixX7=BI?vPs+k0tM~IG?hk@5Sr3fYfZH+AGK)OqCvFQuO(T-LcZK=)Ow|k
z(_+U9r&o@nj(VdrUidK((2o89|AwaMpKyH6?lwRgE`-^0_C4=8&-1>|dEd<+|Ni)pb8ww
zl~eE5YgS6n*He72EoxOgHD?+GDC#^?way6)X4jO&-r+OjKTB2QUkDK#
zQt*(9VH_6d-jd~_W-ZEiD{l*Q#iphlf`?U%NOW;co{XzVU{t_Yd()(Xz8H7OY{pa^
zL5kTFbZa_a(5VeYwO!*Xj%{~M$o(f&JhFY!mgJ<0$K+zLs+&ehw{$az$B|ZWTE!FK
zJ#D+g?6sPum&j77GmbqOI}M|fnl*U=S+c%q^efZDUjm-~!X|7yvu6)0F`_tx1qxt!F%`ZN=^VN+=
zOrD%paUM^xgtTf^FXsiuVonHlfjLC!_&rN5cUnTsNQkEe_Qz&+-xxqfz>|ywaEX@^
z|MR`~V*$(xDDg=1*2fVV&+%&F5^qk$^O)xqSQUq#6%o4^ncOepih`F^T*b=*{T-Ae
zepTvNEK}M}iOnl`m9Dmeo5{*15t#m8b-YV;GZWurB~Q4Xj8WDv)k_PyIj1ei=IhH;
za$0d-V>i-v7k$>EQ4=`Wj<>UO)0DG1E{9_z&{!wbkH^Fm&Ah3x_Cwi9-OTCd4M`Qg
z+ww=GPB_Hc^+4bicscV+!H)9CMz?1+IOhQUU3iV->$HmW`#29I)*%w3Yfuu&HG~sm
zYv}!n>mFzv2YCX-^ARD4FuM8QPuvBrCYE||(L{g~sd)TEAvSB-cD7%0Rbp&C9?*(T}!|_}@^x7;AltwTTUG2tJ&p=L?ptM5ZHcnXoIEK02l)t*RsaA1
literal 0
HcmV?d00001
--
Gitee