Is Single Responsibility Principle a rule of OOP? | An [answer](https://stackoverflow.com/questions/15241/does-anyone-have-any-real-world-experience-of-csla#15357) to a Stack Overflow question stated that a particular framework violated a plain and simple OOP rule: Single Responsibility Principle (SRP).


**Is the Single Responsibility Principle *really* a rule of OOP?**


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 & Inheritance.


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. 


*But, is it a rule, and thus implies that it shouldn't be broken?*