Object-orientated programming is the concept of designing code around simple, efficient, and reusable objects that can work together to accomplish a larger goal. Compare this against sequential programming, which is essentially a long list of code that is only useful for one specific task.
I think a more accurate instrumental description of OOP is that it’s code that invokes operations in terms of abstract data types, while having code organization based on concrete data types.
This definition spans everything from prototype-based OO to inheritance to interface polymorphism and generic functions, and various combinations thereof.
That having been said, I don’t know very many CS people or industry programmers who would give such a concise definition, unless they’ve seen OO done in say, Python, Java, JavaScript, Lisp, Haskell, Eiffel, Dylan, and C -- or at least enough other languages to see the OO forest distinct from the trees. Academics are likely to babble about a bunch of stuff that doesn’t matter, while industry folks are likely to babble about how cool OO is or that it’s just “how it’s done”.
I think a more accurate instrumental description of OOP is that it’s code that invokes operations in terms of abstract data types, while having code organization based on concrete data types.
This definition spans everything from prototype-based OO to inheritance to interface polymorphism and generic functions, and various combinations thereof.
That having been said, I don’t know very many CS people or industry programmers who would give such a concise definition, unless they’ve seen OO done in say, Python, Java, JavaScript, Lisp, Haskell, Eiffel, Dylan, and C -- or at least enough other languages to see the OO forest distinct from the trees. Academics are likely to babble about a bunch of stuff that doesn’t matter, while industry folks are likely to babble about how cool OO is or that it’s just “how it’s done”.