1、编写Java程序。
(1)使用继承机制,分别设计实现抽象基类图形类,派生类圆形类、正方形类、长方形类,要求:
①抽象图形类中有属性画笔颜色、图形是否填充,有方法获取图形面积、获取图形周长等;
②使用构造方法为其成员属性赋初值;
③在每个派生类中都重写toString()方法,返回所有属性的信息;
④根据文字描述合理设计类的其他成员属性和方法。
(2)设计实现画板类,要求:
①画一个红色、无填充、长和宽分别为10.0与5.0的长方形;
②画一个绿色、有填充、半径为3.0的圆形;
③画一个黄色、无填充、边长为4.0的正方形;
④分别求三个对象的面积和周长,并将每个对象的所有属性信息打印到控制台。
抽象类:Graph.java

public abstract class Graph {private String colour;private boolean fill;public abstract double area();public abstract double perimeter();public Graph(String colour,boolean fill){this.colour=colour;this.fill=fill;}public abstract String toString();public String getColour() {return colour;}public void setColour(String colour) {this.colour = colour;}public boolean isFill() {return fill;}public void setFill(boolean fill) {this.fill = fill;}}

Rectangle.java

public class Rectangle extends Graph{private double length;private double width;public Rectangle(String colour, boolean fill,double width,double length) {super(colour, fill);this.length=length;this.width=width;}@Overridepublic double area() {//这里可以不定义变量,直接返回 return length*width;double area;area=length*width;return area;}@Overridepublic double perimeter() {double perimeter;perimeter=length*2+width*2;return perimeter;}@Overridepublic String toString() {return "长方形的边框颜色是:"+getColour()+"\t有无填充:"+isFill()+"\t高为为:"+length+"\t宽为:"+width+"\t周长为:"+perimeter()+"\t面积为:"+area();}}

Rundness.java

public class Roundness extends Graph{private double R;public Roundness(String colour, boolean fill,double R) {super(colour, fill);this.R=R;}@Overridepublic double area() {double area;area=R*R*Math.PI;return area;}@Overridepublic double perimeter() {double perimeret;perimeret=2*R*Math.PI;return perimeret;}public String toString(){return "圆形的边框颜色是:"+getColour()+"\t有无填充:"+isFill()+"\t半径为:"+R+"\t周长为:"+perimeter()+"\t面积为:"+area();}
}

Square.java

public class Square extends Graph{private double length;public Square(String colour, boolean fill,double length) {super(colour, fill);this.length=length;}@Overridepublic double area() {double area;area=length*length;return area;}@Overridepublic double perimeter() {double perimeter;perimeter=length*4;return perimeter;}public String toString(){return "正方形的边框颜色是:"+getColour()+"\t有无填充:"+isFill()+"\t边长为:"+length+"\t周长为:"+perimeter()+"\t面积为:"+area();}
}

Main.java

public class Main {public static void main(String[] args) {Roundness Run=new Roundness("greed",true,3);System.out.println(Run.toString());Square square=new Square("yellow",false,4);System.out.println(square.toString());Rectangle rectangle=new Rectangle("red",false,10,5);System.out.println(rectangle.toString());}}

2、基于上题背景,设计实现以下程序:
(1)设计Comparable接口,接口中设计compareTo()方法,用来比较对象。此方法的返回值类型设计为int类型。此方法接收一个参数,参数类型为图形类。
(2)在图形类中实现compareTo()方法,用来比较两个图形的面积大小。
(3)在测试类中,创建图形类的数组,数组中存放多个圆形、正方形、长方形对象,使用compareTo()方法找出数组中面积最大的图形。
提示:比较对象时,可以将compareTo()方法的返回值设置为1、0、-1,来代表比较结果,当前对象大、两者相等或者当前对象小。再次提醒,此题涉及的代码全部展示在此题的题号下,与上一题相独立。

public abstract class Graph implements Comparable{private String colour;private boolean fill;public abstract double area();public abstract double perimeter();public Graph(String colour,boolean fill){this.colour=colour;this.fill=fill;}public abstract String toString();public int compareTo(Graph graph){if(this.area()>graph.area()){return 1;}else if(this.area()<graph.area()){return -1;}else{return 0;}}public String getColour() {return colour;}public boolean isFill() {return fill;}}
public interface Comparable {public int compareTo(Graph graph);
}
public class Main {public static void main(String[] args) {Graph[] graph=new Graph[10];for(int i=0;i<3;i++){Roundness rou=new Roundness("红色",true,2+i);graph[i]=rou;}for(int i=3;i<7;i++){Square square=new Square("黄色",true,3+i);graph[i]=square;}for(int i=7;i<10;i++){Rectangle rectangle=new Rectangle("绿色",false,3+i,2+i);graph[i]=rectangle;}Graph max=graph[0];for(int i=0;i<graph.length;i++){if(max.compareTo(graph[i])==-1){max=graph[i];}}System.out.println(max);}}

有修改的就这两个类和增加一个接口

在画图软件中,可以画出不同大小或颜色的圆形、矩形等几何图形。几何图形之间有许多共同的特征,如它们可以是用某种颜色画出来的,可以是填充的或者不填充的相关推荐

