This makes having a portable application more difficult since you are relying so heavily on the tools you have used to implement. It is also a more difficult approach because people tend to think serially as opposed to conceptualizing the entire application. We are trained to think of how to implement a specific portion of an application, and when that is complete, to move on to the next portion. This does not lend well to an OO design. For those of you without experience, explain what aspects of the object-oriented paradigm appear difficult to learn and suggest what might make them easier to understand.
Inheritance allows for re-use and development of existing code.
Polymorphism in an OO language, allows reference to instances of more than one class. Without OO programming experience, inheritance and polymorphism are the difficult features to learn. Inheritance as a concept is easy to understand, but it can be difficult to create the basic building blocks and then continue to build on them. Polymorphism as a concept is more challenging to understand and also it can require more experience to determine when and where it is most useful. This would be easier to understand if an existing design familiar to a programmer was reworked with help from an OO programmer.