Just building on to what mbb said...
The way I always thought of it is that procedural programming contains the instructions to do everything you want to do, contained within your one program. If there's something really basic that you want to do in every program you create, you have to include the code again and again and again in each program you create.
Object-oriented programming allows you to create a separate file - an
object - with the code necessary to do some basic task. Each program you create in the future can call that object .. you don't even need to know what the code looks like inside the object anymore. You just need to know what data it accepts and what data it will return to you.
This allows joe blow to create an object and share it with all his friends as long as he tells them what kind of data the object expects and what kind of data the object will return.
Take a look at
this page.