1

我试图弄清楚我应该如何安排我的课程,以便我能够实现以下目标。

所以,最终我有一个带有节点和边的图。

这个想法是基于这些节点和边运行一些图算法。

因此,Graph 类采用的基本单位是

private Node node
private Edge Edge

然后你形成一个图表..对

现在,问题来了。

我有一个特殊的边缘,说特殊的边缘,它实现了早期的边缘,并且有一些自己的特殊属性。

所以我有一个类型图Node, SpecialEdge

现在,我如何使用接受 Edge 而不是 SpecialEdge 的图 G?

任何建议,将不胜感激。谢谢

4

2 回答 2

2

您可以定义一个接口 Edge ,其中子类如 SpecialEdge 将实现它。你可能有很多 Edge 的实现,它总是可以工作的。

此外,由于您的 Graph 包含许多节点和许多边,您可以考虑在您的设计中使用List<Node>和。List<Edge>

编辑:根据尼克的说法,你应该使用Set<Node>andSet<Edge>因为在这种情况下订单不是问题。

于 2013-08-13T16:54:53.367 回答
2

您应该创建两个不同的 Edge 子类,即 BasicEdge 和 SpecialEdge。

应该接受两者的图应该是边。如果您只需要一种类型,请接受 BasicEdge 或 SpecialEdge。

于 2013-08-13T16:46:11.463 回答