title: Modify a field anytime another field is modified
body: <p>Well, the title says it, but I'll be more specific to my situation and explain my problem.
  I have the following classes:</p>
  
  <pre><code>class Attribute{
      private int score;
      private int tempScore;
      private int misc;
  
      // here I have getters and setters
      // A method
      public int Modifier(){
          return (score+tempScore-10)/2;
      }
  }
  </code></pre>
  
  <p>and</p>
  
  <pre><code>class SavingThrow{
      private int base;
      private int resistance;
      private int bonus;
      private int misc;
  
      //Getters and setters here
      //A method
      public int Total(){
          return base + resistance + bonus + misc;
      }
  }
  </code></pre>
  
  <p>Let us say that now I have a Player A with an Attribute wisdom and a SavingThrow will. Whenever the first is modified, e.g.:</p>
  
  <pre><code>A.Wisdom.Score = 12;
  </code></pre>
  
  <p>then, the second must be modified as a consequence. In this example I should make:</p>
  
  <pre><code>A.Will.Bonus = A.Wisdom.Modifier();
  </code></pre>
  
  <p><em>Any idea on how to achieve this</em>?  </p>
  
  <p>I thought of the following solution but it doesn't satisfy me for the reason I'm going to explain.<br>
  I won't define getters, so external access to Wisdom can be done only through a pre-defined public method, say SetWisdom(int score), and in that method I update Will. Though, the problem with this is, that if I have to modify tempScore or misc instead, I have to make another method to do it. <strong>It seems pretty unefficient</strong>, expecially if I add more fields to Attribute class.<br>
  Else, I could use a SetWisdom (Attribute wisdom) method which replaces the whole attribute with a new object, in which I have to copy ALL the unmodified fields and replace the one I need. <strong>This seems a bit clumsy and inelegant</strong>.
  Which solution would you choose and, more importantly, <em>do you have better ideas on how to handle this</em>?</p>