老妹的Java作业,有没有大佬帮忙看一下

查看 77|回复 6
作者:曦丶杰灬   
1. 创建一个Shape父类,
a) 该类有一个Point的类型的私有属性center,表示shape的中心点坐标
b) 二个成员方法:double getArea()获取图形的面积,默认返回值为0,double getPerimeter() 获取图形的周长,默认返回值为0
2. 将Circle类改为继承自Shape类,删除原有的圆心属性, Shape类的center属性作为圆心,在此基础上修改原有的求两个圆的关系的方法,使其能够正常执行。
a) 重写Shape的getArea和getPerimer方法,以计算圆的周长和面积
b) 重写圆的toString方法,使得该方法能够显示圆心坐标和圆的半径
c) 重写圆的equals方法,当两个圆的圆心坐标相同,并且半径相同就认为两个圆相等
d) 重写hashCode方法,确保当equals方法为true时,hashCode值相等
e) 给每个圆定义编号属性,表明该圆是生成的第几个
f) 定义一个属性MIN_RADIUS,表示半径的最小值0.5(不可修改),当给半径赋值时,如果值小于该最小值,则将半径设为该最小值。
3. 定义一个长方形Rectangle类,该类继承自Shape类,
a) 该类有两个私有属性:width(宽),heighth(高)
b) 创建一个无参的构造方法,该方法创建一个中心在原点,宽高都为1的长方形
c) 创建一个有参的构造方法,该方法创建一个指定宽高和中心点的长方形
d) 重写父类的getArea和getPerimeter方法,计算长方形的周长和面积
e) 重写toString方法,使得该方法能显示长方形的宽、高和中心点坐标
4. 定义一个三角形Triangle类,该类继承自Shape类,
a) 该类有三个私有属性:a,b,c表示三角形的三个边
b) 定义一个无参构造方法,该方法创建一个三角形,中心点在原点,a,b,c的值都为1
c) 定义一个有参的构造方法,该方法创建一个指定边长和中心点的三角形
d) 重写父类的getArea和getPerimeter方法,计算三角形的周长和面积
e) 重写toString方法,使得该方法能显示三角形的三边和中心点坐标
5. 定义一个测试类TestShape,在main方法中定义一个Shape 变量shape,分别创建圆、长方形和三角形对象赋值给shape变量,赋值后通过调用shape的getArea,getPerimeter和toString方法,验证是否能正确计算不同图形的面积和周长。

方法, 角形

friendnabs   

一个作业才值25币?
www478347671   

Shape 父类:
[Java] 纯文本查看 复制代码public class Shape {
    protected String color;
    public Shape(String color) {
        this.color = color;
    }
    public double getArea() {
        return 0.0;
    }
    public double getPerimeter() {
        return 0.0;
    }
    public String toString() {
        return "Shape{" +
                "color='" + color + '\'' +
                '}';
    }
}
Circle 修改为继承自 Shape:
[Java] 纯文本查看 复制代码public class Circle extends Shape {
    private double radius;
    public Circle(String color, double radius) {
        super(color);
        this.radius = Math.max(radius, MIN_RADIUS);
    }
    @Override
    public double getArea() {
        return Math.PI * radius * radius;
    }
    @Override
    public double getPerimeter() {
        return 2 * Math.PI * radius;
    }
    @Override
    public String toString() {
        return "Circle{" +
                "center=" + center +
                ", radius=" + radius +
                ", color='" + color + '\'' +
                '}';
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Circle)) return false;
        Circle circle = (Circle) o;
        return Double.compare(circle.radius, radius) == 0 &&
                Objects.equals(center, circle.center);
    }
    @Override
    public int hashCode() {
        return Objects.hash(center, radius);
    }
}
Rectangle 类:
[Java] 纯文本查看 复制代码public class Rectangle extends Shape {
    private double width;
    private double height;
    public Rectangle(String color, double width, double height) {
        super(color);
        this.width = width;
        this.height = height;
    }
    @Override
    public double getArea() {
        return width * height;
    }
    @Override
    public double getPerimeter() {
        return 2 * (width + height);
    }
    @Override
    public String toString() {
        return "Rectangle{" +
                "center=" + center +
                ", width=" + width +
                ", height=" + height +
                ", color='" + color + '\'' +
                '}';
    }
}
Triangle 类:
[Java] 纯文本查看 复制代码public class Triangle extends Shape {
    private double a;
    private double b;
    private double c;
    public Triangle(String color, double a, double b, double c) {
        super(color);
        this.a = a;
        this.b = b;
        this.c = c;
    }
    @Override
    public double getArea() {
        double p = (a + b + c) / 2;
        return Math.sqrt(p * (p - a) * (p - b) * (p - c));
    }
    @Override
    public double getPerimeter() {
        return a + b + c;
    }
    @Override
    public String toString() {
        return "Triangle{" +
                "center=" + center +
                ", a=" + a +
                ", b=" + b +
                ", c=" + c +
                ", color='" + color + '\'' +
                '}';
    }
}
PEKING1   

[Java] 纯文本查看 复制代码import java.util.Objects;
public abstract class Shape {
    private Point center;
    public Shape(Point center) {
        this.center = center;
    }
    public Point getCenter() {
        return center;
    }
    public void setCenter(Point center) {
        this.center = center;
    }
    public abstract double getArea();
    public abstract double getPerimeter();
}
class Circle extends Shape {
    private static int count = 0;
    private final int id;
    private double radius;
    public static final double MIN_RADIUS = 0.5;
    public Circle(Point center, double radius) {
        super(center);
        this.radius = radius
www478347671   

[Java] 纯文本查看 复制代码public class TestShape {
    public static void main(String[] args) {
        Shape shape = new Shape("red");
        Circle circle = new Circle("blue", 1.0);
        Rectangle rectangle = new Rectangle("yellow", 2.0, 3.0);
        Triangle triangle = new Triangle("green", 3.0, 4.0, 5.0);
        printShapeInfo(shape);
        printShapeInfo(circle);
        printShapeInfo(rectangle);
        printShapeInfo(triangle);
    }
    public static void printShapeInfo(Shape shape) {
        System.out.println(shape.toString());
        System.out.println("  Area: " + shape.getArea());
        System.out.println("  Perimeter: " + shape.getPerimeter());
    }
}
曦丶杰灬
OP
  


www478347671 发表于 2023-5-25 11:26
Shape 父类:
[mw_shl_code=java,true]public class Shape {
    protected String color;

感谢大佬!我发给我妹看看, ;主要我也没学过Java
曦丶杰灬
OP
  


friendnabs 发表于 2023-5-25 11:11
一个作业才值25币?

我不知道啊,直接点发布了,我妹的作业问我的,问题是我也没学过java...
您需要登录后才可以回帖 登录 | 立即注册

返回顶部