There are a lot of questions on why OOP is correct or where it works etc , so this is one of them , however I am asking it from the perspective of Kernel and why it doesn't use as an example .
Kernel is mostly written in C . It hardly uses OOP . General consensus on OOP is that its the best paradigm in programming ( mostly by many of the new comers ) but Kernel despite being one of the most challenging areas of programming - doesn't use OOPS .
So I would like to know what are the cases where OOP works and why it can't work for things like Kernel ? I am trying to get the engineering aspects of why it works in some cases .You could say GUI programming might benefit from OOP - the reason for that from my understanding is that you are going to create more than one case of a particular thing and you might manipulate them - so having different states with same behaviour makes sense .
On a higher level , what are the good cases where OOP can be considered as a natural choice vs where would it just be an overdesign ? I would be happy to get pointers on this question beacuse this is already discussed on many places .
PS: I am looking for an engineering aspect . I understand this question is very broad . Any helpful pointers would be nice .
Some related questions : I can't create a clear picture of implementing OOP concepts, though I understand most of the OOP concepts. Why?