首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

(高分相求)用java描述三个故事,要求有极高的重用性,可扩展性

2011-12-05 
(高分相求)用java描述三个故事,要求有极高的重用性,可扩展性。近段时间做java的教学工作,想用java描述下面

(高分相求)用java描述三个故事,要求有极高的重用性,可扩展性。
近段时间做java的教学工作,想用java描述下面三个故事,要求有极高的重用性,可扩展性。能让学生体会面向对象的封装,继承,多态等特点。最好用上设计模式,加强可扩展性;便于引导学生进一步学习。



唐僧四人坐飞机去旅游,途中飞机失事,可是降落伞只有三把.
于是,唐僧说了,大家来答题,答不出来的跳下去.
唐僧:悟空,天上有几个太阳呀?
悟空:一个.
唐僧:好,给你一把.
唐僧:沙僧,天上有几个月亮啊?
沙僧:一个.
唐僧:好,也给你一把.
一旁的八戒好开心,这么简单的问题.
唐僧:八戒, 天上有几颗星星啊?
....
八戒跳了下去.
 
没过多久,他们四人又坐飞机去旅游了.途中又失事,降落伞还是只有三把.
他们又继续回答问题.
唐僧:悟空,中华人民共和国什么时候成立呀?
悟空:1949年.
唐僧:好.给你一把.
唐僧:沙僧,解放战争,死了多少人啊?
沙僧:250万人.
唐僧:好,也给你一把.
唐僧:八戒,那250万人的名字是什么呀?
......八戒又只好跳了下去.
 
第三次,他们四人又坐飞机去旅游了,途中又出事故了.
这时候,八戒说到:师傅,你不用问了,我自己跳.
然后就纵身一跳.
唐僧合手:阿弥陀佛,这次降落伞有四把


[解决办法]
可以加入命令模式
[解决办法]
我给举个通俗易懂的例子,我只说封装,
你可以给他讲购物的例子,

买的商品就相当于是类中的属性
 
而购物袋就相当于是一个类

购物袋把商品封装起来,提着购物袋,就把商品都提走了,

这就是封装!
[解决办法]
这里可以定义一个师傅类型,师傅里面有有个出题方法,这个方法返回为题的答案。
再定义一个徒弟的超类,这个超类有3个方法,回答问题,返回值时回答的答案,拿到降落伞跳下去,直接跳下去,
然后定义三个子类继承与超类,
在主函数里用命令模式调用这些类的对象的方法。
[解决办法]
八戒那最后一跳。可以理解为方法的继承。由于师傅还没重写飞机出事故后的应对方法,八戒就去调用了那个方法。结果就调用了父类里的应对方法,也就是不带降落伞跳下去的应对方法。
[解决办法]
其实这四人种起码三个人都能飞的,就算唐僧不会飞,难道三个人都扛不动?O(∩_∩)O哈哈~
[解决办法]

Java code
package selfimpr.simulate;/** * 人 * @blog http://blog.csdn.net/lgg201 * @author 雷果国 * @mail lgg860911@yahoo.com.cn */public class Person {    private String name;        public Person() {            }    public Person(String name) {        this.name = name;    }        public void say(String msg) {        System.out.println(name + ": " + msg);    }        public void jump() {        System.out.println(name + ": Oh, my friends, byebye.");    }        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}
[解决办法]
貌似做成那种RPG的比较有意思,比如控制台出现一个问题,出现一些答案选项,回答正确了故事向后发展。。。
[解决办法]
class 师傅
{public ask(String ask);
}
class 徒弟
{
public answer(String answer);
public skip();
}
孙猴 extends 徒弟
沙僧 extends 徒弟
八戒 extends 徒弟

然后根据你的问答过程,调用函数。呵呵。
[解决办法]
可用工厂模式进行故事重复述

[解决办法]
探讨
引用:
唉, 写的很不成气.......各位见笑了....几乎没有面向对象的思想.....汗颜....

多谢!