  1. 在画图软件中,可以画出不同大小或颜色的圆形、矩形等几何图形。几何图形之间有许多共同的特征,如它们可以是用某种颜色画出来的,可以是填充的或者不填充的。此外还有些不同的特征,比如,圆形都有半径,可以根据半

    代码 import org.w3c.dom.ls.LSOutput;/*在画图软件中,可以画出不同大小或颜色的圆形.矩形等几何图形.几何图形之间有许多共同的特征,如它们可以是用某种颜色画出来的,可以是 ...

  2. 在有限多的不大于100的正整数中,找出尽量多个相加起来值介于98~102之间的组合...

    问题描述:<?XML:NAMESPACE PREFIX = O /> 在有限多的不大于100的正整数中,找出尽量多个相加起来值介于98-102之间的组合. 组合的个数限制在2 和3. 比如 ...

  3. 小白知识之:画图软件中文字横横竖竖的奥秘

    好吧,我承认我是一个不会用ps的人.不管是论文的结构图还是日常工作里的示意图,我都喜欢在网上下一些类似的图片然后用PPT或者画图软件做修改和加工.但是之前发现画图的中的文字,写着写着就躺下了,额--l ...

  4. 用java画菱形_【风马一族_Java】使用java,画出任意大小的菱形

    1 public classrhombic {2 3 public static voidmain(String[] args){4 5 /** 6 * scriber()画菱形的方法,参数 9 是指 ...

  5. java画星星菱形_使用java,画出任意大小的菱形

    标签: 1 public classrhombic {2 3 public static voidmain(String[] args){4 5 /** 6 * scriber()画菱形的方法,参数 ...

  6. 计算机工程制图箭头怎么画,电脑画图软件内如何绘制向左的箭头

    电脑画图软件内如何绘制向左的箭头 腾讯视频/爱奇艺/优酷/外卖 充值4折起 当我们在使用电脑的时候,可以通过电脑自带的绘图软件来进行绘画,那么如何在画图软件内绘制一个向左的箭头呢?接下来就由小编来告诉 ...

  7. C语言密勒码的软件编码,密勒码的编码规则是什么?请画出代码序列11010010的密勒码波形?...

    相关题目与解析 CMI码的编码规则是什么?请画出代码序列11010010的CMI码波形? 数字双相码的编码规则是什么?请画出代码序列11010010的双相码波形? 简述双相码(曼彻斯特码)的编码规则并 ...

  8. 已知二叉树前序遍历是ADCEFGHB,中序遍历是CDFEGHAB,要求画出二叉树的结构或写出后序遍历

    笔试特别喜欢考这种题.先说一下思路. 首先,需要明白前序.中序.后序遍历: ①前序:根→左→右 ②中序:左→根→右 ③后序:左→右→根 仅明白这个是不行的,还需要技巧.对于标题中的问题, 我们很容易根 ...

  9. 学生用计算机如何弄心形,电脑画图软件内如何绘制心形

    电脑画图软件内如何绘制心形 随着科技的发展,电脑已经成为人们日常生活中必不可少的工具,当我们在使用电脑中的画图软件时,如果想要画一颗心形的话,应如何操作呢?接下来就由小编来告诉大家. 具体如下: 1. ...

最新文章

  1. swift实现ios类似微信输入框跟随键盘弹出的效果
  2. Maven学习 使用Nexus搭建Maven私服(转)
  3. 全文搜索引擎 Elasticsearch 简介 及其与 Python 的对接实现
  4. html页面的header,HTML5教程 | HTML5 header和footer元素
  5. 用 Go 构建一个区块链 -- Part 5: 地址
  6. Python多任务(1.多进程的概念和用法 )
  7. 清北学霸的书单居然那么有讲究?看看你比学霸少看了哪些书......
  8. 【OpenCV】OpenCV函数精讲之 -- 颜色空间缩减及LUT函数
  9. 【luogu P3627 [APIO2009]抢掠计划】 题解
  10. POJ 3259 Wormholes(bellman_ford,判断有没有负环回路)
  11. 详解RecyclerView下拉刷新与上拉更多
  12. Linux下c编程设置串口属性和读写串口操作说明总结
  13. windows上通过vnc连接虚拟机中linux系统
  14. JavaScript的DOM操作.
  15. python 如果你的年龄大于18_02Python基础
  16. linux系统pdf转图片
  17. 随机生成名字的Android页面
  18. 压缩包文件打开密码如何破解
  19. Foxmail7.0.1.86升级有风险
  20. CRACK小试牛刀:关于GALGAME银色遥远爆破记录

热门文章

  1. C语言用结构体排序(学号,姓名,成绩)
  2. Oracle row_number() partion by使用场景
  3. JAVA坦克大战改进(二)
  4. Redis学习笔记1
  5. java 字符串旋转_Java之左旋转字符串
  6. [数据库]三级模式-两级映像详解
  7. Ubuntu系统认识--推荐书本《完美应用Ubuntu》-何晓龙
  8. 「经典题」Vue获取DOM的几种方法?
  9. windows编程笔记(win32编程)以及其在游戏开发中的作用
  10. ruby on rails 中使用boot strap(先存起来,还没试过)