三角类实现

时间:2010-10-19 10:42:42

标签: java oop

有一个任务是用这样的接口实现一些三角形类

public interface Triangle  {
    void moveApex(Point from, Point to);
    List<Point> getApexes();
    void rotate(double angle);
    void setLocation(Point p);
    Point getLocation();
    void setSize(Dimension d);
    Dimension getSize();
}

其中Point和Dimension是一些整数对。你会用什么方式实现它?你会用Apexes创建一些字段,或者你将使用2个角度和一个基线或smt操作吗? 感谢。

2 个答案:

答案 0 :(得分:2)

点数可以 - 如您所述 - 表示为一对点。我们将这样一对称为二维向量。矢量可以被解释为从原点(坐标系)到点的箭头,或者只是从任何指示方向或运动的箭头开始。即向量是单个点和运动的表示。

因此,您可以使用向量定义三角形。矢量可以通过称为矩阵的2x2维数字数组进行转换。在这些矩阵的帮助下,可以很好地表达任意变换。

以下是一些可以帮助您并提供更详细信息的链接。

向量:http://en.wikipedia.org/wiki/Euclidean_vector

三角概述:http://en.wikipedia.org/wiki/Triangle

矩阵概述:http://en.wikipedia.org/wiki/Matrix_multiplication

通过矩阵旋转:http://en.wikipedia.org/wiki/Rotation_matrix

  • setLocation需要向量移动(即向量加法)
  • setSize可能需要向量乘法
  • rotate实施矩阵轮换

所以请阅读上面的链接,然后将数学转换为Java。数学本身并不复杂,所以应该可以毫不费力地这样做。

当然,据说有很多实现。

答案 1 :(得分:2)

您的interface无效。实际上,您有两个名为getLocation()的方法可以返回不同的对象。也许你必须选择不同的名字,例如:

Point getLocationAsPoint();
Dimension getLocationAsDimension();

现在,如果您使用Eclipse,您只需创建一个新类,指示此类实现Triangle接口,它将创建以下框架:

public class MyTriangle implements Triangle {

    @Override
    public List<Point> getApexes() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void moveApex(Point from, Point to) {
        // TODO Auto-generated method stub
    }

    @Override
    public void rotate(double angle) {
        // TODO Auto-generated method stub
    }

    @Override
    public void setLocation(Point p) {
        // TODO Auto-generated method stub
    }

    @Override
    public void setSize(Dimension d) {
        // TODO Auto-generated method stub
    }

    @Override
    public Dimension getLocationAsDimension() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Point getLocationAsPoint() {
        // TODO Auto-generated method stub
        return null;
    }

}

然后,只需编写每个方法的代码。我强烈建议您选择TDD以正确完成任务。

Eclipse可以创建一个新的JUnit测试类,它将作为您的起点:创建一个新的JUnit测试用例,并在类创建向导中的测试中的选项中选择MyTriangle