日期:2014-05-20  浏览次数:20869 次

(高分相求)用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.。。。。。
------解决方案--------------------
写了一个实例代码,基本包括了对象的封装,继承,多态等特点,还运用了模版模式。
楼主可以看看。。
就故事来看。
唐僧,孙悟空,沙僧,猪八戒,降落伞等对象。而孙悟空,沙僧对象的行为基本一致,可以是同个类的实例对象。唐僧作为师父可以具有的行为时问问题,给降落伞,可以写一个基类来继承。
孙悟空,沙僧,猪八戒 作为徒弟,具有共同的行为就是 回答问题,跳伞。 因为也可以写一个基类来继承。而孙悟空与沙僧,猪八戒 之间又有差别。因此他们的派生类的可以实现各自的具体行为。