愿景
用户:
游戏玩家
目标(度量指标):
游戏玩家和电脑对战,模拟21点游戏
业务建模
该程序不涉及到其他组织,所以省去业务建模
需求建模-用例
流程:
1.玩家单击界面 开始游戏。给玩家和庄家发牌
2.玩家可以选择要牌,玩家要一次,轮到庄家要牌。然后轮到玩家,如此轮流要牌。玩家和庄家都可以决定是否要牌。当玩家不再要牌,逻辑上就以为着结束。
3.玩家界面上单击结束。判定玩家和庄家胜负。胜负按照21点的规则来。
1.其中,发牌的用例比较简单,就是给玩家和庄家随机发牌。
2.要牌的话,其实可以拆分出来判断是否要牌的用例。如果判断可以要牌,则请求给自己发一张牌,就是跳转到发牌的用例。如果是不能要牌,则结束这个用例。
而是否可以要牌的判断,玩家和庄家都有不同的判断条件,比如玩家是否要牌,是靠自己判断的,而庄家是需要自己随机决定的。所以绘制了活动图。
3.判断胜负。玩家和庄家的不同的数据状态对比,决定谁赢谁负。所以绘制了活动图。
分析
1.第一步分析出需要建立的类
分析时,按照两种方式来分析,一种是执行者,一种是管理者
执行者:玩家和电脑玩家,通过对比,两者在要牌的时候行为不一样,所以玩家和庄家作为两个类。为了代码复用,一种可以提供一个要牌的接口,让两个类都分别实现。另外一种是让庄家继承玩家,虽然概念上,庄家和玩家不是一类,庄家也不是一个玩家,但是从代码复用的角度来讲,在这里,如此设计,就足够了。
管理者:封装给执行者发牌、判定玩家和庄家胜负的逻辑
所以如下进行设计
源码最后统一上传