title: Should all public methods correspond to business logic?
body: <p>Should all public methods correspond to business logic?</p>
  
  <ul>
  <li>if <strong>yes</strong>, how to deal with situation in which two objects need to communicate at lower design layer, and thus need some non-business methods to be public? (or is this antipattern?)</li>
  <li>if <strong>no</strong>, how to clearly distinguish between public and business public methods?</li>
  </ul>
  
  <p>These are the options I am aware of:</p>
  
  <ul>
  <li>create business logic interfaces (as Attila and ArjunShankar suggest)</li>
  <li><code>#define BUSINESS</code> (in C++) and then use as <code>BUSINESS void myMethod()</code>- not sure if it is good idea</li>
  </ul>
  
  <p>Any other possibility?</p>