Single Responsibility Principle

The Single Responsibility Principle
The Single Responsibility Principle (SRP) states that 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.
Robert C. Martin's Definition
"A class should have only one reason to change." — Robert C. Martin (Uncle Bob)
This principle is one of the five SOLID principles of object-oriented design. It promotes high cohesion within modules and loose coupling between them.
Separation of Concerns
Closely related to SRP is the principle of Separation of Concerns (SoC), coined by Edsger W. Dijkstra. SoC is a design principle for separating a computer program into distinct sections, so that each section addresses a separate concern.
A concern is a set of information that affects the code. In web development, common concerns include the presentation layer, business logic layer, data access layer, and persistence layer.
Benefits
The value of separation of concerns is simplifying development and maintenance. When concerns are well-separated, individual sections can be reused, developed, and updated independently. You can improve or modify one section without knowing the details of other sections.
Implementation
Object-oriented programming languages like C#, C++, and Java separate concerns into objects. Architectural patterns like MVC or MVP separate content from presentation. Service-oriented design separates concerns into services.
Common real-world examples include separating a space into rooms, so that activity in one room does not affect people in other rooms, or keeping electrical circuits separate so that overload on one circuit doesn't affect another.