在Java中创建方法和测试类

在Java中创建方法和测试类,java,computer-science,class-method,Java,Computer Science,Class Method,我目前正在修订以下问题: 卷模型存储卷控制对象的数据。该卷具有级别,也可以将其置于静音状态。 (下面是在UML图中绘制的内容:) VolumeModel-类名 静音:int-属性 级别:int-属性 +…方法..-类的方法 a)写下您希望在这个类中看到的所有方法头,包括构造函数,以便它符合支持数据封装的常规标准。(不要编写方法体或文档)。 我对这个问题的回答是这样写的: public VolumeModel() public VolumeModel(boolean muted, int leve

我目前正在修订以下问题:

卷模型存储卷控制对象的数据。该卷具有级别,也可以将其置于静音状态。

(下面是在UML图中绘制的内容:)

VolumeModel-类名

静音:int-属性

级别:int-属性

+…方法..-类的方法

a)写下您希望在这个类中看到的所有方法头,包括构造函数,以便它符合支持数据封装的常规标准。(不要编写方法体或文档)。

我对这个问题的回答是这样写的:

public VolumeModel()
public VolumeModel(boolean muted, int level)
public void setLevel(int level)
public int getLevel()
public setMuted(boolean muted)
public boolean isMuted()
public void turnUp()
public void turnUp(int level)
public String toString()
public boolean equals(VolumeModel V)
由于下面的问题(与上述问题相关),我不知道这是否是该类中预期看到的所有预期方法头,包括构造函数:

b)使用第(a)部分中声明的方法,将测试程序的代码编写到:

  • 创建卷模型的实例…
  • 音量级别为1且未静音:
  • 在一个循环中,稳步增加音量至10级:
  • 然后静音音量
  • 最终输出体积模型对象的状态
到目前为止,我对上述问题的回答是:

VolumeModel vml = new VolumeModel();
vml.setLevel(1);
vml.setMuted(false);

VolumeModel volumelevel = new VolumeModel(true, 11);
while (!vml.equals(volumelevel)
{
 //to be completed  
}
上面的那段代码还没有完成,因为我正在努力,所以如果有人能给我一些建议,我将不胜感激

此外,对于我下面回答的问题a)的任何建议和反馈也会有所帮助

提前谢谢

p、 s-我无法在我的eclipse软件上尝试此代码,因为我的eclipse软件由于某种原因无法在我的笔记本电脑上运行,但是当我有时间去我的计算机实验室时,我将看看是否可以在那边的计算机上测试eclipse软件上的代码。

一些备注:

  • 您忘记声明
    setmute()的返回类型
  • 没有javadoc。虽然大多数方法都是显而易见的,但是
    turnUp(int-level)
    做什么呢?参数是新级别(在这种情况下,它的作用与
    setLevel()
    相同),还是增量?使用无参数构造函数构造对象时,对象的状态是什么
  • 如果覆盖了
    equals()
    ,则还必须覆盖
    hashCode()
    。约定是相等的对象必须具有相同的哈希代码。此外,
    equals
    方法应将
    对象
    作为参数。您可以实现
    equals(VolumeModel)
    方法,但请注意,这样您就不会重写
    Object.equals()
    方法,因此集合类永远不会调用此方法
  • turnUp
    方法,但没有
    turnUp
    是很奇怪的
  • 没有限制是很奇怪的(尽管问题中没有提出限制)
最后,您的代码片段没有执行要求的操作。它应当:

  • 创建一个唯一的
    VolumeModel
    实例,并将卷设置为1且未禁用
  • 在9次迭代的循环中调用
    turnUp()
  • 通过调用
    setmute(true)
  • 调用
    getLevel()
    ismute()
    并检查值是否分别为
    10
    true
    。 问题并不要求您实现equals并测试两个VolumeModel实例之间的相等性
一些备注:

  • 您忘记声明
    setmute()的返回类型
  • 没有javadoc。虽然大多数方法都是显而易见的,但是
    turnUp(int-level)
    做什么呢?参数是新级别(在这种情况下,它的作用与
    setLevel()
    相同),还是增量?使用无参数构造函数构造对象时,对象的状态是什么
  • 如果覆盖了
    equals()
    ,则还必须覆盖
    hashCode()
    。约定是相等的对象必须具有相同的哈希代码。此外,
    equals
    方法应将
    对象
    作为参数。您可以实现
    equals(VolumeModel)
    方法,但请注意,这样您就不会重写
    Object.equals()
    方法,因此集合类永远不会调用此方法
  • turnUp
    方法,但没有
    turnUp
    是很奇怪的
  • 没有限制是很奇怪的(尽管问题中没有提出限制)
最后,您的代码片段没有执行要求的操作。它应当:

  • 创建一个唯一的
    VolumeModel
    实例,并将卷设置为1且未禁用
  • 在9次迭代的循环中调用
    turnUp()
  • 通过调用
    setmute(true)
  • 调用
    getLevel()
    ismute()
    并检查值是否分别为
    10
    true
    。 问题并不要求您实现equals并测试两个VolumeModel实例之间的相等性

    • 您不需要创建新的VolumeModel进行测试。您也不需要equals方法

      不要做一个while循环,尝试以下方法:

      for(i=2;i<11;i++){
          vml.turnUp(); //provided that turnUp sets the volume up a level
      }
      vml.setMuted(true);
      
      返回类型为void,因为您可以简单地将一系列System.out或您喜欢的任何输出系统放入其中


      希望这有帮助。

      您不需要创建新的VolumeModel进行测试。您也不需要equals方法

      不要做一个while循环,尝试以下方法:

      for(i=2;i<11;i++){
          vml.turnUp(); //provided that turnUp sets the volume up a level
      }
      vml.setMuted(true);
      
      返回类型为void,因为您可以简单地将一系列System.out或您喜欢的任何输出系统放入其中

      希望这有帮助