About OOP: object-oriented programming.
It’s been more than three decades since OOP came into this world. And the software industry has changed a lot, too. Nowadays, software is common merchandise like toothpaste. And OOP has become the main frame of software developing. There are also many excellent OOP languages which provides full OOP features to developers. But software development remains in mess.
OOP is a software development method, is a design strategy. Programming in OOP supported language is not equal to programming in OOP. All the features of OOP including inheritance, interface, inner class, polymorphism, dynamic binding, abstraction, information hiding should be considered in design phase. Any language can be programmed in OOP way. Some OOP languages (Java, C++ or Python) are nothing more than supporting those features explicitly. The truth is that a good OOP designed software can easily be implemented with procedural language like C, only provided the design is OOP enough.
There are many excellent software which is implemented with C in OOP way. GTK+, for example, is fully OOP and written in C. And there is a excellent books about programming OOP with ANSI C called <OOP with ANSI C>. By now, you should be fully convinced that OOP has nothing to do with programming language.
OOP is a method, a conception and a mind level solution. We should enhance our comprehension about it. We should learn when and where to use those features to improve our solutions. It is such a thing if you can use it right, it is really powerful. Otherwise, it is really harmful and the software development process would be worse than without using OOP.