2017-09-03 4 views
-3

私はOOPに一般的な質問があります。つまり、オブジェクトの状態を変更した場合、そのオブジェクトの動作が変更されますか?例えばオブジェクトの状態を変更すると動作が変わることがありますか?

public class Test{ 
    private int x; 
    private string y; 

    public Foo(int bar, string baz) 
    { 
     x = bar; 
     y = baz; 
    } 

    public void ChangeBar(int newBar) 
    { 
     x = newBar; 
    } 
} 

:私は"www"からy値を変更した場合

var obj = new Test (5, "yyy"); 

、それはobjの動作が変更されたりしていない意味ですか?

+1

'obj'は実際には動作しません。あなたの質問は理論的/文言的な質問ですか? – luk2302

+0

その例では、あなたの 'obj'は別の新しいオブジェクトを参照するだけです。 「目的行為」が実際にあなたに何を意味するのかを明示せずに、推測を続けることしかできません。 – AndrewMcCoist

答えて

1

オブジェクトの動作がその状態に依存しているかどうかによってまったく異なります。時にはそうです。それ以外ではありません。例えば、あなたのTestクラスのオブジェクトは事実上何の振る舞いも持たず、状態に依存するものはありません。他のクラスは非常に多くを行うは状態に依存する動作をしています。

0

この例では、objの動作を変更しません。 あなたはそのプロパティを変更します。 動作を変更することができるのは、機能を変更した場合のみです。 オブジェクトの動作を変更したい場合は、たとえば、ChangeBar関数でifステートメントを追加すると、ifに応じてオブジェクトが動作します。

public void ChangeBar(int newBar) 
{ 
    if (newBar < 0) 
    { 
     x = newBar; 
     \\ and do something 
    } 
    else 
    { 
     x = 0; 
     \\ and do something else 
    } 
} 

この回答がお役に立てば幸いです。

関連する問題