UML面向对象建模与设计之状态模型

我们很幸运有一个高手级的老师,也是我大学比较佩服的一个老师(个人戏称“恩师”),是他给我们讲<<UML面向对象建模与设计>>。这门课大家都认为比较抽象,我也是这样,但是我还是认为这是一门很有必要学好的课程。它建立与一切编程语言之上,用网上的一句话来说 UML到底是干什么的呢?就是表达一切所不能表达! 这个解释太过抽象,我也不是什么高手,但是内心深处还是觉得是有一定道理的。我们这位老师就是一个架构级别的专家,从他身上看到的不是语言的点点滴滴,而是架构级别的东西。听他的课,不仅是学习就连你对人生的认识也会有很大的不同,因为你会站到一个更高的角度来看待问题,这个角度不再是任何编程语言,而是语言无关的!

好了,发了太多的感慨,无非想要感谢恩师!因为我觉得他的做人人格和个人魅力是我们计科都应当学习的!

具体看看与题目有关的内容--状态模型:

今天恩师给我们上习题课,令我很有感触,在此和大家分享一下.

UML面向对象建模与设计之状态模型

上面是书上的原题,但是老师给我们修改了一下,没有给出类模型,让我们先画类模型再画状态模型,大家也不妨试一下!

首先看看类模型,类模型是反映领域知识的,我们可以借助于在数据库中的E-R模型来抽象。

我们可以发现几个类:首先是选手,其次是比赛,再就是回合。这中间当然会由选手和比赛之间产生一个关联类。

UML面向对象建模与设计之状态模型

我绘制了一下类图,和题目提供的答案基本一致。

下面我们共同看一下状态图,状态图就比较难把握了,但是也正是这一题要做的。

状态图总的来说要要麻烦一点,特别是对这一题来说,用老师的话说网上很多人以及很多培训班都在说状态图,而且他们提供的也一般一下子就能看出来,但是事实上有时候要找出状态是很困难的。我们平时有太多的东西太熟悉了就不去追求本质了,像这样一个题目,要求你绘制状态图,试问有几个人可以很快把握?

还是一块来看看吧!

状态建模最重要的就是要找出状态,我们从以下几点分析:

1.这是有结束和终止状态的

2.状态抽象

2.1分为试打和正式比赛

2.2正式比赛分为:甲发球和乙发球

2.3正式比赛也可以分为:击球、计分和决定发球权

好了,我们不再一一分析了。

状态图到底是什么样的,根据这道题的描述,要想反映其本质2.2的状态划分是没有意义的,那么看看正确答案。

UML面向对象建模与设计之状态模型

看一下这个图,不知道有没有很多人看到这道题就很快能够绘制出来,我想至少不会那么快吧。状态模型是很有用的,因为我们一旦建立好了状态模型,再利用状态模式就能够很快构建出一个稳定的模型。