让我粘贴我的整个问题。并且请考虑我的英语,我在这方面有些虚弱。

问题:一个根据收到的销售订单进行分派的分派系统
根据订购的物品包装正确的物品。假设商店正在出售富含艺术品的古董。这些艺术品
可以归类为“易碎品”。两种类型的易碎物品是
在商店中出售的是“陶器”和“玻璃器皿”。每个项目都需要与适当的捆绑在一起
包。捆绑有两种类型:“气泡包装”或“缓冲”。对于易碎物品
完成气泡包装,并使用非易碎物品“缓冲”。
然后,您需要创建一个ARTITEM类,该类具有艺术品的ArrayList和一个Dispatcher,以打包不同类型的artitem对象,这些对象可以被标识为易碎的。 Salesorder是我们的演示类,它将使用Dispatcher打包商品?

我有一个Artpiece.java接口。我有ArtItems.java类,并且已经在ArtItems中实现了Artpiece.java对象。

我的问题是,我需要从Artpeice的ArrayList中添加项目,Artpiece基本上会存在易碎的项目。 example [addItem(Artpiece artpiece)],那么我需要设置从getCost()方法获取总价。然后显示其中的易碎物品。

我不知道如何从ArrayList获取值。每当我尝试存储在数组列表中时,都会出现错误。

请在下面查看我的编码:

//Artpiece.java
interface Artpiece{
    public String name();
    public Bundling bundling();
    public float price();

}

//Bundling.java
interface Bundling{
    public String bundle();
}

//Cushioning.java
public class Cushioning implements Bundling{
    //Override
    public String bundle() {
        return "Cushioning";
    }
}


//BubbleWrap.java

public class BubbleWrap implements Bundling{
    public String bundle() {
        return "BubbleWrap";
    }

//ArtItem.java
import java.util.ArrayList;
public class ArtItems implements Artpiece{

    ArrayList<Artpiece> artpiece = new ArrayList<Artpiece>();

    artpiece.add(void price());

    //Override
    public String name() {

        return "Pottery";
    }

    //Override
    public Bundling bundling() {

        return null;
    }

    //Override
    public float price()
    {
        return 25;
    }

    public float getCost()
    {
        int sum=1, total = 0;
        return total += sum;

    }

    public void addItem(Pottery pottery)
    {


    }
    public void addItem(GlassWare glassWare)
    {


    }

    public void showItems() {


    }



}
}

//Now I am posting the driver classes.

//Dispatcher.java
public class Dispatcher {
      public ArtItems prepareFGitem(){
      ArtItems artitems = new ArtItems();
      artitems.addItem(new Pottery());
      artitems.addItem(new GlassWare());
          return artitems;
      }
}

//Salesorder.java
 public class Salesorder {
   public static void main(String[] args) {
     Dispatcher dispatcher = new Dispatcher();
      ArtItems FGartitem = dispatcher.prepareFGitem();
      System.out.println("Fragile Items");
      FGartitem.showItems();
      System.out.println("Total Cost: " +FGartitem.getCost());
   }
}

最佳答案

为什么ArtItems实现Artpiece?从逻辑上讲,您对待的每个项目都应实施ArtPiece,而不是ArtItems,在此您威胁项目的集合。这就像说仓库在实施货架。

在添加到数组列表时,必须添加Artpiece类型的项(或实现Artpiece的类),然后在add方法内创建一个方法,该方法实际上不起作用,artpiece.add(price())会更有道理,但除非price()实际上返回艺术品,否则在逻辑上是不应该的,否则仍然无法使用。

09-27 11:16