👉🏻 If you want to enjoy the full experience exploring this pdf, try it out here OOP Models
OOP Overview
- OOP Paradigm has its roots in Simula (1960s) and Smalltalk (1970s)
- Here is a timeline of the OOP history:

- OOP in Scripting languages like JavaScript adopted OOP principles with prototypes
- Later JavaScript introduced ES6 classes for better support
- Languages like Scala, Rust and Kotlin introduced Functional-Object Hybrid Models (2010s)
OOP Pillars (A PIE)
- Abstraction → Selective inclusion of specific aspects in the solution
- Polymorphism → Dynamic selection of operations at run time, depending on the object receiving the call
- Inheritance → Reusing the implementation of previously defined classes in objects or another classes
- Encapsulation → Hiding of implementation details
OOP Languages
- Pure OOP Language → Smalltalk, Java
- Class-based OOP Languages → Java, C++, C#
- Classless/Prototype-based OOP languages → JavaScript