I am struggling to understand how the Single Responsibility Principle can me made to work with OOP.
If we are to follow the principle to a tee, then are we not left with many classes, many of which may just have one method each?
If we don't follow the principle exactly, then what is the point in the principle?
A class shall handle one topic, that's its single responsibility. A class Car
could contain methods like startEngine()
or attributes like weight
:
class Car
{
int weight;
void startEngine();
void stopEngine();
}
Of course you can break up this class more. For example by defining a class for the engine:
class Engine
{
start();
stop();
}
class Car
{
Engine engine;
int weight;
}
But you shall not define seperate classes for starting and stopping the engine like:
class EngineStop
{
stop();
}
class EngineStart
{
start();
}
class Car
{
EngineStart engineStart;
EngineStop engineStop;
int weight;
}
The principle says to break up classes as reasonable as possible to achieve abstractness. Abstracting too deep violates this principle.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With