鉴于我有两个Java类Foo
和Bar
,而Bar
有一个getFoos()
方法,它返回List<Foo>
。
在Java中,所有类都扩展了父类Object
。 List
是扩展接口Collection
的接口,后者又扩展Iterable
。所有这些都是由Java核心提供的,不需要编程。但是,它们具有可以使用或覆盖的方法。可能需要了解接口层次结构,例如,采用Iterable<Foo>
的方法将接受List<Foo>
。
在UML中从这些类中绘制类图时,如何处理众所周知的类(Object
)和接口(List
及其超级接口Collection
和{ {1}})?我是否还必须将它们绘制到图表中?我可以完全跳过它们吗?这些是否有特殊的符号(云对我来说会很棒)?那些不应该被认定的普通类(即,如果它是Iterable
而不是java.awt.List
)呢?
答案 0 :(得分:4)
UML没有链接到任何语言,关于JDK类的规范没有任何内容。
许多工具都提供了已定义JDK类的配置文件。
因此,如果您获得“导入配置文件”之类的菜单并查看可用的配置文件,则必须查看您的工具。
另外两个解决方案可能是:
在模型中定义所需的最小JDK类集
尝试编写java程序以生成JDK类的XMI。理论上并不那么复杂,但JDK包含了无法使用内省的JNI类。
答案 1 :(得分:1)
您对如何处理知名类的选择将取决于您计划如何使用UML类图。
如果创建UML图的主要目的是向团队传达设计细节,我会选择不包括熟知的类(不仅来自JDK而且还有很好的类) - 在你的上下文中已知)。原因是你希望你的信息集中。添加这些众所周知的类可能会快速混乱您的图表,同时不会向您的消息添加任何内容。出于同样的原因,我通常会排除getter / setter以及对理解设计不重要的任何信息。对于那些不为人所熟知的课程,我会将它们包括在内,因为它们会传达团队无法轻易获取的信息。
如果您的类图将在MDA中使用,即它将用于生成系统实现,那么您必须包含众所周知的类。