затем что мы можем зацепление компонентов программы уменьшить за счет использования абстрактных классов-интерфейсов, наследования и ограничить область влияния компонентов программы за счет спецификаторов доступа и инкапсуляции
Еще сущности? Да, можем... Spring (есть такой фреймворк в Java) - очень хороший пример того, куда это может завести.