0

我想设计一个像旅行商问题一样的地图。
有许多节点,一些连接到另一个。
一个节点可以连接到许多其他节点。

我设计了一些,哪个更好?或者也许还有其他更好的设计?
1.)

class Node {
    private int ID;
    private int position-x;
    private int position-y;
}
class Connection {
    private int ID;
    private Node first;
    private Node second;
    public void ConnectTwoNodes( Node a, Node b ) { ... }
}

2.)

class Node {
    private int ID;
    private int position-x;
    private int position-y;
    private ArrayList<Node> anotherNodes; // array of connected nodes
    public void ConnectTo( Node another ) { ... }
}
4

1 回答 1

1

您的语言似乎是 C++。您的解决方案1.有以下问题:

  • 类 Connection 似乎“聚合”了节点。它应该是 OOspeak 中的一个关联(一个指向节点的指针,以使其对普通人来说可以理解)
  • Connection 对象绝对没有理由存在,除非它连接了 2 个节点。所以 ConnectTwoNodes 的函数属于构造函数。换句话说,将其重命名为 Connection。

在您的第二个解决方案中,一个节点似乎也包含其他节点。但实际上它们是独立存在的。同样,您需要关联或指向其他节点的指针。

我实际上更喜欢 1. 方法。或者具有矩阵的非 OO 解决方案,在一个轴上具有“从”节点,在另一个轴上具有“到”节点。它还允许您处理可以从纽约到德克萨斯州巴黎但反之亦然的情况,因为下午没有更多的航班。换句话说,有向图。

于 2013-09-07T15:11:17.353 回答