As opposed to [[Procedural Programming|procedural programming]]
Revolves around [[Classes|classes]] and [[Objects|objects]]
- Classes model real-world domain entities
- Allow higher level of abstraction
- Successful in large programs
- Complexity outpaces ability of developers to understand program as it grows
- Abstraction hides complexity
Reusability
- Easier reuse classes in other applications
- Faster development
# Concepts
- [[Classes]]
- [[Class Methods]]
- [[Constructors]]
- [[Destructors]]
- [[Encapsulation]]
- [[Inheritance]]
- [[Objects]]
- [[Polymorphism]]
# Limitations
- Does not make bad code better
- Not suitable for all problems
- More upfront design needed
- Steep learning curve
- especially for [[C++]]
- different implementations across languages
- Unchecked, programs can be
- larger
- more complex
- slower