用Java实现图形
我被指派了一项任务,用java实现一个图形。它最终将用于测试搜索方法(广度优先、深度优先和迭代深化)。要创建的三个类必须实现三个相应的接口:用Java实现图形,java,graph,depth-first-search,breadth-first-search,Java,Graph,Depth First Search,Breadth First Search,我被指派了一项任务,用java实现一个图形。它最终将用于测试搜索方法(广度优先、深度优先和迭代深化)。要创建的三个类必须实现三个相应的接口: public interface Node { public Node createNode(String name, int ID, float weight); public Node[] getNeighbours(); public Edge[] getEdges(); public void addEdge(Edg
public interface Node {
public Node createNode(String name, int ID, float weight);
public Node[] getNeighbours();
public Edge[] getEdges();
public void addEdge(Edge e);
public void removeEdge(Edge e);
public String getName();
public int getID();
public float getWeight();
public String toString();
public interface Edge {
public Edge createEdge(String name, int ID, float weight);
public Node getStartNode();
public void setStartNode(Node n);
public Node getEndNode();
public void setEndNode(Node n);
public String getName();
public int getID();
public float getWeight();
public String toString();
public interface Graph {
public Graph createGraph(String name, int ID, Node[] nodes, Edge[] edges, Node root);
public String getName();
public Edge[] getEdges();
public void addEdge(Edge e);
public Edge getEdge(String name, int ID);
public void removeEdge(Edge e);
public Node[] getNodes();
public void addNode(Node n);
public Node getNode(String name, int ID);
public void removeNode(Node n);
public void setRoot(Node n);
public Node getRoot();
public boolean isTree(); <= optional!
public String toString();
公共接口节点{
公共节点createNode(字符串名称、int-ID、浮动权重);
公共节点[]获取邻居();
公共边缘[]获取边缘();
公共无效补遗(边缘e);
公共无效清除(边缘e);
公共字符串getName();
public int getID();
公共浮点数getWeight();
公共字符串toString();
公共接口边缘{
公共边缘createEdge(字符串名称、整数ID、浮动权重);
公共节点getStartNode();
公共节点(节点n);
公共节点getEndNode();
公共void setEndNode(节点n);
公共字符串getName();
public int getID();
公共浮点数getWeight();
公共字符串toString();
公共接口图{
公共图createGraph(字符串名称、int ID、节点[]节点、边[]边、节点根);
公共字符串getName();
公共边缘[]获取边缘();
公共无效补遗(边缘e);
公共边缘getEdge(字符串名称,int-ID);
公共无效清除(边缘e);
公共节点[]获取节点();
公共void addNode(节点n);
公共节点getNode(字符串名称,int-ID);
公共void removeNode(节点n);
公共void setRoot(节点n);
公共节点getRoot();
公共布尔isTree();接口无法定义构造函数。有关一些讨论,请参阅
请参阅,以了解可能会引导您走向正确方向的简短讨论。我同意您对在接口中放置create方法是否明智的质疑。接口中的方法必须在实现类中作为实例方法实现,通常这样的方法在替代构造函数时是class方法,即静态工厂方法,不能出现在接口中
在Java接口中使用创建方法的唯一原因是如果有人正在进行克隆,这里的情况似乎不是这样。当您实现这些接口时,创建方法将调用您的构造函数(您可以自由地以任何方式实现构造函数),但这些方法有点愚蠢,因为作为实例方法,您需要有现有的对象来调用它们
至于你的第二个问题,邻接矩阵、邻接列表或关联列表的选择完全取决于你。我看到这里的投票结果非常接近。也许将你的问题重新命名为“Java接口中奇怪的构造函数类方法”会使它更具吸引力。只是一个想法。