Single responsibility principle

Principle

A class should have one, and only one, reason to change.

Every module or class should have responsibility over a single part of the functionality provided by the software, and that responsibility should be entirely encapsulated by the class.

Links
Books