什么是节点连接情况的良好类设计?

时间:2013-09-07 14:51:42

标签: algorithm oop data-structures

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

我设计了一些,哪一个更好?或者还有另外一种更好的设计? 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 ) { ... }
}

1 个答案:

答案 0 :(得分:1)

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

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

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

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