题目类别: 实验
关键字: 对象、类、封装、构造方法、UML类图
内容要求:
第1步,编写一个名为Rectangle的类表示矩形,类的编写请按照下图所示的类图。本题目假设所有的矩形对象的颜色是相同的,因此颜色使用静态成员。类放在shape包中。

说明,在类图中,数据域和方法前面的符号:-表示private;+表示public。
第2步,编写一个名为Utility的类,放在shape包中。其中按如下要求定义如下3个static方法:
(1) public static int compare(Rectangle rect1, Rectangle rect2)
功能:
如果rect1的面积比rect2的面积大,返回值为1
如果rect1的面积比rect2的面积小,返回值为-1
如果rect1的面积与rect2的面积相同,返回值为0
(2) public static void sort(Rectangle[] rectangles)
功能:
按照矩形的面积从大到小,对数组rectangles进行排序。
(3) public static void output(Rectangle[] rectangles)
功能:
按下标顺序依次输出数组rectangles中的所有矩形。
每行输出一个矩形,矩形的输出格式是:[宽, 高] – 面积,均保留2位小数。
第3步,编写一个名为Main的主类,放在main包中。在main方法中实现如下功能:
(1) 创建一个由10个矩形对象组成的数组,每个矩形的大小自行确定,颜色为“RED”。
(2) 输出这10个矩形;
(3) 对这10个矩形对象按面积进行降序;
(4) 输出排序之后10个矩形。
备注
打包为可以执行的JAR文档,其中要包含源程序文件。
实现代码:
Rectangle类
package shape;
/**
* @author zg
*/
public class Rectangle {
/**
* 矩形的宽度
*/
private double width;
/**
* 矩形的高度
*/
private double height;
/**
* 矩形的颜色,颜色使用静态成员
*/
private static String color="BLACK";
/**
* 无参构造
*/
public Rectangle() {
width=1;
height=1;
}
/**
* 有参构造
* @param width 矩形的宽度
* @param height 矩形的高度
*/
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
/**
*
* 访问器和修改器
*/
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;
}
public String getColor() {
return color;
}
public void setColor(String color) {
Rectangle.color=color;
}
/**
*
* @return 矩形的面积
*/
public double getArea(){
return height*width;
}
/**
*
* @return 矩形的周长
*/
public double getPerimeter(){
return 2*(height+width);
}
}
Utility类:
package shape;
import java.util.Arrays;
/**
* @author zg
*/
public class Utility {
/**
*
* @param rect1 矩形对象
* @param rect2 矩形对象
* @return 如果rect1的面积比rect2的面积大,返回值为1
* 如果rect1的面积比rect2的面积小,返回值为-1
* 如果rect1的面积与rect2的面积相同,返回值为0
*/
public static int compare(Rectangle rect1, Rectangle rect2){
if(rect1.getArea()>rect2.getArea()){
return 1;
}
if(rect1.getArea()==rect2.getArea()) {
return 0;
}
return -1;
}
/**
*
* @param rectangles 矩形对象数组
* 按照矩形的面积从大到小,对数组rectangles进行排序
*/
public static void sort(Rectangle[] rectangles){
Arrays.sort(rectangles, (o1, o2) -> Double.compare(o2.getArea(),o1.getArea()));
}
/**
*
* @param rectangles 矩形对象数组
* 按下标顺序依次输出数组rectangles中的所有矩形
* 每行输出一个矩形,矩形的输出格式是:[宽, 高] – 面积,均保留2位小数
*
*/
public static void output(Rectangle[] rectangles){
for (Rectangle rectangle : rectangles) {
System.out.printf("[%.2f,%.2f] - %.2f",rectangle.getWidth(),rectangle.getHeight(),
rectangle.getArea());
System.out.println();
}
}
}
Main类:
package main;
import shape.Rectangle;
import shape.Utility;
import java.util.Random;
/**
* @author zg
*/
public class Main {
public static void main(String[] args) {
Random random=new Random();
Rectangle[] rectangles=new Rectangle[10];
int tenRec = 10;
// 创建一个由10个矩形对象组成的数组,每个矩形的大小自行确定,颜色为“RED”
for(int i = 0; i< tenRec; i++){
// 随机生成宽和高(1~101)
rectangles[i]=new Rectangle(random.nextInt(100)+1,random.nextInt(100)+1);
//颜色为“RED”。
rectangles[i].setColor("RED");
}
//输出这10个矩形
System.out.println("排序前,10个矩形的宽、高和面积:");
Utility.output(rectangles);
System.out.println();
//对这10个矩形对象按面积进行降序
Utility.sort(rectangles);
//输出排序之后10个矩形
System.out.println("排序后,10个矩形的宽、高和面积:");
Utility.output(rectangles);
}
}
运行main方法的输出(随机,作为效果展示):

本文详细介绍了如何使用Java编程实现Rectangle类来表示矩形,并创建Utility类提供面积比较、排序和输出功能。通过实例展示了如何创建矩形数组并按面积降序操作,最终生成可执行的JAR文件。
4723

被折叠的 条评论
为什么被折叠?



