Things which all exist in non-OOP languages and before OOP became a fad. No OO isn't inheritance, but implementation inheritance is one of the few things which is unique to OOP based programming. Most other aspects of OOP will be found within other paradigms.
More importantly OOP is not merely a bag of syntax and features but a way of thinking about software development and structuring your programs. OOP says you organize your code around objects and the actions done on those objects.
That is something I find that often isn't a great way of structuring your code. But I don't think OOP is useless. I do use OO thinking in my code, just not as much as I used to. I prefer functional thinking. Often I organize code arounds verbs rather than nouns. So one file may be a similar kind of action performed on many different kinds of objects.
E.g. when writing a rocker simulator, I would have one source code file which contained mass calculations for a variety of objects.
Another file would contain rocket thrust calculations.
I would say though that in GUI programming I find that OO thinking tends to make a lot of sense.
More importantly OOP is not merely a bag of syntax and features but a way of thinking about software development and structuring your programs. OOP says you organize your code around objects and the actions done on those objects.
That is something I find that often isn't a great way of structuring your code. But I don't think OOP is useless. I do use OO thinking in my code, just not as much as I used to. I prefer functional thinking. Often I organize code arounds verbs rather than nouns. So one file may be a similar kind of action performed on many different kinds of objects.
E.g. when writing a rocker simulator, I would have one source code file which contained mass calculations for a variety of objects.
Another file would contain rocket thrust calculations.
I would say though that in GUI programming I find that OO thinking tends to make a lot of sense.