求源码,用java定义形状类,随机产生圆,椭圆、矩形,并输出中心点、面积、周长

问题描述

急求源码啊!谢谢1.定义一个形状类,Point,Shape2.派生出矩形(Rectangle)、圆(Circle)、椭圆(Ellipse)3.完成其中可能存在的多态方法4.需要有每种形状的输出,包括中心点、面积、周长的输出这是我的作业哦。我不理解什么叫多态啊!

解决方案

解决方案二:
建议你找java图形编程的书来看。
解决方案三:
引用1楼ylz2007的回复:

建议你找java图形编程的书来看。

有这必要吗?我看楼主的意思是应用面向对象的啊!
解决方案四:
多态就是父类引用指向子类对象,运行是根据子类对象的实际类型来调用相应的方法。下面就是我简单些的一些代码,楼主可以参考参考。如有不足的地方,希望大家多多指教。publicclassPoint{privatedoublex;privatedoubley;publicPoint(doublex,doubley){this.x=x;this.y=y;}publicPoint(){this(0,0);}publicdoublegetX(){returnx;}publicvoidsetX(doublex){this.x=x;}publicdoublegetY(){returny;}publicvoidsetY(doubley){this.y=y;}@OverridepublicStringtoString(){return"坐标是:("+x+","+y+")";}}publicabstractclassShape{publicabstractvoidprintCenterPoint();//打印中心点publicabstractvoidprintArea();//打印面积publicabstractvoidprintPerimeter();//打印周长//该方法统一打印出Shape的相关信息publicvoidprint(){printCenterPoint();printArea();printPerimeter();}}publicclassRectangleextendsShape{privatePointpoint;//矩形左上角的点,用来定位privatedoublewidth;//矩形的宽度privatedoubleheight;//矩形的高度publicRectangle(Pointpoint,doublewidth,doubleheight){this.point=point;this.width=width;this.height=height;}publicRectangle(){this(newPoint(0,0),800,600);//默认左上角的位置为(0,0),宽度为800,高度为600}publicPointgetPoint(){returnpoint;}publicvoidsetPoint(Pointpoint){this.point=point;}publicdoublegetWidth(){returnwidth;}publicvoidsetWidth(doublewidth){this.width=width;}publicdoublegetHeight(){returnheight;}publicvoidsetHeight(doubleheight){this.height=height;}publicvoidprintArea(){System.out.println("矩形的面积是:"+width*height);}publicvoidprintCenterPoint(){doublex=point.getX()+width/2;doubley=point.getY()+height/2;System.out.println("矩形的中心点"+newPoint(x,y));}publicvoidprintPerimeter(){System.out.println("矩形的周长是:"+2*(width+height));}publicvoidprint(){System.out.println("矩形的相关信息");super.print();System.out.println();}}publicclassCircleextendsShape{privatestaticdoublepi=3.14;privatePointpoint;//圆的中心privatedoubleradius;publicCircle(Pointpoint,doubleradius){this.point=point;this.radius=radius;}publicCircle(){this(newPoint(),15);//默认圆的中心坐标为(0,0),半径为15}publicPointgetPoint(){returnpoint;}publicvoidsetPoint(Pointpoint){this.point=point;}publicdoublegetRadius(){returnradius;}publicvoidsetRadius(doubleradius){this.radius=radius;}publicvoidprintArea(){doublearea=pi*radius*radius;System.out.println("圆的面积为:"+area);}publicvoidprintCenterPoint(){System.out.println("圆的中心点"+point);}publicvoidprintPerimeter(){doubleperimeter=2*pi*radius;System.out.println("圆的周长是:"+perimeter);}publicvoidprint(){System.out.println("圆的相关信息");super.print();System.out.println();}}publicclassEllipseextendsShape{privatestaticdoublepi=3.14;privatePointpoint;//左上角的点,相当于和该椭圆外切的矩形的左上角的点。privatedoublea;//长半轴的长privatedoubleb;//短半轴的长publicEllipse(Pointpoint,doublea,doubleb){this.point=point;this.a=a;this.b=b;}publicEllipse(){this(newPoint(),8,6);//默认的左上角位置为(0,0),长半轴长为8,短半轴长为6}publicPointgetPoint(){returnpoint;}publicvoidsetPoint(Pointpoint){this.point=point;}publicdoublegetA(){returna;}publicvoidsetA(doublea){this.a=a;}publicdoublegetB(){returnb;}publicvoidsetB(doubleb){this.b=b;}publicvoidprintArea(){//S=π(圆周率)×a×b(其中a,b分别是椭圆的长半轴,短半轴的长).doublearea=pi*a*b;System.out.println("椭圆的面积为:"+area);}publicvoidprintCenterPoint(){doublex=point.getX()+a;doubley=point.getY()+b;System.out.println("椭圆的中心"+newPoint(x,y));}publicvoidprintPerimeter(){//椭圆的周长公式很多,这里采用比较简单的一个:L1=πQN/arctgN(b→a、Q=a+b、N=((a-b)/a)^2、)doubleq=a+b;doublen=Math.pow(((a-b)/a),2);doubleperimeter=pi*q*n/Math.atan(n);System.out.println("椭圆的周长为:"+perimeter);}publicvoidprint(){System.out.println("椭圆的相关信息");super.print();System.out.println();}}publicclassTest{publicstaticvoidmain(String[]args){Shapeshape=newRectangle();shape.print();shape=newCircle();shape.print();shape=newEllipse();shape.print();}}

时间: 2024-12-27 10:24:34

求源码,用java定义形状类,随机产生圆,椭圆、矩形,并输出中心点、面积、周长的相关文章

java源码-这个java程序设计题目怎么写,求源码????????

问题描述 这个java程序设计题目怎么写,求源码???????? ???????????????????????????????????????????????????????????????????????? 解决方案 /* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to

java源码-java实现汉诺塔 求源码解析思路,不要链接

问题描述 java实现汉诺塔 求源码解析思路,不要链接 一共十六个盘子,盘子必须从小到大排列,只能在abc三个塔自由移动,一次只能移动一个!求源码 解决方案 这个要递推,假设开始的时候全部在a塔上,目标是全部移到c塔上. 从一个盘子开始: 1. 一个盘子,从a移到c塔显然只需要一步,所以答案是1 2.两个盘子,那么我们需要先将上面的一个盘子移到b塔,需要1步:再将a最下面的移到c塔上,需要1步:然后再将b塔的移到c塔上,需要1步:所以总计是3 3.三个盘子,那么我们需要先将上面两个移到b塔,按照

微信开发,将微信官网源码(java版)导入,用tomcat发布时报错,求解答?

问题描述 微信开发,将微信官网源码(java版)导入,用tomcat发布时报错,求解答? 2016-3-17 14:19:13 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.li

java源码-求大神指导,求源码??????????

问题描述 求大神指导,求源码?????????? 求源码?????????????????????????????????????????????????????????????? 解决方案 我不敢休息,因为我没有存款: 我不敢说累,因为我没有成就: 我不敢偷懒,因为我还要生活: 我能放弃选择,但是我不能选择放弃. 所以坚强,拼搏是我唯一的选择. 世上没有一件工作不辛苦, 没有一处人事不复杂. 即使你再排斥现在的不愉快, 光阴也不会过得慢点. 所以不要随意发脾气,谁都不欠你的. 要学会低调,取舍

java源码-类似鞍点的问题求解,求源码

问题描述 类似鞍点的问题求解,求源码 这个不太会,求大神源码?????????????????????????????????????????????????????????????????????????????? 解决方案 canner reader=new Scanner(System.in); int[] scores = new scores[16]; for (int i = 0; i < 16; i++) { scores[i] = scanner.nextInt(); } int

java源码-这个题目求帮助,不会写,求源码??

问题描述 这个题目求帮助,不会写,求源码?? 求help,求源码?????????????????????????????????????????????????????????????????????????????????????? 解决方案 http://blog.csdn.net/hymanxq/article/details/26628249

java源码-这个题目求源码大神帮助??

问题描述 这个题目求源码大神帮助?? 这个看不太明白,求思路和源码???????????????????????????????????????????????????????????????????????????????? 解决方案 背包问题(百度)...取出任何个数等于总和的二分之一有几套方案 解决方案二: 如果天蝎喜欢你??

java源码-这个题目麻烦各位看下,求源码

问题描述 这个题目麻烦各位看下,求源码 这个项目怎么写啊,没有想出来,求大神?????????????????????????? 解决方案 分隔成字符串数组,然后去匹配?

winform中继承base实现屏蔽系统热键,求源码

问题描述 winform中继承base实现屏蔽系统热键,求源码 近期想做一个锁屏,采用键盘钩子在win7上一直不完美,听说继承base类可以实现,但是不知道具体怎么实现屏蔽系统热键,比如alt+f4,任务管理器等等啊,求源码或详细思路,谢谢 解决方案 继承base实现屏蔽系统热键 没这么神奇,只能吃掉本窗体的键盘消息的响应. 解决方案二: 任务管理器可以通过组策略禁用 阻止alt+f4只要在Closing事件中写e.cancel=true即可.