diff --git a/topics/oop/index.md b/topics/oop/index.md new file mode 100644 index 00000000000..4ce478f6850 --- /dev/null +++ b/topics/oop/index.md @@ -0,0 +1,16 @@ +--- +aliases: object-oriented-programming, object-oriented-design +created_by: MIT, Alan Kay +display_name: Object-oriented programming (OOP) +released: 1960 +short_description: Object-oriented programming is a programming paradigm based on the concept of objects fundamental to many programming languages. +topic: oop +wikipedia_url: https://en.wikipedia.org/wiki/Object-oriented_programming +related: procedural-programming, open-closed-principle, inheritance, polymorphism, orm, functional-programming, event-driven-programming +--- +**Object-oriented programming** (**OOP**) is a programming paradigm based on the concept of objects fundamental to many programming languages, including [Java](https://github.com/topics/java) and [C++](https://github.com/topics/cpp). OOP can be devided in two sub types: class-based (or "classical") and prototype-based OOP (found in [JavaScript](https://github.com/topics/javascript), for example). + +Object-oriented programming has several advantages over procedural programming: +* OOP provides a clear structure for the programs +* OOP helps to keep the code DRY "Don't Repeat Yourself", and makes the code easier to maintain, modify and debug +* Logic can be abstracted, encapsulated, composed, inherited and decoupled