Lesson 3 | What you need |
Objective | Discover what you need to take this course. |
Com Fundamentals (Course Requirements)
Containment, Delegation and Aggregation
Software
To complete
COM Fundamentals II successfully, you should acrquire Microsoft C++ from the following website
visualstudio.microsoft.com/downloads.
The examples in the course have been done using version Visual C++ 6.0.
No additional software beyond what you need to access this course is required.
Platform support
Course download
Downloadable course project files are available for this course. They include the binary files you need to complete the course project, as well as completed course project files for both Visual C++ 5 and Visual C++ 6.
Recommended Reading
The following textbook is recommended for this couse as accompanying text.
Inside Microsoft Programming
This books are not required to take this course, but do contain helpful, additional information.
You can reach the Bookstore page at any time by clicking the Resources button on the toolbar.
COM Reuse
A further way of reuse that is utilized by COM is aggregation. Aggregation is reuse of a COM component. An aggregation component consists of one outer component and one or more inner components. At run time, the instance of the outer component, called outer object, is the one that deals with the clients. In turn, the outer object will make a request to the system to generate an instance of the inner component, called an inner object.
The outer object, as coded in the outer component, may give its client a pointer to an interface implemented in the inner object.
This is the heart of COM aggregation, an instance of a component (the outer component) reuses an implementation made in another component (the inner component) or is contained in an instance of the inner component. The outer component may make only a part of the inner component’s interfaces available to its client.
Hauck tried to use COM aggregation to implement an architecture called Mediator-Based Architecture. This architecture requires a client to be able to access any of the inner component’s interfaces. This is clearly against the specification of aggregation.