有一個名爲「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
請詳細說明Q –