我现在正在开发一个程序,该程序允许您创建形状(正方形、矩形和圆形),您还可以选择通过选择已创建的形状来创建复合形状......我正在使用两个观察者来观察这些形状。一种用于正方形/矩形,一种用于大圆形,这些观察者列出了形状的参考点和大小。创建复合形状时,如果复合形状中有正方形/矩形,则应在正方形/矩形框中列出组件。
我应该使用复合图案创建复合形状。所以基本上复合形状和我的圆形、正方形和矩形需要以同样的方式处理
我有一组称为形状的对象,复合形状是一个包含一组形状的对象。
我的问题是如何通过形状数组检查复合形状类型的对象,然后通过复合形状数组检查矩形或正方形的实例?
很抱歉没有包含代码,但我的程序有点大,有很多类
这是我用来检查正方形或矩形实例的方法……这两种方法属于两个不同的类。当形状只是简单形状但复合形状不显示时,这些形状会显示在右侧观察者窗口中。例如,如果我有一个包含 3 个形状的形状列表……形状 1 是一个大圆圈,形状 2 是复合形状,形状 3 是矩形。假设复合形状有 2 个正方形。现在这将显示大圆圈和矩形,但不会显示复合形状组件。我以为一旦我找到了compoundShape,instanceof 就会从 compundshape 数组中挑选出一个 instanceof 正方形或矩形
继承人的复合形状 toString 方法
public String toString(){
String output="";
output += "Compound Shape: /n";
for (int i = 0; i< numShapes; i++){
output += shapes[i].toString();
}
return output;
}
这是我用来查找正方形或矩形实例的 do 方法
do {//squares rectangles
currentShape = shapes.getShape();
if (shapes.squareRectangleFinder())
outputString1 += currentShape.toString();
}while (shapes.next());
这是平方查找器方法
public boolean squareRectangleFinder() {
if ((shapes[currentShape] instanceof Square)||(shapes[currentShape] instanceof Rectangle)){
return true;
}
return false;
}