我觉得你应该将问题的问和答做成表格,或者放到数据库中。
孙悟空是猴子,猪八戒是猪,猴子和猪都是动物;唐僧和沙僧是人。这样才达到讲解继承的用法啊。
对吗?

[解决办法]
觉得设计时应考虑:
1.降落伞的个数应该等于问题可解决的个数。
2.各个徒弟的属性中要设置:碰到的问题的无法解决的个数 这个属性
3.各个徒弟的属性中要设置:心理承受能力,也就是说“碰到的问题的无法解决的个数”>=“心理承受能力”那么心理就崩溃,不接受师傅的提问就跳下,以上用例 猪八戒的心理承受能力是2;可以设置孙悟空的心理承受能力是3,那么当孙悟空碰到3次无法解决的问题后就直接跳下。
4.。。。。。
[解决办法]
写了一个实例代码,基本包括了对象的封装,继承,多态等特点,还运用了模版模式。
楼主可以看看。。
就故事来看。
唐僧,孙悟空,沙僧,猪八戒,降落伞等对象。而孙悟空,沙僧对象的行为基本一致,可以是同个类的实例对象。唐僧作为师父可以具有的行为时问问题,给降落伞,可以写一个基类来继承。
孙悟空,沙僧,猪八戒 作为徒弟,具有共同的行为就是 回答问题,跳伞。 因为也可以写一个基类来继承。而孙悟空与沙僧,猪八戒 之间又有差别。因此他们的派生类的可以实现各自的具体行为。


本例之所以采用模版模式,整个事件是回答问题,然后跳伞整个过程。将这个过程抽象了,要怎样的回答额外难题,怎样的跳伞可以留给子类去具体实现。这样可扩展。
纯属个人理解。有不对的地方可以指出,大家互相学习。。
 

Java code
 package ts_story;import java.util.LinkedList;/** * 师父基类 * @author wangek  */public abstract  class Master {    protected String name;    public  static int index=0;    public    LinkedList parachutes=new LinkedList();    protected Master(String name,int count){        this.name=name;        init(count);    };    /**     * 提问     */    public abstract  void quetion(String que);        public void init(int count){        for(int i=0;i<count;i++)            parachutes.add(new Parachute(i+1));        System.out.println(name+"有 "+count+"把降落伞");            }    public Parachute giveParachute(){        Parachute    res=(Parachute)parachutes.getFirst();        parachutes.removeFirst();        index++;        return res;        }}
[解决办法]
很好的一个老师,很好的一个题目,每个学生的看法都是不一样的,也就通过这个事例认识到了各自认为的封装,继承与设计模式的思想,锻炼了学生的变相与扩展思维,仔细分析了楼上的各位解释,受教了。
[解决办法]
唐僧四人坐飞机去旅游,途中飞机失事,可是降落伞只有三把. 
于是,唐僧说了,大家来答题,答不出来的跳下去. 
唐僧:悟空,天上有几个太阳呀? 
........
飞机失事了才答题,应该来不及啊,答完题估计飞机都掉入太平洋了,呵
还有,第一次旅游时,八戒跳下去了,从半空中跳下去,应该非死也半废了呀,没想到第二次旅游还能看到他,哈
还有,这三徒弟不是都能飞吗?理论上用一把降落伞足矣啊(这伞留给师傅)
........

不好意思,扯远了,也离题了,不过,本题的构思还是有创意的,支持下.如果故事情节编得更合理些的话,就更好了.

[解决办法]
我觉得楼主的想法挺好的,但恐怕没什么学生能够理解!
因为他们接受OO基础(比如封装、继承和多态)都需要用上一段时间。而设计模式是一种思想,没有亲自去实践过,是无法真正能理解的。谈到程序的可重用性和可扩展性,都是只有一定开发经验的人员才会往这个方向去想的。即使对于初学者来说,他们也知道这个理论,但由于开经验不够,往往是只知道应该要这样做,但却不知道该如何去做!
[解决办法]
事件:飞机失事
资源需求:4把降落伞
资源池:3把降落伞

资源分配

4次调用该模块
模块内部调用getAnsByQuestion(Question q)解决资源分配问题。

热点排行