나는 당신이 이미 만든 도형을 선택하여 복합 도형을 만들 수있는 옵션이있는 도형 (정사각형, 직사각형 및 원)을 만들 수있는 프로그램을 만들고 있습니다 ... 저는 모양에 대해 두 명의 관찰자를 사용합니다. 하나는 사각형/직사각형에 대한 것이고 다른 하나는 큰 원에 대한 것이고이 관찰자는 도형의 참조 점과 크기를 나열합니다. 복합 모양이 만들어지면 복합 모양에 사각형/직사각형이 있으면 사각형/사각형 프레임의 구성 요소를 나열해야합니다.자바에서 복합 패턴
복합 패턴을 사용하여 복합 모양을 작성한다고 가정합니다. 기본적으로 복합 형체와 내 원, 사각형 및 사각형은 같은 방법으로 처리해야합니다.
저는 도형이라고 불리는 객체 배열을 가지고 있으며 복합 형체는 그 안에 도형이 배열 된 객체입니다.
제 질문은 어떻게 형체 형태의 객체에 대한 모양 배열을 확인한 다음 사각형 또는 사각형의 인스턴스에 대한 복합 모양 배열을 검사 할 수 있습니까?
코드를 포함하지만 내 프로그램 클래스
의 많은 다소 큰되지 죄송를 heres 나는이 두 가지 방법은 두 개의 서로 다른 클래스에 ... 정사각형 또는 직사각형의 인스턴스를 확인하는 데 사용하는 방법. 셰이프는 단순한 모양이지만 컴파운드 모양이 표시되지 않을 때 오른쪽 옵저버 창에 표시됩니다. 예를 들어 3 개의 도형 목록이있는 경우 ... 모양 1은 큰 원, 모양 2는 복합 모양 및 모양 3은 사각형입니다. 그리고 복합 형체가 2 개의 정사각형을 가지고 있다고 말할 수 있습니다. 지금이 큰 원과 직사각형을 표시하지만 복합 형 구성 요소를 표시하지 않을 것입니다. 나는 내가 compoundShape에 도착하면,의 instance를 heres 화합물이 toString 메소드에게 내가 찾기 위해 사용public String toString(){
String output="";
output += "Compound Shape: /n";
for (int i = 0; i< numShapes; i++){
output += shapes[i].toString();
}
return output;
}
을 heres DO 방법을 모양 compundshape 배열
에서의 인스턴스의 정사각형 또는 직사각형을 골라 볼 것이라고 생각 정사각형 또는 직사각형을 heres
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;
}
숙제를하는 것처럼 들리는데 ... "확인"해서는 안됩니다. 복합 클래스 공용 인터페이스를 통해 추상화하고 사용할 수 있도록하기 위해 어떤 동작이나 특성이 필요합니까? 또는 공유 인터페이스를 통해 모든 셰이프를 공유 할 수 있습니다. – SAJ14SAJ
'instanceof' 연산자를 사용하여 배열의 요소가 * CompoundShape * 클래스의 인스턴스인지 확인할 수 있습니다. – vbence
사실 그렇지만 숙제가 가르치려는 정신이 아닙니다. – SAJ14SAJ