2019.09.27

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

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

抽象类(图形类)

package iom.hqr;

/** 抽象类(图形类)
 * @author hqr
 * 2019.09.26
 *
 */
public abstract class Figure implements Comparable {
	//面积方法
	public abstract double area();
	//周长方法
	public abstract double perimter();
	//画笔颜色属性
	public  String color;
	//填充属性
	public  boolean padding;
	
 
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public boolean isPadding() {
		return padding;
	}
	public void setPadding(boolean padding) {
		this.padding = padding;
	}
	
	@Override //重写接口方法 
	public int compareTo(Figure swp) {
		// TODO 自动生成的方法存根
		if(this.area()>swp.area()){
			return 1;
			
		}else if (this.area()<swp.area()) {
			return -1;
			}else {
				return 0;
			}
	}	
}

正方形类

package iom.hqr;

/** 正方形
 * @author hqr
 *
 */
public class Square extends Figure {
  //边长
  public  double  log;
  //构造方法
	public Square(double log) {
	super();
	this.log = log;
}

	public double area() {
		// TODO 自动生成的方法存根
		return log*log;
	}

	@Override
	public double perimter() {
		// TODO 自动生成的方法存根
		return 4*log;
	}

	@Override
	public String toString() {
		return "Square [log=" + log + "]";
	}

	@Override//重写接口方法 
	public int compareTo(Figure swp) {
		// TODO 自动生成的方法存根
		return 0;
	}
	
   
}

长方形类

package iom.hqr;

/** 长方形类
 * @author hqr
 *
 */
public  class Rectangle extends Figure {
	//长
	public double  length;
	//高
	public double  hegith;
  //构造方法
	public Rectangle(double length, double hegith) {
		super();
		this.length = length;
		this.hegith = hegith;
	}
	@Override
	public double area() {
		// TODO 自动生成的方法存根
		return length*hegith;	
	}

	@Override
	public double perimter() {
		// TODO 自动生成的方法存根
		return (length+hegith)*2;
	}	
}

圆形类

package iom.hqr;

/** 圆形
 * @author hqr
 *
 */
public class Circular extends Figure{
	//圆半径
	public  double r;
   //构造方法
	public Circular(double r) {
	super();
	this.r = r;
}
	
	@Override
	public double area() {
		// TODO 自动生成的方法存根
		return 3.14*(r*r);
	}
	@Override
	public double perimter() {
		// TODO 自动生成的方法存根
		return 2*(3.14*r);
	}

	@Override
	public String toString() {
		return "Circular [r=" + r + "]";
	}
	
	@Override//重写接口方法 
	public int compareTo(Figure swp) {
		// TODO 自动生成的方法存根
		return 0;
	}
}

接口

package iom.hqr;

/**接口
 * @author hqr
 *2019.09.27
 */
 //定义规则
public interface Comparable {
	public  int  compareTo(Figure swp);

}

测试类

package iom.hqr;

import java.awt.geom.Area;

/** 测试类
 * @author hqr
 *
 */
public class Text {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
      Rectangle a = new Rectangle(10.0,5.0);
      Circular  a1 = new Circular(3.0);
      Square   a2 = new Square(4.0);
      a.setColor("红色");
      a1.setColor("绿色");
      a2.setColor("黄色");
           System.out.println("长方形:"+a.getColor()+"  "+a.isPadding()+"  "+"面积:"+a.area()+"周长:"+a.perimter());
           System.out.println("圆:"+a1.getColor()+"  "+a1.isPadding()+"  "+"面积:"+a1.area()+"周长:"+a1.perimter());
           System.out.println("正方形:"+a2.getColor()+"  "+a1.isPadding()+"  "+"面积:"+a1.area()+"周长:"+a1.perimter());
       
           
          Figure[] figures= { a,a1, a2};
      Figure fi=figures[0];
      for (int i = 0; i < figures.length; i++) {
       	if (fi.compareTo(figures[i])==-1) {
       			fi=figures[i];
       		}
       		
       	}
       	System.out.println("\n面积最大的是:"+fi.area());
     
	}

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值