首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写组合使用接口和单独类的Java方法

编写组合使用接口和单独类的Java方法
EN

Stack Overflow用户
提问于 2014-04-12 21:40:25
回答 2查看 398关注 0票数 1

这是一个使用Java接口的任务。总共有3个类和一个接口:SellerSellerImplSellerTestDriverProduct。我将在SellerImpl类中实现Seller接口,并用我在SellerTestDriver类中编写的代码测试输出。到目前为止,只有一种方法给出了我想要的结果-- getName()。其他方法似乎调用了Product类,但我一直无法编写任何可以工作的代码。我想要的是要读取的方法:

name - Baker (它已经这么做了);

product -面包;提供产品-真;

sellProduct() -只是一行概述卖家和产品的文本。

任何帮助都将不胜感激!

Seller接口:

代码语言:javascript
复制
     public interface Seller
{
public String getName();
public Product getProduct();
public boolean provideProduct(String productName);
public Product sellProduct();
}

SellerImpl类:

代码语言:javascript
复制
    public class SellerImpl implements Seller
{
protected String name;
protected Product product;

// TODO: Complete this constructor
public SellerImpl(String name, Product product)
    {
    this.name = name;
    this.product = product;
    }

// TODO: Complete these methods 
public String getName()
    {
    return name;
    }

public Product getProduct()
    {
    return product;
    }
public boolean provideProduct(String productName)
    {
    if (productName.length() == 0) {
    return null != null;
    }
    else {
    return true;
    }
    }


public Product sellProduct()
    {
    return product;
    }

}

SellerTestDriver类:

代码语言:javascript
复制
    public class SellerImplTestDriver
{
    public static void main(String[] args)
        {
        Seller seller = new SellerImpl("Baker", new Product("Bread", 1.95));
        // TODO: Write a test for the getName() method
        System.out.println("Seller is a: " + seller.getName());

        // TODO: Write a test for the getProduct() method
        System.out.println("Seller offers: " + seller.getProduct());

        // TODO: Write a test for the provideProduct() method
        System.out.println("Does this seller supply this item? " + seller.provideProduct("Bread"));

        // TODO: Write a test for the sellProduct() method
        System.out.println(seller.getName() +" sells " );           }

Product类(我根本没有被指示去接触它):

代码语言:javascript
复制
    public class Product
{
protected String itemName;
protected double itemPrice;

public Product(String name, double price)
    {
    itemName = name;
    itemPrice = price;
    }
public String getName()
    {
    return itemName;
    }
public void setName(String itemName)
    {
    this.itemName = itemName;
    }

public double getPrice()
    {
    return itemPrice;
    }
public void setPrice(double itemPrice)
    {
    this.itemPrice = itemPrice;
    }
}

我目前的结果是:

卖家是:贝克-我喜欢这个,它是正确的。

卖家优惠: seller.Product@7a3e72

这个卖家提供这种商品吗?错误

买家将购买seller.Product@7a3e72

EN

回答 2

Stack Overflow用户

发布于 2014-04-12 21:49:29

有了这个:Product@7a3e72

您将看到由Product方法返回的字符串,该方法继承自Object,它是所有toString()类的父类。这个来自Object的默认toString()方法显示类名、@符号和对象的hashCode,所有类都会自动继承此方法,除非它们或它们的某个父类选择覆盖它。

要解决这个问题,您只需这样做:为您的Product类提供一个像样的public String toString()覆盖方法,该方法返回一个完全描述Product状态的字符串。您的toString()方法可能会同时返回产品的名称和价格。类似于:

代码语言:javascript
复制
@Override
public String toString() {
  return "Product: " + name + ", " + price;
}

或者更好,

代码语言:javascript
复制
@Override
public String toString() {
  return "Product: " + name + ", " + currencyFormat.format(price);
}

其中,decimalFormat是使用货币实例的NumberFormat变量:

代码语言:javascript
复制
private NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
票数 3
EN

Stack Overflow用户

发布于 2014-04-12 22:07:36

让我们来看一下高层。您不希望seller类的实现有一种方法来保存多个产品,并拥有每个产品的清单吗?(因此,SellerImpl类应该保留一个产品列表和每个产品的库存计数。也许provideProduct意味着您必须查看产品列表,看看您是否有正确的产品名称和库存>1(这是真的);sellProduct类将把产品返回给用户并减少库存数量?

  • Seller ..好的..。
  • Seller ..实现正常,测试错误。您想要获取产品,然后查看产品的名称是否与“面包”匹配。像

这样的东西

theProduct = seller.getProduct();theProductName = theProduct.getName();theProductPrice = theProduct.getPrice();

然后测试一下产品名称和产品价格是否符合您的要求

  • Seller ..难道你不想测试一下卖家的产品是否具有特定的价值吗?您正在测试输入参数。您想要类似于SellerImpl类中的内容

如果(productName == null)返回product.getName().equalsIgnoreCase(productName);返回false

  • sellProduct看起来没问题,但请记住进行测试,确保返回值不为空,并且名称和价格符合预期。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23031131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档