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 @@ - + + + + + + + + \ 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