A programming style based-object, class as blueprint, object as instance of class
- Inheritance: reused method of parent obj
- Polomorphism: ability of a variable
- Abstract: Hide the complexity
- Encapsulate: wrapping the data and code
Break software into smaller part for easy to understand and maintain Can reused in other programs Enhance program modularity, loose coupling.