1967 | Ideas of Encapsulation/Object, Methods, and Message Passing were introduced | Simula 67 (mathematical modeling) |
1971 | Concept of Inheritance | Simula 67 |
1972 | Implementation of object-based languages | Smalltalk |
1974 | Classes and Instances, Dynamic Typing | Smalltalk |
1972 | The idea of block structures (related to closure functionality in OOP) | ALGOL 68 |
1979 | Mixins as a way to do multiple inheritances | FLAVORS (a programming language) |
1980 | Encapsulation, Inheritance, and Polymorphism well-distinct | Smalltalk-80 |
1983 | Object-Oriented programming principles were applied to improve software development | Ada |
1985 | The first pure object-oriented programming language | C++ |
1986 | Introduction of garbage collection | Objective-C |
1986 | Concept of Exception Handling in an object context | CLU (programming language) |
1990 | The design and creation of visual objects (Visual Programming) were introduced | Self |
1991 | Introduction of JVM (Java Virtual Machine), Write Once, Run Anywhere (WORA) concept | Java |
1993 | First Appeared Ruby, All data is in fact an object, Including variables and constants | Ruby |
1995 | Simplified memory management, behavior sharing with Prototypical inheritance | JavaScript |
1995 | Immutable objects to handle data and functions as objects | Haskell |
2000 | Generics (For dealing with type safety) | C# (Common Language Runtime – CLR) |
2015 | Introduction of Swift language, Optionals | Swift |
2020 | Pattern matching and Record types | C# 9.0 |