个人Java作业总结

学号:117333440127

姓名:黄瑞生

题目、编写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 zuoye;
/**
 * 
 * <p>Title: Figure</p>
* <p>Description:图形基类 </p>
* <p>Company: </p> 
* @author haungruisheng
* @date 20192019年9月27日上午8:45:32
 */
public abstract class Figure implements Comparable{
		private String color;
		 boolean fill;
		public Figure(String color, boolean fill) {//构造方法
			this.color=color;
			
		}
		public String getColor() {
						return color;
		}
		public void setColor(String color) {
			this.color = color;
		}
		public static boolean isFill() {
			return true;
		}
		public void setFill(boolean fill) {
			this.fill = fill;
			
		}
	
		//抽象方法:
		public  abstract double area();
		public abstract double perimeter();
		
}

创建图形类的子类正方形类:

package zuoye;

public class Square extends Figure{
	
	public Square(String color, boolean fill,double side) {//构造方法
		super(color, fill);
		this.side=side;
		
	}
	private double side;//正方形边长
	public double area() {
		return side*side;
	};
	public  double perimeter() {
		return side*2;
		
	}
	public double getSide() {
		return side;
	}
	public void setSide(double side) {
		this.side = side;
	};
	//tostring方法
	public String toString() {
		return "正方形的边长是:"+side;
	}
	
}

创建图形类的子类正方形类:圆形类

package zuoye;

public  class Round extends Figure{
	private double radius;//圆的半径
	
	public Round(String color,boolean fill,double radius) {//构造方法
		super(color,fill);
		this.radius=radius;
	};
	public double area() {
		
		return Math.PI*radius*radius;
		
	};
	public double perimeter() {
		
		return Math.PI*2*radius;
	}
	public double getRadius() {
		return radius;
	}
	public double setRadius(double radius) {
		return this.radius = radius;
	};
	//tostring 方法
	public String toString() {
		return "圆的半径是:"+radius;
	}
	
}

创建图形类的子类正方形类:长方形类

package zuoye;

public class Rectangle extends Figure{
			public Rectangle(String color, boolean fill,double width,double height) {
			super(color, fill);
			this.width=width;
			this.height=height;
			
	}
			private double width;//长方形宽
			private double height;//长方形高
			public double area() {
				return width*height;
			};
			public double perimeter() {
				return width*2+height*2;
			}
			public double getWidth() {
				return width;
			}
			public void setWidth(double width) {
				this.width = width;
			}
			public double getHeight() {
				return height;
			}
			public void setHeight(double height) {
				this.height = height;
			};
			//tostring 方法
			public String toString() {
				return "长方形宽是:"+width+"长方形的高是:"+height;
			
			
				
			}
}

三个子类中分别有自己的属性和计算面积周长的方法

创建好三个基类的子类以后就可以创建一个画板类

package zuoye;

public class DrawingBoard {
public static void main(String[] args) {
	//圆
	Round r=new Round( "green",true ,3.0);
	System.out.println("圆:"+"\n"+"圆面积是:"+r.area()+"\n"
	+"圆周长是:"+r.perimeter()+"\n"+r+"\n"
	+"圆的颜色是:"+r.getColor()+"\n"+"是否填充:"+r.isFill());
	//正方形
	Square s=new Square("yellow", false,4.0);
	System.out.println("正方形:"+"\n"+"正方形面积是:"+s.area()+
			"\n"+"正方形的周长是:"+s.perimeter()+"\n"+s+"\n"+
			"正方形颜色是:"+s.getColor()+"\n"+"是否填充:"+s.isFill());
	//长方形
	Rectangle c=new Rectangle("red",false,10.0,5.0);
	System.out.println("长方形:"+"\n"+"长方形面积是:"+c.area()+
			"\n"+"长方形的周长是:"+c.perimeter()+"\n"+c+"\n"+
			"长方形颜色是:"+c.getColor()+"\n"+"是否填充:"+c.isFill());
}
}

最后控制台输出结果:

圆:
圆面积是:28.274333882308138
圆周长是:18.84955592153876
圆的半径是:3.0
圆的颜色是:green
是否填充:true

正方形:
正方形面积是:16.0
正方形的周长是:8.0
正方形的边长是:4.0
正方形颜色是:yellow
是否填充:true
长方形:

长方形面积是:50.0
长方形的周长是:30.0
长方形宽是:10.0长方形的高是:5.0
长方形颜色是:red
是否填充:true

总结:在抽象类图形基类中创建属性颜色和是否填充(boolean),并且有抽象方法计算面积和周长,三个子类分别有自己的属性,然后重写父类的抽象方法,在画板类传参到三个子类并且返回面积和周长在画板类进行打印

第二题:

首先创建一个图形接口类

package zuoye;
/**
 * 
* <p>Title: Comparable</p>
* <p>Description: 图形接口类</p>
* <p>Company: </p> 
* @author huangruisheng
* @date 20192019年9月27日上午9:07:56
 */
public interface Comparable {
	/**
	 * 定义两个抽象方法
	 */
	
	public abstract double area();
	public abstract double perimeter();
	
}

其次创建多个图形对象数组

package zuoye;

public class TestFigure {
	public static void main(String[] args) {
		//实例化图形对象数组
		Figure [] f=new Figure[10];
		for(int i=0;i<3;i++) {
			Round r1=new Round("red",true,2.0+i);
			f[i]=r1;
			
		}
		for(int i=3;i<7;i++) {
			Square s1=new Square ("yellow",false,3.0+i);
					f[i]=s1;
		}
		for(int i=7;i<10;i++) {
			Rectangle rr=new Rectangle("green",true,3.0+i,4.0+i);
				f[i]=rr;
		}
			Figure max=f[10];
			for(int i=0 ; i<f.length;i++) {
				if(f[i].area()>max.area()) {
					max=f[i];
				}
			}
			System.out.println(max.area());
	}
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值