一个很简单的数学问题

我老婆去市场买菜,她8块钱买了一只鸡。
回来的路上,她同事想买她的鸡。于是我老婆9块钱把鸡卖给了同事。
后来她想中午我想吃鸡,又找到同事,10块钱买了回来。
到了家门口,邻居来了客人,少了菜,一定要我老婆把鸡卖给他,我老婆又11块钱卖给了邻居。
问:我老婆赚了多少钱?

-----------------------------------

第一步就是收集信息,“老婆,市场,鸡,路上,同事,钱,中午,家门口,邻居”,问题是老婆赚了多少钱。

第一步的结果会出现很多我们不知道它有没有用的信息,这需要第二步去筛选。其中老婆,市场,同事,邻居是关键的对象,鸡和钱是个通信信息,路上,中午,家门口是无用信息。关系是:老婆和市场,同事和老婆,老婆和同事,邻居和老婆的购买关系。

到这一步,只要按照顺序写程序的步骤就能得到具体问题的答案。

第三步,老婆,市场,同事,邻居其实是一类东西,除了名字不同(标识不同或对象不同),他们都是懂得买和卖两种操作的类型。因此可以把四个关系参数化为一个关系:交易(买家,卖家)。然后只需要定义4个对象便可:

交易类型 老婆,市场,同事,邻居。

交易(老婆,市场);

交易(同事,老婆);

交易(老婆,同事);

交易(邻居,老婆);

输出(老婆);

第一步,老婆-8;

第二步,老婆+9;

第三步,老婆-10;

第四步,老婆+11;

结果是赚了2块。

如果还想输出其他对象赚了多少,也可以援用老婆的输出函数。这就是我们用了对象方法去参数化的好处。如果没有这一步,就需要分别写4个交易的具体代码。

 

代码如下:

package com.one;

public class One1 {
int shichang;
int laopo;
int tongshi;
int linju;
int result;
public One1(int shichang,int laopo,int tongshi,int linju){
this.shichang=shichang;
this.laopo=laopo;
this.tongshi=tongshi;
this.linju=linju;
}
void suanfa(){
result = shichang+laopo+tongshi+linju;
System.out.println("老婆最后赚了:"+result);
}
void diyibu(){
System.out.println("老婆在市场上买了只鸡,价钱为:"+shichang);
}
void dierbu(){
System.out.println("同事买了老婆那只鸡,价钱为:"+laopo);
}
void disanbu(){
System.out.println("老婆又买了那只鸡,价钱为:"+tongshi);
}
void disibu(){
System.out.println("邻居因急事买了老婆的那只鸡,花了:"+linju);
}
public static void main(String args[]){
One1 one = new One1(-8, 9, -10, 11);
one.diyibu();
one.dierbu();
one.disanbu();
one.disibu();
one.suanfa();
}
}

 

posted @ 2012-03-19 13:08  一直向北  阅读(160)  评论(0编辑  收藏  举报