"composite"라는 이름의 클래스가 있으며,이 클래스에는 목록이 저장됩니다. 목록의 결과를 계산하는 메소드를 작성하려고합니다. 계산 방법은 어디에서해야합니까? OO 방법론에 따라 계산 인터페이스를 만들어 복합 클래스에서 구현해야합니까? 그렇다면 이유를 설명해 주시겠습니까? 감사합니다. .OO에서 사용자 인터페이스 방법
package composite;
public abstract class Component {
private int level;
public abstract void add(Component component);
public abstract void remove(Component component);
public abstract void eachChild();
public int getLevel() {
return level; }
public void setLevel(int level) {
this.level = level; } }
package composite;
import java.util.ArrayList;
public class Composite extends Component implements ILevelCalculator
{
ArrayList<Component> componentList = new ArrayList<Component>();
@Override public void add(Component component) {
componentList.add(component); }
@Override public void remove(Component component) {
componentList.remove(component); }
@Override public void eachChild() {
System.out.println(this.getLevel() + " excuted..."); for
(Component component : componentList) {
component.eachChild(); } }
@Override public int getLevel() { int levelResult; levelResult
= getTheBiggestNo(componentList); return levelResult; }
private int getTheBiggestNo(ArrayList<Component> componentList) {
int theBiggestNo = 0; if (componentList.isEmpty()) {
System.out.println("The list is empty!"); } else {
theBiggestNo = getCompareResult(componentList); } return theBiggestNo; }
private int getCompareResult(ArrayList<Component> componentList) {
int result = 0; for (Component biggest : componentList) {
if (biggest.getLevel() > result) {
result = biggest.getLevel();
} } return result; } }
package composite;
public interface ILevelCalculator { public int getLevel(); }
package composite;
public class Leaf extends Component {
@Override public void add(Component component) {
throw new UnsupportedOperationException("Not supported yet."); }
@Override public void remove(Component component) {
throw new UnsupportedOperationException("Not supported yet."); }
@Override public void eachChild() {
System.out.println("Leaf's name:"+this.getLevel()); }
}
package composite;
public class Main {
public static void main(String[] args) { Composite questionnaire
= new Composite(); for(int i=0;i<4;i++){
Composite dimension = new Composite(); for(int j=0;j<5;j++){
Leaf question = new Leaf();
question.setLevel(i);
dimension.add(question); }
questionnaire.add(dimension);
System.out.println("The dimension < "+i+" > result is: "+questionnaire.getLevel()); }
System.out.println("The final result is:
"+questionnaire.getLevel()); } }
몇 가지 코드를 게시하거나 좀 더 명확하게 질문을하십시오. 지금 당장 얘기 할 내용을 이해하기 어렵습니다. – Egor
pls 정교 Q –