1. A system for providing an interface between an object-oriented software library and an application program, the object-oriented software library including a plurality of objects, the system comprising: an internal class in the object-oriented software library comprising external interface methods and internal services; an interface class operable to expose the external interface methods to the application program as virtual functions, wherein the internal class is operable to inherit the interface class and provide implementation of the virtual functions defined in the interface class; and a factory class operable to create multiple instances of the internal class, the factory class constructor operable to perform assertion and parameter type checking for the internal class.