2017-07-30 89 views
-1

我正在研究基本的图像处理程序,目前有3个类:顶点,图形和操作。在类之间传递创建的数组[Java]

public class Vertex{ 
    //Vertex functions, including tracking neighbours 
} 

public class Graph{ 

    Vertex[][] aVertices; 

    public Graph(Color[][] image){ 

     int xTop = 0; 
     for (int i = 0; i < image.length; i++){ 
      if (i > xTop){ 
       xTop = i; 
      } 
     }  

     int yTop = image.length; 

     Vertex[][] aVertices = new Vertex[xTop][yTop]; 

     for(int i = 0; i < xTop; i++){ 
      for(int j = 0; j < yTop; j++){ 
       Vertex newVertex = new Vertex(i, j, image[i][j]); 
       aVertices[i][j] = newVertex; 
      } 
     }  

     for(int i = 0; i < xTop; i++){ 
      for(int j = 0; j < yTop; j++){ 
       if(aVertices[i][j] == aVertices[i-1][j]){ 
        aVertices[i][j].neighbourize(aVertices[i-1][j]); 
       } 
       if(aVertices[i][j] == aVertices[i+1][j]){ 
        aVertices[i][j].neighbourize(aVertices[i+1][j]); 
       } 
       if(aVertices[i][j] == aVertices[i][j-1]){ 
        aVertices[i][j].neighbourize(aVertices[i][j-1]);  
       } 
       if(aVertices[i][j] == aVertices[i][j+1]){ 
        aVertices[i][j].neighbourize(aVertices[i][j+1]); 
       } 
      } 
     } 

    } 

} 

public class Manipulations{ 

    //Image manipulations that access aVertices  

} 

正如可以看到,在创建时的曲线图的,2D阵列创建保存顶点对象,然后将其分配适当邻居共享颜色状态。我现在想要在操纵中使用这个完整的aVertices并对其进行处理,但我不确定如何在合适的范围内移动它。任何人都可以指出我正确的方向吗?

+0

请注意,您有一个名为'aVertices'两个变量。我建议你了解两者之间的差异,以及它们如何为你造成问题。 (注意一个是**字段变量**,另一个是**局部变量**。这两个术语可以帮助您找到更多信息。) –

+0

如何创建每个类的对象? –

回答

1

我认为你缺乏Object Oriented Programming的知识。

对于你的问题,你可以在Graph中定义这样的方法。

public Vertex[][] getVertices() { 
    return this.aVertices; 
} 

Manipulations,你可以得到aVertices

Graph g = new Graph(image); 
Vertex[][] vertices = g.getVertices(); 
+0

是的,我还是比较新的面向对象编程,感谢上帝的回答!我会尽可能接受。 – MMMMMCK

+1

这是一个有用的[教程](https://docs.oracle.com/javase/tutorial/java/concepts/)。 – caisil