|< BACK  NEXT >|
Constant innovations in computing technology have made a whole host of powerful and sophisticated applications available to users. The sophistication of the applications may include such things as fancy user interfaces or updating a single database or, in a more complex case, different parts of an application communicating with each other across the network, even across different hardware and operating system platforms, and perhaps updating multiple databases. Such sophistication, however, has brought with it many problems for the developers and software vendors. Developing, maintaining, and revising such large and complex software is not only difficult, but is also time-consuming. As such, developers are constantly looking for methodologies to help them reduce the size of the project by reusing existing code or buying third party modules that can easily be integrated into their own. Moreover, the methodology should allow them to extend this reusable code without breaking the existing consumers of the code.
Over the years, a number of paradigms and programming methodologies have been offered to help developers and software vendors develop reusable and extensible code. One such paradigm, object-oriented programming, has been received favorably by the software community. Under this paradigm, certain sets of related features are grouped in a single unit called an object. This creates a layer of abstraction that simplifies many programming tasks and provides extensibility to the object.
As an object-oriented programming language, C++ has enjoyed a large community of followers. The language s support for object-oriented programming principles such as encapsulation (the hiding of an object s implementation details) and inheritance (the ability to reuse existing objects in the creation of new, more specialized objects) has resulted in an emergence of a marketplace for third party C++ class libraries.
Despite the object-orientation of C++, there are a fair number of obstacles in building reusable class libraries. Many of these obstacles stem from the way a C++ compiler implements some specific features of the language, making it difficult to link the class libraries across various compilers. In this chapter, we look at the technical issues in developing C++ classes as reusable components. Using the interaction between electronic components as a concrete example, I will present programming techniques that address each of the key technical issues. Ultimately, I will show that by following two programming paradigms, we could develop reusable and extensible software components. The two programming paradigms, dynamic linking and binary encapsulation, form the foundation of the Component Object Model (COM).
|< BACK  NEXT >|