让我粘贴我的整个问题。请考虑我的英语我有点弱。
问题:按照收到的销售订单发送的调度系统 根据订购的物品需要适当包装的物品。假设商店出售富有艺术品的古董物品。这些艺术品 可以归类为'FRAGILE'项目。两种易碎物品是 在商店出售的'陶器'和'玻璃器皿'。每个项目都需要与适当的捆绑 包。捆绑有两种类型:'BubbleWrap'或'Cushioning'。对于易碎物品 完成泡沫包装并使用非易碎物品“缓冲”。 然后,您需要创建一个具有Artlist的ArtList和Dispatcher的ARTITEM类,以打包不同类型的artitem对象,这些对象可以被认为是脆弱的。 Salesorder是我们的演示类,它将使用Dispatcher打包artitem?
我有一个Artpiece.java界面。我有ArtItems.java类,我在ArtItems中实现了Artpiece.java对象。
我的问题是,我需要在Artpeice的ArrayList中添加项目,Artpiece基本上会有脆弱的项目。例子[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());
}
}
答案 0 :(得分:0)
为什么ArtItems会实现Artpiece?从逻辑上讲,您处理的每个项目都应该实现ArtPiece,而不是ArtItems,您可以在其中威胁一组项目。这就像是说仓库实现了货架。
当添加到arraylist时,你必须添加Artpiece类型的项目(或实现Artpiece的类),你正在add方法中创建一个方法,这实际上不起作用,artpiece.add(price( ))会更有意义,但除非price()实际上返回一件艺术作品,否则它仍然不会有效,从逻辑上说它不应该。(/ p>
答案 1 :(得分:0)
感谢各位的贡献。在对自己做了一些研究之后,我自己解决了这个问题:你可以参考我发布的答案,它是100%正常工作。编码如下:
//Artpiece.java
interface Artpiece{
public String name();
public Bundling bundling();
public float price();
}
//BubbleWrap.java
public class BubbleWrap implements Bundling{
public String bundle() {
return "BubbleWrap";
}
}
//Bundling.java
interface Bundling{
public String bundle();
}
//Cushioning.java
public class Cushioning implements Bundling{
//Override
public String bundle() {
return "Cushioning";
}
}
//FGItem.java
abstract class FGItem implements Artpiece{
public Bundling bundling() {
Bundling b = new BubbleWrap();
return b;
}
public abstract float price();
}
//GlassWaare.java
public class GlassWare extends FGItem{
//Override
public String name() {
return "GlassWare";
}
//Override
public float price() {
return 160;
}
}
//Pottery.java
public class Pottery extends FGItem{
//Override
public String name() {
return "Pottery";
}
//Override
public float price() {
return 25;
}
}
//ArtItems.java
import java.util.ArrayList;
public class ArtItems implements Artpiece{
float sum = 0;
ArrayList<Artpiece> item = new ArrayList<Artpiece>();
//Override
public String name() {
return name();
}
//Override
public Bundling bundling() {
return bundling();
}
//Override
public float price()
{
return price();
}
public float getCost()
{
for(int i=0; i<item.size(); i++)
{
Artpiece art = item.get(i);
sum += art.price();
}
return sum;
}
public void addItem(Artpiece artpiece)
{
item.add(artpiece);
}
public void showItems()
{
for(int i=0; i<item.size(); i++)
{
Artpiece art = item.get(i);
System.out.println("Item: " + art.name() + " Packaging " + art.bundling().bundle() + ", Price: " + art.price());
}
}
}
//Dispatcher.java
public class Dispatcher {
public ArtItems prepareFGitem(){
ArtItems artitems = new ArtItems();
artitems.addItem(new Pottery());
artitems.addItem(new GlassWare());
return artitems;
}
}
//Salesorder.java This is the driver class
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());
}
}