"composite"という名前のクラスがあり、そこにリストが格納されています。リストの結果を計算するメソッドを記述したいと思います。計算方法はどこで行うべきですか?オブジェクト指向の方法論に基づいて、私は計算のインターフェイスを作成し、それを複合クラスで実装する必要がありますか?はいの場合、理由を説明できますか?おかげさまで 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 –