Differences between procedural and object-oriented programming

Design guideline for OOP: The expression of an algorithm should model the application.

Stated differently: The solution to the problem should resemble the problem. 

Observers of the solution should be able to recognize the problem without knowing about it in advance.