如何定义属性?

时间:2012-10-11 08:42:06

标签: java attributes

以下问题令我困惑,我不确定我的想法是否正确。这是问题

  

给出三条直线a,b& C。他们将能够形成一个   三角形,假设任何两条线的总和总是大于   第三行(即a + b> c和b + c> a和a + c

     
    

B)。使用以下代码编写Java类Triangle:

  
Attributes: length of the three sides of the triangle 
Behaviour:
  
      
  • 构造函数,用于将三边的长度设置为传入的值。构造函数应抛出InvalidValueException   当值不能形成三角形时对象。   
        
    • findArea()方法使用公式区域计算三角形对象的面积= a + b + c
    •   
  •   

问题的下一部分是创建GUI。我已经做到了。

所以上面的问题是它要求我只是简单地获取价值,但是从哪里来?是通过GUI吗?或者命令行基地?问题不是具体的,所以我可以假设只是创建准备好接受这些值的变量吗?

3 个答案:

答案 0 :(得分:1)

如果你被要求开发一个GUI我真的认为必须通过它输入值...而且Triangle类必须有3个属性:a,b和c。

答案 1 :(得分:0)

为什么不在测试类或类似的情况下暂时对其进行硬编码,例如

new Triangle(3,4,5);

在这种情况下,您有兴趣测试各种函数的代码(有效与无效),因此我会编写一个具有特定数据集的测试(或多个测试),例如。

   // expected to be ok
   new Triangle(3,4,5);

   // expected exception
   new Triangle(1,1,3);

在后一种情况下,如果没有异常,你会想要捕获异常并使用错误解救你的程序。

您可能需要查看unit test frameworks来帮助您解决此问题。

编辑:您修改后的问题现在包含Triangle方的设置者。我认为你最好只让字段读取,在构造上执行此操作并从构造函数中抛出异常。如果您需要setter,那么您必须在某个阶段调用validate()方法,否则您可能会创建一个无效的Triangle。请注意,在每次调用者调用时都无法调用验证器,因为您可能设置了多个边,而中间状态可能无效。

答案 2 :(得分:0)

  

所以上面的问题是它要求我只是简单地获取价值,但是从哪里来?

来自构造函数参数。这就是以下意思:

  

“构造函数,它将三面的长度设置为传入的值。”

例如:

    public Triangle(int a, int b, int c) {
        this.a = a; this.b = b; this.c = c;
    }

  

是通过GUI吗?或者命令行基地?

GUI(或命令行入口点)可能会从某处获取值并将它们作为构造函数参数传递。或者...... 任何代码都可以简单地实例化具有侧面硬连线值的Triangle; e.g。

    Triangle pythagorasFavourite = new Triangle(3, 4, 5);

  

这个问题并不具体,所以我可以假设只是创建准备好接受这些值的变量吗?

实际上,它是具体的:见上文。


但请注意,三角形的区域不是area = a + b + c。真正的公式是:

  

三边长度已知的三角区域

 1/4 * square-root [ P * (P-2a) * (P-2b) * (P-2c)]
     

其中P是总周长   abc是三方的长度。

参考:http://library.thinkquest.org/20991/gather/formula/data/297.html