我认为,在像Java这样的面向对象语言中,组合结构图中使用的端口概念(通常)实际上是通过调用包含对象的成员对象的方法来实现的,此前已经对包含对象的方法进行了调用。这有点像Facade或Delegation模式,只不过包含对象实际上必须“拥有”成员对象。请参阅Delegation维基百科文章,了解多种语言中的示例实现。为回答问题的第一部分,引用自UML用户手册(第二版)(尽管与组件有关):端口是对封装组件的显式窗口。在封装组件中,所有进出组件的交互都通过端口进行。组件的外部可见行为是其端口的总和,不多不少。此外,端口具有标识。...以及来自UML精简版(第三版):端口允许您将所需和提供的接口分组为组件与外部世界之间的逻辑交互。
一个端口是您的系统与其他系统(不在您的模型内)的连接。 http://en.wikipedia.org/wiki/Composite_structure_diagram 实现端口的方式和使用哪些技术完全取决于您。XML Web服务是一个可以用来实现端口的技术示例。
我认为目前没有Java到组合结构图的映射。通常使用类图到Java的映射(例如代码生成)来创建应用程序的框架,而序列图到Java则用于反转方法流程。 除此之外,所有其他尝试都只是研究项目。Omondo曾尝试从类创建组合结构图,但该端口在将项目转换为Java时没有等效物。
当某些外部组件通过端口使用其提供的接口向组件请求服务时,端口将责任委托给特定的内部组件部分,例如Facade或Delegation模式。但是,当组件的部分通过端口使用所需接口请求某些服务时,端口的行为会像存根一样还是以其他方式呈现?