From Procedural to OO
The procedural paradigm promotes functional decomposition to arrive to a hierarchical, procedure and invocation based structure.
The OO paradigm promotes abstraction, encapsulation, modularity and hierarchy to arrive to a network of inter-communicating objects.
Polymorphism allows the program to change behaviour and structure at runtime.