大家好,本周呢我们
主要是想给大家介绍一个完整的面向 对象分析和设计的一个小的一个例子。
然后通过这个例子呢 我们把以后大家要学的分析、
设计的一些知识点给大家 简单地提一下,然后这个激发大家 学习的一个兴趣。
这个例子呢其实是个非常简单的 一个关于这个Java
JDK编写的一个 纯Java的一个这么一个空战游戏的一个分析、 设计。
我们介绍一下 这个在这个分析、
设计的过程中所用到的所有的模型,以及在建立模型的时候呢 需要注意的一些知识点。
但是我们这个例子本身是很小的一个例子 所以我们在讲完课程之后呢还有
好几个比这个例子要大得多的一些案例。
这个例子呢有些 知识点我们在这个例子中体现不出来,我会给大家说一下,但是
后面的一些案例呢我们这个将会更加丰富地体现本课程的一些知识点
所以呢我们这个课程呢,这个分为这几个过程,也就是体现我们这个整个课程的
主要的一些章节,分别是:需求分析、 系统分析、 系统设计以及 系统实现。
我们重点介绍前三个部分,就是我们通过这个 一个实例先给大家呢介绍一下
课程中所推荐的一些这个分析、 设计方法 因为我们知道面向对象分析方法、
设计方法有很多种,很多流派,前面 这个邵老师也给大家介绍很多。
这个但是我们所用到呢是我们那个 主教材上所介绍的这个
分析、 设计方法,所以呢我们这个通过这个例子呢是让大家体会到 这个分析、 设计的重要性。
另外呢 也就是综合运用我们这个UML,这个统一建模语言进行
建模和编程,以及我们建了模型之后如何将它转化成Java语言或者是其他一些语言,在这- 个过程中呢
这个实际上呢是设计到模型和代码的映射的问题 然后呢,最重要的是呢我们
把这个课程将要介绍的主要的一些知识点 有些尽管不涉及到本课案例,但是呢我们也
要给大家提一下,就是说这个可能有些时候尽管不是当前的这个案例,但是呢我们可以
在其他的案例中呢,还会用到其他的一些知识点。
就是说我们通过这种方式 来提高大家的一个工程实践能力,因为
本身这个案例呢,这个是比较小的一个案例,可能同学觉得这个拿到这个 需求之后可能直接编程序就可以了。
但是呢还可以有另外一个做法,就是先进行这个 分析、 设计,然后当我们设计模型足够完善的时候,我们再
通过一些映射机制来把它转化成代码,这是我们这个 本课程所倡导的。
尽管在当前的这个案例中可能不太需要,但实际上呢作为一个案例 我们如果搞得太大的话呢,这个恐怕不利于同学们一开始理解,所以我们一开始
呢先讲一个非常简单的一个案例,到后来呢我们这个到最后的时候我们再 增加一些案例。
这些案例可能比这个案例要复杂得多,能够体现出来我们这个分析、 设计模型重要性 可能更加完整。
首先我们这个 讲一下这个需求,这个案例呢
其实大家并不陌生,大家小时候啊可能这个
都玩过这个空战游戏,这个比如说这个 1943、
1942之类的这种空战游戏 主要的玩家呢,主要就是操纵一个小飞机,然后呢,这个飞机可以发射子弹啊是吧,可以
接油啊,然后可以还有其他的一些补给,补给品 然后呢跟若干个飞机进行作战,然后呢当我们这个
飞机这个发现这个它 它呢发射子弹的时候这个可以这个消灭敌机,然后呢这个
当敌机也可以向我这个飞机发射子弹。
当我的生命值 这个每发射一个子弹如果我这个飞机跟 子弹发生一个碰撞之后呢,它就会,生命值就会相应地减少一个
数值,当我的生命值减少到0的时候,那这个飞机可能就爆炸了,这个game over就
然后那个,还有一些油,当我走到一定程度时候呢需要加油,如果不加油的话,这个飞机- 也会爆炸 这个。
另外呢就是说我子弹用光的时候我需要加油
加一些子弹箱,然后这个子弹箱这个加完之后呢,可以这个使得我这个子弹可以进一步
延续,否则的话我就没法打子弹,只能躲闪。
主要是这么一个小的一个 游戏的这么一个需求。
当什么时候胜利呢?当我们的单 单位时间内我们把这个所有的飞机全部消灭光,然后呢它就会胜利。
但是呢 为了提高难度,如果你在一定的时间没有把所有的飞机消灭光,这个
系统会自动地进行敌机的补给,这样的话会 增加游戏难度。
就说你尽管消灭到几个飞机之后,然后呢这个 后来这个又补给上之后呢,还得重新来。
就是大概这个 需求的这个描述,并且呢我们为了便于玩家在
有些时候在中断游戏时候,还要保存当前的游戏状态,所以呢我们要
保存游戏,在任何时候,在玩到任何状态的时候都要进行保存游戏,并且呢在
需要以便在适当时机呢进行恢复,这是这个需求
就是说我们这个得到这个需求之后呢 大家就会考虑,到底是直接编程呢还是进行建模这个
有些同学呢比较喜欢这个直接,根据这个需求直接编程了。
但是呢 实际上我们尽管这个例子非常小,但是我们也可以看出这个
在有些特别是一些业务方面 如果说你一开始没有真正搞明白这个用户的业务
要求或者需求的话,你直接编程的话呢 最后你编一些代码是没有用的,还得重新来。
这个用户看到不满意的时候呢还会 这个要求你重新编写,这样的话呢这个时间还会 这个编程时间会大大地延长。
另外这个设计方案,我们这个游戏本身呢 因为我们不是用很多的一些这个引擎啊,游戏引擎,所以呢
这个我们从头到尾地编,所以很多一些设计方案如果不在 开发之前,编写程序之前呢给它
用模型的方式进行验证,或者说大家进行交流,完整地这个描述
非常那个,一个非常合理的一个设计方案的话,那么如果我们盲目地编写程序,这样的话呢
最后编写出来这个程序的效果,特别是游戏,它对时间的要求啊
对实施性的要求,对这个界面的流畅性要求都是非常高的,这样的话呢会造成用户 不满意。
如果那时候我们再重新推倒这个
编写的这些代码推倒重来的话,那就是这个时间呢也是会大大地延迟。
所以 尽管我们这个项目非常小,一个人就可以开发完毕,但是呢
我们仍然有必要建立模型,然后通过模型来驱动我们进行实现。
这个后面我们 会这个通过实际的一些技术问题,我们会更加明确
这个下面呢我们就开始我们这个 整个这个分析、 设计工作