| |
Juni 2003 C++-Diagramm: Einführen Der Schnittstellen 1-143 1 // IDL schließen Sie A an {... }; Schnittstelle B: A {... }; Schnittstelle C: A {... }; Schnittstelle D: B, C {... }; // C++ Kategorie POA_A: allgemeines virtuelles PortableServer::ServantBase {... }; Kategorie POA_B: allgemeines virtuelles POA_A {... }; Kategorie POA_C: allgemeines virtuelles POA_A {... }; Kategorie POA_D: allgemeines virtuelles POA_B, allgemeines virtuelles POA_C {... }; Dieses garantiert, daß die skeleton Kategorie POA nur eine Version von jedem übernimmt Betrieb und erlaubt auch wahlweise freigestellte Erbschaft von Implementierungen. In diesem Beispiel die Implementierung von Schnittstelle B verwendet die Implementierung von Schnittstelle A wieder // C++ Kategorie A_impl: allgemeines virtuelles POA_A {... }; Kategorie B_impl: allgemeines virtuelles POA_B, allgemeines virtuelles A_impl { }; Für Schnittstellen, die von einer abstrakten Schnittstelle übernehmen, ist die skeleton Kategorie POA auch praktisch abgeleitet direkt von der abstrakten Schnittstellenkategorie, aber mit geschütztem Zugang: // IDL abstrakte Schnittstelle A {... }; Schnittstelle B: A {... }; // C++ Kategorie A {... }; Kategorie POA_B: allgemeines virtuelles PortableServer::ServantBase, geschütztes virtuelles A {... }; Die abstrakte Schnittstelle wird mit geschütztem Zugang übernommen, um versehentliches zu verhindern Umwandlung des skeleton Zeigers POA zu einem abstrakten Schnittstellenhinweis, für ORBs daß Werkzeuggegenstandhinweise als Zeiger. Dieses erlaubt auch Implementierungskategorien und valuetypes zum Teilen einer Implementierung der abstrakten Schnittstelle: // IDL valuetype V: stützt A {... }; // C++ Kategorie MyA: virtuelles A {... }; Kategorie MyB: allgemeines virtuelles POA_B, geschütztes virtuelles MyA {... }; Kategorie MyV: allgemeines virtuelles V, allgemeines virtuelles MyA {... }; |  |
|
| |
|
|