title: Is Single Responsibility Principle a rule of OOP?
body: <p>An <a href="https://stackoverflow.com/questions/15241/does-anyone-have-any-real-world-experience-of-csla#15357">answer</a> to a Stack Overflow question stated that a particular framework violated a plain and simple OOP rule: Single Responsibility Principle (SRP).</p>
  
  <p><strong>Is the Single Responsibility Principle <em>really</em> a rule of OOP?</strong></p>
  
  <p>My understanding of the definition of Object Orientated Programming is "a paradigm where objects and their behaviour are used to create software". This includes the following techniques: Encapsulation, Polymorphism &amp; Inheritance.</p>
  
  <p>Now don't get me wrong - I believe SRP to be the key to most good OO designs, but I feel there are cases where this principle can and should be broken (just like database normalization rules). I aggressively push the benefits of SRP, and the great majority of my code follows this principle. </p>
  
  <p><em>But, is it a rule, and thus implies that it shouldn't be broken?</em></p>