It accepts a phone number as input and returns a phone connection as output. All the magic of creating phone connections in the international telecommunication network is handled magically and invisibly by the phone object. All you need to be concerned with is the protocols for picking up the receiver, dialing, and what you are going to say to your buddy on the other end. Users need not understand these internals in order to use the object. Objects accept standardized input.
Objects produce some standardized output.
There are three primary reasons that objects are excellent programming aides. First, since you need not concern yourself with the internals of objects in order to use them, you can create complex programs built on a library of objects without needing to be an expert in each area of the program. For example, if you want to incorporate database access into a program, and you can use a pre-written database connectivity object to do it, you needn't worry about how database connectivity actually works. You just let the object, designed by a database connectivity specialist, do it for you. Objects allow you to focus on the workflow of a program rather than this nitty gritty of algorithms.