Bottom–up approach in program design
Programs organized around objects, grouped in classes
Focus on data with methods to operate upon object’s data
Interaction between objects through functions
Reusability of design through creation of new classes by adding features to existing classes