OOP is a way to decompose a problem using the notion of things (objects) and how the things interact with one another. Object- oriented design can be thought of as modeling the world in state. State can be imagined as the descriptive properties of a thing. The state of a dog might be it's weight, color, and age.
Contrast with functional programming, FP, which uses operations as the fundamental units of decomposition. It can be thought of as modeling the world in transformations.
There are a few ways that a language might support object orientation. One is through the notion of object classes. Another centers on the idea of object prototypes. In any case, the fundamental unit of an object-oriented language is an object.
This presentation focuses on class-based OOP but the principles apply to protypal OOP as well.
- Class-based OOP
- Encapsulation an Information Hiding
- Inheritance and Polymorphism