0

私は現在、改訂として次の質問に取り組んでいます。

VolumeModel は、ボリューム コントロール オブジェクトのデータを格納します。音量にはレベルがあり、ミュート状態にすることもできます。

(以下はUML図で描かれたものです:)

VolumeModel -クラス名

muted: int -属性

level: int -属性

+..methods.. -クラスのメソッド

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) の回答に対する提案やフィードバックも役立ちます。

前もって感謝します。

ps - Eclipse ソフトウェアが何らかの理由でラップトップで動作しないため、このコードを Eclipse ソフトウェアで試すことができません。あちらのコンピューター上の日食ソフトウェア。

4

2 に答える 2

2

いくつかのコメント:

  • の戻り値の型を宣言するのを忘れましたsetMuted()
  • javadoc はありません。ほとんどのメソッドは明らかturnUp(int level)ですが、たとえば、何を行うのでしょうか? 引数は新しいレベルですか (この場合は と同じことを行いますsetLevel())、それともインクリメントですか? 引数なしのコンストラクターを使用して構築されたときのオブジェクトの状態は何ですか?
  • オーバーライドされている場合equals()は、オーバーライドされているhashCode()必要があります。契約は、等しいオブジェクトは同じ hashCode を持たなければならないということです。さらに、equalsメソッドはObjectas 引数を取る必要があります。メソッドを実装することequals(VolumeModel)はできますが、メソッドをオーバーライドしないことに注意してくださいObject.equals()。したがって、このメソッドはコレクション クラスによって呼び出されることはありません。
  • turnUpメソッドがあるのは奇妙ですが、ありませんturnDown
  • 制限がないのは奇妙です(質問では尋ねられていませんが)。

最後に、あなたのスニペットは求められたことを実行しません。そうすべき:

  • VolumeModelボリュームを 1 に設定し、ミュートしないで、一意のインスタンスを作成します
  • turnUp()9回の繰り返しのループで呼び出す
  • 呼び出してミュートするsetMuted(true)
  • getLevel()andを呼び出しisMuted()て、値がそれぞれ10andであることを確認しtrueます。この質問では、equals を実装し、2 つの VolumeModel インスタンス間の同等性をテストするよう求めていません。
于 2012-04-13T15:05:37.313 に答える
1

テストする新しい VolumeModel を作成する必要はありません。equals メソッドも必要ありません。

while サイクルを実行する代わりに、次のことを試してください。

for(i=2;i<11;i++){
    vml.turnUp(); //provided that turnUp sets the volume up a level
}
vml.setMuted(true);

この時点で、オブジェクトの状態を出力する方法を指定する必要があります。toString を再実装しようとする代わりに、この方法で独自の outputState() を作成できます。

public void outputState(VolumeModel v)

一連の System.out または好みの出力システムを単純に配置できるため、戻り値の型は void です。

お役に立てれば。

于 2012-04-13T15:17:40.803 に答える