簡體   English   中英

需要增變方法我該怎么做

[英]Need mutator methods how do I do them

我正在做一個UML,但我不確定如何執行這些mutator方法:

+turnOn(): void       //sets on to true
+turnOff(): void      //sets on to false
+channelUp(): void    //increases channel by 1 if on, rolls to 1 after maximum
+channelDown(): void  //decreases channel by 1 if on, rolls to maximum after 1
+volumeUp(): void     //increases the volume by 1 if on and less than maximum
+volumeDown(): void   //decreases volume by 1 if on and greater than 0
+toString( ): String  //returns the current state(instance variable values)

我現在的代碼:(請注意mutator部分不正確)

public class TV {
    private int volume;
    private int channel;
    private boolean on;
    private int maxVolume;
    private int maxChannel;

    TV() {
        volume = 1;
        channel = 1;
        on = false;
        maxVolume = 1;
        maxChannel = 1;
    }
    public int getChannel() {
        return channel;
    }

    public int getVolume() {
        return volume;
    }

    public boolean isOn() {
        return on;
    }

    public int getMaxChannel() {
        return maxChannel;
    }

    public int getMaxVolume() {
        return maxVolume;
    }
    public void setChannel(int i) {
        if (isOn() && i >= 1 && i <= maxChannel) channel = i;
    }

    public void setVolume(int i) {

        if (isOn() && i >= 0 && i <= maxVolume) volume = i;
    }

    public void setMaxChannel(int i) {
        maxChannel = i;
    }

    public void setMaxVolume(int i) {
        maxVolume = i;
    }

    // + turnOn() * * This is where the mutator methods begin I need help here * *

    // if (channel == maxChannel) channel = 1;
    // else channel++;

    //if (channel == 1) channel = max;
    //else channel--;

    // if (volume == maxVolume) volume = 1;
    // else channel++;
    //if (volume == 1) volume = max;
    // else channel--;

    public string toString() {
        return "channel: " + channel + "\nvolume: " + volume +
            "\non: " + on + "\nmax Channel: " + maxChannel +
            "\nmax Volume: " + maxVolume;
    }
}

Mutator通常與“ setter”具有相同的含義

因此,在您的上述代碼中,“ getter”將是:

public int getMaxChannel() {
  return maxChannel;
}

而“ mutator”或“ setter”將是:

public void setMaxChannel(int maxChannel) {
  this.maxChannel = maxChannel;
}

我們將setter和mutator互換使用。

mutator方法用於設置私有字段的值。 它遵循一種命名方案,在方法名稱的開頭加上單詞“ set”。 這些方法沒有返回類型,並且接受與其對應的專用字段具有相同數據類型的參數。 然后,該參數用於設置該私有字段的值。

以下是一些更改器或設置器的示例:

public void setMaxChannel(int i) {
        maxChannel = i;
    }

public void setChannel(int c) {
        channel=c;
    }

樣本方法:

public void turnOn() {
   this.on = true;
}

public void channelUp() {
   if (on) {
      if (channel == maxChannel) {
         channel = 1;
      }
      else {
         channel++;
      }
   }
}

public void volumeDown() {
   if (on && volume > 0) {
      volume--;
   }
}

其他方法遵循相同的邏輯。

Java中的字符串是對象,因此您的toString方法簽名應讀取public String toString()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM