面向对象程序设计基础(二)矩形

命名App1.java
要求:
(1)按照题目所给变量名称、类型和方法名称进行编程,禁止修改;
(2)本题中所有内容写在源文件App1.java中。
(3)编程环境可选,Eclipse和JDK均可。
1、编写一个矩形类Rectangle,包含:
成员变量:
两个属性:矩形的宽width;矩形的高length。
两个构造器方法:
(1)一个带有两个参数的构造器方法,用于将width和length属性初化;
(2)一个不带参数的构造器,调用构造方法(1)将矩形初始化为宽和高都为10。
普通方法:
(1)设置getter和setter方法用于获取和设置类中length和width变量的值, set方法应该验证length和width都是大于0.0小于20.0的浮点数, 构造方法(一)调用setWidth()和setLength();
(2)求矩形面积的方法area()任何矩形的面积是它的长度乘以它的宽度
(3)求矩形周长的方法perimeter() 矩形的周长是(宽+高)x2
(4)包含一个判断矩形是否为正方形的谓词方法isSquare()
(5)void compare(Rectangle),用于比较两个对象是否相等。

2、通过main方法测试
(1)创建两个Rectangle对象rect1和rect2判断这两个对象是否相等。
rect1的 length和width 都为10。
Rect2的 length等于5和width 等于10。
(2)分别调用area()和perimeter ()输出两个对象。
(3)调用 isSquare()方法该方法检查那个矩形是否为方形
代码:

package 大二;
/**
 * @author Hasee
 *
 */
class Rectangle{
	private double width;
	private double length;
//	构造方法一
	public Rectangle(double width, double length) {
		this.width = width;
		this.length = length;
	}
//	构造方法二
	public Rectangle() {
		this(10,10);
	}
	//普通方法
	//1.1宽
	public double  getWidth() {
		return width;
	}
	public void setWidth(int width) {
		if (width>=20.0||width<=0.0) {
			throw new IllegalArgumentException("width的值应该大于0.0小于20.0");
		}
		this.width = width;
	}
	//1.2长
	public double  getLength() {
		return length;
	}
	public void setLength(int length) {
		if (length>20.0||length<0.0) {
			throw new IllegalArgumentException("length的值应该大于0.0小于20.0");
		}
		this.length = length;
	}
	//2.矩形的面积
	public double area() {
		return width*length;
	}
	//3.矩形的周长
	public double perimeter() {
		return 2*(width+length);
	}
	//4.判断矩形是否为正方形
	public void isSquare() {
		if (this.length==this.width)System.out.println("是正方形");
		else System.out.println("不是正方形");
	}	
	//5.比较两个对象是否相等
	public void campare(Rectangle rect) {
		if (this.width==rect.width&&this.length==rect.length)System.out.println("两个对象相等");
			else System.out.println("两个对象不相等");
	}
	/*
	//重写哈希地址
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		long temp;
		temp = Double.doubleToLongBits(length);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		temp = Double.doubleToLongBits(width);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		return result;
	}
	//重写对象地址,使其相等
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Rectangle other = (Rectangle) obj;
		if (Double.doubleToLongBits(length) != Double.doubleToLongBits(other.length))
			return false;
		if (Double.doubleToLongBits(width) != Double.doubleToLongBits(other.width))
			return false;
		return true;
	}
	*/
	//将地址转化成字符串
	@Override
	public String toString() {
		return "App2 [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
				+ "]";
	}
}
public class App1 {
	public static void main(String[] args) {
		Rectangle rect1 = new Rectangle(10,10);
		Rectangle rect2 = new Rectangle(10,5);
		System.out.print("rect1的面积为:"+rect1.area()+"   ,周长为:"+rect1.perimeter()+"   rect1");
		rect1.isSquare();
		System.out.print("rect2的面积为:"+rect2.area()+"     ,周长为:"+rect2.perimeter()+"   rect2");
		rect2.isSquare();
		rect1.campare(rect2);
	}
}

运行结果如下:
面向对象程序设计基础(二)矩形

上一篇:QML基础类型之georectangle


下一篇:POJ 2559 Largest Rectangle in a Histogram