Oop 如何在OO中创建用户界面

Oop 如何在OO中创建用户界面,oop,database-design,Oop,Database Design,有一个名为“composite”的类,它在其中存储一个列表。我想写一个方法来计算列表的结果。我应该在哪里填写计算方法?基于OO方法论,我是否需要创建一个计算接口,并使其由复合类实现?如果是,你能解释一下原因吗? 谢谢 包装复合材料; 公共抽象类组件{ 私有整数级; 公开摘要作废添加(组件); 公共摘要作废删除(组件); 公开摘要无效每个孩子(); public int getLevel(){ 返回级别;} 公共void设置级别(int级别){ this.level=level;} 包装复合材料;

有一个名为“composite”的类,它在其中存储一个列表。我想写一个方法来计算列表的结果。我应该在哪里填写计算方法?基于OO方法论,我是否需要创建一个计算接口,并使其由复合类实现?如果是,你能解释一下原因吗? 谢谢

包装复合材料;
公共抽象类组件{
私有整数级;
公开摘要作废添加(组件);
公共摘要作废删除(组件);
公开摘要无效每个孩子();
public int getLevel(){
返回级别;}
公共void设置级别(int级别){
this.level=level;}
包装复合材料;
导入java.util.ArrayList;
公共类复合扩展组件实现ILevelCalculator
{
ArrayList componentList=新的ArrayList();
@替代公共无效添加(组件){
componentList.add(component);}
@替代公共无效删除(组件){
组件列表。删除(组件);}
@重写public void eachChild(){
System.out.println(this.getLevel()+“executed…”);用于
(组件:组件列表){
component.eachChild();}
@重写公共int getLevel(){int-levelResult;levelResult
=getTheBiggestNo(componentList);返回levelResult;}
private int getTheBiggestNo(ArrayList组件列表){
int theBiggestNo=0;如果(componentList.isEmpty()){
System.out.println(“列表为空!”;}else{
theBiggestNo=getCompareResult(componentList);}返回theBiggestNo;}
private int getCompareResult(ArrayList组件列表){
int结果=0;对于(组件最大:组件列表){
if(最大的.getLevel()>结果){
结果=最大值。getLevel();
}}返回结果;}}
包装复合材料;
公共接口ILevelCalculator{public int getLevel();}
包装复合材料;
公共类叶扩展组件{
@替代公共空心添加(构件){
抛出新的UnsupportedOperationException(“尚未受支持”);}
@替代公共空心删除(构件){
抛出新的UnsupportedOperationException(“尚未受支持”);}
@重写public void eachChild(){
System.out.println(“叶的名称:+this.getLevel());}
}
包装复合材料;
公共班机{
公共静态void main(字符串[]args){复合问卷

=新组合();用于(int i=0;i听起来您的OO有点混淆。如果我有一个名为composite的类,它可以实现一个名为calculate的接口。然后根据接口的要求,您的类需要一个calculate方法。此外,您为此标记了数据库设计。您的问题是否还有其他方面,或者这只是一个问题一个普通的OOP问题?

试着发布一些代码或让你的问题更清楚一点,因为现在很难理解他们在说什么。嗨,伙计,我刚刚附上了代码,你能帮忙吗?我想知道创建接口是否正确?我想你说得对。我想你真的想要实现它按照您在此处定义的方式在组件类上创建接口。composite是否用于多态性?您试图实现的内容的英文版本是什么?业务问题?有时它可以帮助我先定义它,然后编写类/接口代码。还有最后一件事。不清楚您是否实际上是否需要一个接口。是否有其他类实现此接口?如果只是一个类,则可能甚至不需要继承。
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()); } }