Traditionally, programming is taught as a bottom-up approach. This model fits very well with procedural programming, even more with non-modular languages, such as Fortran and Basic[?]. Object-oriented concepts, however, should be learned and used in a top-down approach, starting from modeling objects and object interactions.
Although some object-oriented languages follow the object metaphor down to the statement level, like Smalltalk, the most widely known languages of today, i.e. C++, Object Pascal[?] and Java follow an almost procedural notation.
So, to devise a good object-oriented program, one should first devise an effective model and later implement the model in the chosen language.
wikipedia.org dumped 2003-03-17 with terodump