30 identifiable extensions to the existing interface classes. The extension interfaces |
30 identifiable extensions to the existing interface classes. The extension interfaces |
31 supported by each plug-in can be determined and used appropriately. </p> <p>The |
31 supported by each plug-in can be determined and used appropriately. </p> <p>The |
32 images below illustrate how the interface extensibility feature works. </p> <p>The |
32 images below illustrate how the interface extensibility feature works. </p> <p>The |
33 class diagram shows the implementation of the original interface. </p> <fig id="GUID-C85FB42D-1EE5-508E-B81F-D96B8A8E23E7"> |
33 class diagram shows the implementation of the original interface. </p> <fig id="GUID-C85FB42D-1EE5-508E-B81F-D96B8A8E23E7"> |
34 <title> Class diagram of the original interface </title> |
34 <title> Class diagram of the original interface </title> |
35 <image href="GUID-7D78DFA8-301C-5A0C-9F83-7C4BBEAE34C2_d0e214701_href.jpg" placement="inline"/> |
35 <image href="GUID-7D78DFA8-301C-5A0C-9F83-7C4BBEAE34C2_d0e220721_href.jpg" placement="inline"/> |
36 </fig> <p>The next class diagram shows an example of the original class <b>CImplementationClass</b> supporting |
36 </fig> <p>The next class diagram shows an example of the original class <b>CImplementationClass</b> supporting |
37 two extensions . The extensions have been added to the <b>CExampleInterface</b> each |
37 two extensions . The extensions have been added to the <b>CExampleInterface</b> each |
38 using a different implementation methodology . </p> <p> <b>CExampleInterfaceExtended</b> requires |
38 using a different implementation methodology . </p> <p> <b>CExampleInterfaceExtended</b> requires |
39 no data and so has been added to the inheritance of the original plug-in <b>CImplementationClass</b> object. <b>MExampleInterfaceExtended2</b> shows |
39 no data and so has been added to the inheritance of the original plug-in <b>CImplementationClass</b> object. <b>MExampleInterfaceExtended2</b> shows |
40 how extensions can be realized in separate objects with their own data. </p> <fig id="GUID-B2D1AF5C-0789-5D9B-8EB1-13226C864D38"> |
40 how extensions can be realized in separate objects with their own data. </p> <fig id="GUID-B2D1AF5C-0789-5D9B-8EB1-13226C864D38"> |
41 <title> Class diagram of the extended interface </title> |
41 <title> Class diagram of the extended interface </title> |
42 <image href="GUID-DAF12BDB-5453-5DDD-ACBA-4C29AE448D87_d0e214730_href.jpg" placement="inline"/> |
42 <image href="GUID-DAF12BDB-5453-5DDD-ACBA-4C29AE448D87_d0e220750_href.jpg" placement="inline"/> |
43 </fig> <p>The extended interfaces should maintain the binary compatibility |
43 </fig> <p>The extended interfaces should maintain the binary compatibility |
44 by not changing the original interface class definition. The functional compatibility |
44 by not changing the original interface class definition. The functional compatibility |
45 should be maintained by incorporating interface extensions as optional. This |
45 should be maintained by incorporating interface extensions as optional. This |
46 allows the framework to function with original and extended plug-in implementations. </p> <p>To |
46 allows the framework to function with original and extended plug-in implementations. </p> <p>To |
47 accommodate interface extensibility, the following changes are applied to |
47 accommodate interface extensibility, the following changes are applied to |