In procedural programming, a program is divided into portions called functions, while in object oriented programming, the program is divided into portions called objects. Another key difference is that object-oriented programming follows the "bottom-up" approach, while procedural programming follows the "top-down" approach.
Procedural programming commands the computer step by step via a list of instructions. It relies on subroutines or routines. A routine can have a series of computational steps. Procedural programming is sometimes referred to as imperative programming. Object-oriented programming, as its name implies, relies on objects. Objects are components of a program that know how to execute certain tasks and interact with the other elements of the program.
Because objects are more versatile, object-oriented programming can be used to develop complex programs with less code. The use of objects also facilitates code reuse. In procedural programming, the focus is placed on the functions and sequence of actions to be performed and not on data. In object-oriented programming, however, the focus is placed on the data and not the procedures or functions.
The main purpose or aim of the two programming methods is to make programming more efficient. They make the process of writing complicated programs simpler, modifiable, expandable, easily understandable and bug-free.