【问题标题】:Implementing a Shapes application using the following criteria - small project使用以下标准实现 Shapes 应用程序 - 小项目
【发布时间】:2013-11-08 13:15:18
【问题描述】:

创建一个具有 area() 方法的 Shape 接口,该方法将形状的面积作为双精度值返回。创建实现 Shape 接口的类 Circle 和 Rectangle。这些类具有反映其尺寸的属性(圆的半径,矩形的高度和宽度),这些属性由它们的构造函数设置。

使用 setColour(Color c)、setPosition(int x, int y) 和 draw(Graphics g) 方法创建一个 Drawable 接口。使用分别扩展 Circle 和 Rectangle 并实现 Drawable 接口的适当构造函数创建 DrawableCircle 和 DrawableRectangle 类。

创建一个 ShapesDriver 类,它扩展 Frame 并在其中包含 main 和 paint(Graphics g) 方法。在 ShapesDriver 中创建一个 Drawable 类型的 ArrayList。将一个 DrawableCircle 和一个 DrawableRectangle 放入此数组列表中,您已在其中设置了尺寸、位置和颜色。在paint方法中遍历ArrayList并为每个形状调用draw方法。

这是我必须要去的地方,但我似乎无法让可绘制类工作?

包装形状;

public interface Shape
{
    public double area();
}

包装形状;

public abstract class Circle implements Shape
{
    private double radius;

    Circle(double radius)
    {
        this.radius = radius;
    }

    public double area()
    {
        return radius;
    }

}

包装形状;

public abstract class Rectangle implements Shape
{
    public double height, width;

    Rectangle(double Height, double Width)
    {
        this.height = Height;
        this.width = Width;
    }

    public double area()
    {
        return width * height;
    }
}

包装形状;

import java.awt.*;

public interface Drawable
{ 
    public void setColour(Color c);
    public void setPosition(double x, double y);
    public void draw(Graphics g);
}

包装形状;

import java.awt.Color;
import java.awt.Graphics;

public class DrawableCircle extends Circle implements Drawable
{
    public DrawableCircle(double radius)
    {
        super(radius);
    }

    @Override
    public void setColour(Color c)
    {
        c = Color.ORANGE;
    }

    @Override
    public void setPosition(int x, int y)
    {
        x = 100;
        y = 150;
    }

    @Override
    public void draw(Graphics g)
    {
        //g.drawOval(x, y, width, height);
    }

}

包装形状;

import java.awt.Color;
import java.awt.Graphics;

public class DrawableRectangle extends Rectangle implements Drawable
{
    private double x, y;

    public DrawableRectangle(double height, double width)
    {
        super(height, width);
    }

    @Override
    public void setColour(Color c)
    {
        this.setColour(c);
    }

    @Override
    public void setPosition(double x, double y)
    {
        this.x = x;
        this.y = y;
    }

    @Override
    public void draw(Graphics g)
    {
        g.drawRect(x, y, width, height);
    }

}

【问题讨论】:

  • 整件事情怎么做?或者更具体地说是可绘制界面
  • 看我的回答。那应该让你开始。工作。如果你有问题,回来寻求帮助。表明你已经尝试过了。

标签: java arraylist drawable


【解决方案1】:

这应该让你开始

public interface Shape {
    public double area(); 
}

public class Circle implements Shape{
    // constructors
    // radius
    // implement area();
}

public class Rectangle implements Shape {
    // constructors
    // height, width
    // implement area();
}

public interface Drawable {
    public void setColor(Color c);
    public void setPoistion(int x, int y);
    public void draw(Graphics g);
}

public class DrawableCirlce extends Circle implements Drawable {
    // constructors
    // implement setColor();
    // implement setPosition();
    // implement draw();
}

public class DrawableRectangle extends Rectangle implements Drawable {
    // constructors
    // implement setColor();
    // implement setPosition();
    // implement draw();
}

【讨论】:

  • 上面的代码我已经实现了,但是drawableRectangle类的draw部分有错误?
  • 错误是否表明您需要初始化您的值?如果是,您应该使用 0 值初始化 x 和 y。我会用一些虚拟值初始化我的所有类成员变量。
  • 您应该将 x 和 y 声明为 int。位置是整数。他们不使用双精度值
  • 同样在你的圈子中,area() 不 = 半径。面积 = r * r * pi。
  • 在您的可绘制类中,您应该将 Color c 以及 x 和 y 声明为类成员。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
相关资源
最近更新 更多