2012-01-23 4 views
0

есть класс с именем «составной», в котором он хранит список. Я хочу написать метод для вычисления результата списка. где я должен использовать метод расчета? Основываясь на методологии 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()); } } 
+3

Попробуйте опубликовать код или сделайте свой вопрос битнее понятным, потому что сейчас трудно понять, о чем говорят. – Egor

+1

PLS разработать Q –

ответ

0

Это почти похоже на то, что у вас немного перепутано. Если бы у меня был класс, называемый составным, он мог бы реализовать интерфейс, у которого был метод, называемый вычислением. Тогда по требованию интерфейса вашему классу нужен метод расчета. Кроме того, для этого вы отметили дизайн базы данных. Было ли что-то еще по вашему вопросу или это был общий вопрос ООП?

+0

Привет, чувак, я просто приложил код, не могли бы вы помочь? Я хочу знать, правильно ли создать интерфейс? – loql

+0

Я думаю, что ты на правильном пути. Я думаю, что на самом деле вы хотите реализовать свой интерфейс в классе компонентов так, как вы его определили. Используется ли композит для полиморфного использования? Какова английская версия того, что вы пытаетесь выполнить? Деловая проблема? Иногда это помогает мне определить это сначала, а затем написать код класса/интерфейса. –

+0

Также последнее. Неясно, нужен ли вам интерфейс или нет вообще. Есть ли у вас другие классы, реализующие этот интерфейс? Возможно, вам даже не понадобится наследование, если это всего лишь один класс. –

Смежные вопросы