2013-10-15 67 views
1

我做了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) 

我的代碼現在:(請介意突變的部分是不正確的)

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; 
    } 
} 
+0

Trigonometreh,如果其中一個答案是正確的,請不要忘記接受它,以便stackoverflow社區可以從我們的知識中受益。 –

回答

0

樣品方法:

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()

+0

好吧謝謝!你如何做0積分的 – Trigonometreh

+0

完成(幷包括'on'規則),但請儘量做你的功課,否則你不會學習。 –

2

賦值函數通常意味着同樣的事情「二傳手」

因此,在你上面的代碼中,「吸」是:

public int getMaxChannel() { 
    return maxChannel; 
} 

和 '突變' 或 '二傳手' 將是:

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

哦好吧,我必須從UML TestTV.java中引用這些,我有,我需要添加什麼屏幕截圖我很無能如何這樣做:http://gyazo.com/817dc6972e03251d7f437d754ef6c6b2 – Trigonometreh

0

我們使用的setter和突變基因的互換。

增變器方法用於設置專用字段的值。它遵循 一個命名方案,在名稱的前面加上單詞「set」到方法 的開頭。這些方法沒有返回類型,並接受與其對應專用字段具有相同數據類型的參數 。 參數然後用於設置該專用字段的值。

下面是存取器或設置器的一些例子:

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

public void setChannel(int c) { 
     channel=c; 
    } 
相關問題