在代码执行上创建新类

时间:2011-04-01 10:52:10

标签: java class singleton

尝试使代码与此主程序一起使用:

// TestClass class ResselerTest {

   public int ValueOfContainer(Object conatiner, carmodel) {        //have to count value of Mazda cars

}




  public static void main(String[] args) {


    Reseller Joe = new Reseller();

                    //name   cash in k's
    Customer John = new Customer("John", 200); 


    John.get(new Ford(5)); // (i) no of cars. John want to buy 5 ford's
    John.get(new Ferrari(5));
    John.get(new Mazda(3));


    ShoppingCart JohnCart = John.getShoppingCart();
    System.out.println("Before payment\n" + JohnCart);

    // Hes paying right now!

    John.pay();

    System.out.println("Paid\n" + John.getShoppingCart());


    System.out.println("John got : " + John.getCash() + " USD");

    // Now we need to pack them into container
    Container JohnContainer = new Container(John);
    janek.pack(JohnContainer);

    // After packing to conainer. 
    System.out.println("After packing to conainer\n" + John.getShoppingCart());

    // Check whats in container

    System.out.println(JohnContainer);

    // Lets see how much John paid for white cars.
    System.out.println("White cars cost: " +
                        valueOf(JohnContainer, "white") );

       } }

// ---------------------------------------------------------------

class Reseller {

  public Reseller() {
    // PriceList Singleton!!!
    PriceList pl = PriceList.getInstance();
    pl.set("Ford", 24);
    pl.set("Ferrari", 120);
    pl.set("Mazda", 9);    //price in k's   }

}

//---------------------------------------------------------------

public class Customer {     String name;    int cash;
            public Customer(String name, int cash)  {this.name = name; this.cash = cash;

    }

    public }

//---------------------------------------------------------------

public class ShoppingCart( {    //public ShoppingCart   // no idea


}


//---------------------------------------------------------------


public class PriceList {        public static PriceList instance = null;    HashMap<String, Integer> prices = new HashMap<String, Integer>();

    public static PriceList getInstance() {         if (instance == null) {             instance = new PriceList();         }       return instance;    }

    public void set(String car, int value){ 

        prices.put(car, value);

    }



        // singleton

    public PriceList() {

            }



}

我的主要问题。 如何让John.get(new Mazda(3));工作<sic!> 以及如何将汽车与颜色联系起来。令人遗憾的是,1辆车有1种颜色(Ferrari => ofc. Red :))

我将感谢你们的帮助。

3 个答案:

答案 0 :(得分:0)

看来get()不起作用,因为你还没写过这个。我建议你尝试编写这种方法(至少是声明)

看来你需要一个将Car和Color联系起来的结构/类。

我建议你使用camelCase作为变量名。

答案 1 :(得分:0)

我认为您的对象模型存在一些问题。

  • 您似乎每个车型都有一个班级。我认为需要成为一个单一的Car类,它具有“模型”,“颜色”,“价格”等属性。

  • 似乎(例如)Ferrari的一个实例应该代表一些汽车,而不是一辆汽车。

我不打算告诉你如何实现这一点,因为它看起来像是我的家庭作业。

答案 2 :(得分:0)

嗯,首先要明确面向对象的概念。什么是汽车关系。

其次,John.get(new Mazda(3))不是一个非常好的计划。方法名称应指明它们的作用。这里get方法用于实际设置该客户的购买。当我们打电话给John.get(new Mazda(3))时,约翰买了3个马兹达斯。这种理解是否正确?

OOP的优势在于我们可以在我们的程序中映射现实世界的实体并以现实世界的术语进行交谈。因此makePurchase(..)submitOrder(..)checkOut(..)之类的内容会有意义。

人们常说编程语言有助于我们思考。 (有时他们限制我们的想法:))

此外,一个好的OO设计会说像Customer类有一个方法: checkOut(Set cars)代替

checkOut(Honda[] hondaCars)

这有帮助吗?