




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于篮球赛过程的 程设计说明书 一 类建模 (一)发现类: 类代表的是领域知识中的词汇和术语。同客户交谈,分析他们的领域知识,设计用来解决领域中的问题的计算机系统,同时也就是在学习这些领域词汇,并用 的类建立这些领域词汇的类模型。 在与客户的交谈中,要注意客户用来描述业务实体的名词术语。这些名词可作为领域模型中的类。还要注意你听到的动词,因为这些动词可能会构成这些类中的操作。当得到一组类的核心列表后,应当向客户询问在业务过程中每个类的作用。他们的回答将告诉你这些类的职责。 假设你是一个系统分析员,要建立篮球比赛模型,现在你正在会见一名教练员来了解比赛规则情况。谈话的过程可能如下: 分析员: “ 教练,请大致介绍一下篮球比赛。 ” 教练员: “ 比赛的目标是要把篮球投入蓝框并且要尽量比对手得更多的分。每个篮球队由 5 名队员组成:两名后卫、两名前锋和一名中锋。每个队要将球推进到篮框附近,目的是将篮球投中篮框。 ” 分析员: “ 如何将球推进 ?” 教练员: “ 通过运球和传球。但是某一方篮球队必须在规定的进攻时间内投篮。 ” 分析员: “ 规定的进攻时间 ?” 教练员: “ 是的,在某一方获得控球权后,必须在规定的 进攻时间内投篮。美国职业篮球比赛是 24秒,国际篮球比赛是 30秒,美国大学篮球比赛是 35秒。 ” 分析员: “ 如何计算篮球比赛得分? ” 教练员: “ 三分线之内每投中一坎篮柜得两分,三分线之外投中一次得三分。一次罚球得 分。顺便说一下,罚球是对方犯规后判罚的投球。如果某一个队员犯规,则比赛暂停,由被侵犯的队员在罚球线处罚球。 ” 教练员: “ 国际比赛场地为 28 米长、 15 米宽。蓝框离地面 高。在美国职业篮球比赛中,一场比赛为 48 分钟,分为 4 节,每节 12 分钟。在美国大学和国际比赛中,一场比赛 40 分钟,分为上下两个 20 分钟的半场。有专门的比赛时钟记录比赛还剩下多少时间。 我们现在停止说明这些对话,来看看谈话的内容。下面是在对话中发现的名词:篮球 ( 篮框 ( 篮球队 ( 队员 ( 后卫队员 (前锋队员 ( 中锋 ( 投球 ( 进攻时间时钟 (三分线 ( 罚球 ( 犯规 ( 罚球线( 球场 ( 比赛时钟 ( 还有 些动词:投篮 ( 推进 ( 运球 ( 传球 (犯规 ( 抢篮板球 ( 可以得到上述名词的一些附加信息 例如每个位置的队员的相对高度、篮球场大小、进攻时间以及比赛时间。 最后,根据常识可以为这些类建立一些属性和操作。例如,通常球类都有体积 (直径 (属性。 使用这些信息,可以建立一个如下图所示的图。它说明了领域中的类,并提供了 些属性、操作和约束。这个图也可以表示职责。 + d r i b b l e ( )+ s h o o t ( )+ p a s s ( )+ a d v a n c e ( )- d i a m e t e r- v o l u m eB a l l+ d r i b b l e B a l l ( )+ p a s s B a l l ( )+ s h o o t B a l l ( )+ r e b o u n d ( )+ f o u l O p p o n e n t ( )- n a m e- h e i g h t- w e i g h tP l a y e r (二)类的关系 在第一中所完成的模型中,只有一些代表了篮球运动词汇的类。还缺少类之间的连接方式。回顾上面已经建立的初步模型,就会发现图中并没有说明队员和篮球之间有什么关系,队员是如何组成球队的,或者一场比赛是如何进行的。 联: 当类之间在概念上有连接关系时,这种关系叫做关联 (篮球比赛的初步模型中提供了这样的例子。下面我们来研究篮球比赛中各个类之间的关系。例如,其中的一个关联 队员和球队之间的关联。可以用一个短语“队员为篮球队效力 (来刻画这个关联。关联的可视化表示方法是用一条线连接两个类,并把关联的名字 (例如“ )放在这个连接线之上。表示出关联的方向是很有用的,关联的方向用一个实心三角形箭头来指明。图 联。 一个类和另一个类发生关联时,每个类通常在关联中部扮演着某种角色。可以在图中靠近每个类的地方的关联线上标明每个类的角色。在队员和球队的关联中,如果球队是职业篮球队,那么它就是队员的雇主 (队员就是球队的雇员 (简略后的图 明了如何表示出这些角色。 关联从另 个方向发生:篮球队雇佣 (员。可以把这两个方向上的关联表示在一个图中,用实心三角形箭头指明各自关联的方向,如图 示。 将 几个类可以连接同一个类。 现在开始设计 和之间的关联,将会得到如下图 示的关联图。 + d r i b b l e B a l l ( )+ p a s s B a l l ( )+ s h o o t B a l l ( )+ r e b o u n d ( )+ f o u l O p p o n e n t ( )- n a m e- h e i g h t- w e i g h tP l a y e r- n a m e- c a p t a i n- o w n e r- h i s t o r yT e a mP l a y o . 1 队 员 与 球 队 的 关 系 系类: 和类一样,关联也可以有自己的属性和操作。此时,这个关联实际上是个关联类。关联类的可视化表示方式与一般的类相同,但是要用一条虚线把关联类和对应的关联线连接起来。关联类也可以与其他类关联。下面设计一下 和 之间的 联对应的关联类: 约 )关联类。它又同时和 经理 )类发生关联(如图 在上面我们设计出来相关类的关联和关联类,已经基本清楚相关类间的关系。正如对象是类的实例一样,关联也有自己的实例。如果我们想象要一个特定的队员效力一个特定的球队,那么两者之间的 n 关系就叫做一个链 (可以用两个对象之间的连线来表示它。和对象的名字要加下划线一样,链的名字也要加下划线,如下图所示。 重性关系 到目前为止,在 和 之间所建立的关联似乎是一对一关系。然而常识告诉我们这并不一定正确。一支篮球队有 5 名队员 (不包括替补队员 )。因此 有 )关联必须考虑到这一点。在另一个方向上,一个队员只能为一支球队效力, 联也必须考虑这 点。 上面说的就是多重性的例子:某个类有多少个对象可以和另一个类的单个对象关联。表示多重性的方法是在参与关联的类的附近的关联线上注明多重性数值。 这个例子所举的多重性并不是唯一可能的类型。实际上存在各种可能的多重性。两个类之间可以是一对一、 对多、 对 或多、 对零或一、一对有限间隔。 用星号 (*)来代表许多 (多个 (在一种语境中,两点代表 )关系,例如“ 1.*”代表一个或者多个。在另一种语境中, 系用逗号来表示,例如“ 5, 10”代表 5 或者 10。下图显示了可能的各种多重性的表示方法。 承和泛化 继承是面向对象术语中, 也称它为泛化。在泛化关系中,子类可以替代父类。也就是说,父类出现的地方,子类都可以出现。但是反过来却不成立。 在 ,用父类到子类之间的连线来表示继承关系。父类连线部分,指向父类的一端带台一个空心三角形箭头。这种连接类型的短语的含义为 is a 于中的一种 )。如图 示。 + . . . ( )- F P l a y e r N P l a y e r N a m P l a y e r S e P l a y e r A g P o s i t i o nF o r w a r d+ d r i b b l e B a l l ( )+ p a s s B a l l ( )+ s h o o t B a l l ( )+ r e b o u n d ( )+ f o u l O p p o n e n t ( )- n a m e- h e i g h t- w e i g h tP l a y e . 8 队 员 间 的 继 承 关 系+ . . . ( )- C P l a y e r N P l a y e r N a m P l a y e r S e P l a y e r A g P o s i t i o nC e n t e r+ . . . ( )- G P l a y e r N P l a y e r N a m P l a y e r S e P l a y e r A g P o s i t i o nG u r a d 其中有 类。 通常有 字 ) 、 身高 ) 、 体重 ) 、 奔 跑 速 度 ) 和直起跳高度 )等属性,以及 、 、 和等操作。 承了这些属性和操作,并且增加了他们自己的一些属性和操作。 另一种可能的情况是系统分析员注意到两个或者多个类可能具有相同的属性和操作数。篮球比赛类模型中有一个 (它负责记录距离比赛停止还剩下多少时间 ),还有一个 (它记录某方得到控球权后还剩下多长时间该方必须投篮 )。因为两者都是用来记录时间,意识到这点后,系 统分析员就能设计出 钟 )类。它具有 个 操作 (计时操作 ),和 都继承了这个操作。 象类 在篮球比赛模型中,刚才提及的两个类 (和 )是很有用的,因为它们是一些重要子类的父类。然而, 两个类将不提供任何模型实例,因为它们的对象派不上什么用途。像这样的类 (不提供实例对象的类 )被称为是抽象的 ( 表明一个类是抽象类的方法是类名用斜体书写。 二状态建模 在前面我们已经比较全面的剖析了系统的对象结构及其相关关系(类模型)。接下来将继续从另一个角度研究此系统,即检查对象及其关系随着时间的变化(状态模型)。 首先我们先研究研究本篮球比赛系统的设计构思“假想图”,在这个图中我们可以看到每一场比赛每个时间发生的“事件”和“状态”。 状态模型描述描述响应外部激励而发生的操作序列,而不是描述操作做了什么,对什么进行操作,或操作是如何实现的。状态模型由多个状态图组成,每个类对应一个状态图,描述对应程序来说是重要的那些时序行为。状态图是一个标准的计算机概念(有限状态机的图形表示法),联系起时间和状态。事件表示外部激励,状态表示对象的取值。 事件是指在某个时刻发生的事情,如本篮球赛比赛系统中,初始化时间( 开始计时( 时间暂停( 进球( 未进球( 、犯规( 换人( 。 状态时对象取值和链接的抽象。根据对象的总体行为,将取值和链接的集合组成一个状态。在 ,状态的表示方法 其中包含可选状态名的圆角方框,现在设计约定是黑体在方框中部列出状态名,首字母大写。如本蓝球比赛系统设计中出现的状态: 球)、 球)、 球)、 球)、 球)、 进球)、意球)等。 状态图的结点是状态,有向弧式状态间的迁移。状态图详细说明了由事件序列引起的状态序列。状态名在状态图的作用域内必须是唯一的。类中所有的对象都执行该类的状态图,状态图会建模对象的公共行为。可以通过直接解释实现状态图,或通过将语义转换成等效的程序代码来实现状态图。 状态模型包含了多个状态图,没各类一个状态图,状态体建模重要的时序行为。状态图必须匹配他们的接口 事件和警戒条件。单独的状态图可以通过传达事件,以及通过警戒条件的副作用进行交互。 事件和状态两者都依赖于抽象的层次。可以用不同的方法刻画状态,这个状态有一个提示性的名称,并用自然语言描述其意图。 进入和退出活动,作为候选方法,要现实在前以上的活动,可以把活动绑定到某状态的入口和出口。两者表示法的表达能力没有太大的差异,所有进入某种状态的迁移经常会执行相同的活动,在这种情况下,更简洁的做法是把活动链接在状态上。 根据图 面我们继续研究一下状态与状态间转变的事件关系图: 从图 们可以清晰的认识到,“接球”状态的状态转换关系,比赛开始通过“发球”事件或是这个时刻计时器 信号,状态会进入接球状态( 比赛过程中,队员与队员间有“传球”,也会自然进入“接球状态”。 R e c e i v e i n g B a l lS h o t t i n g B a l lT i m e r B e g i n ( )P a s s i n g B a l lT i m e r P a u s e ( )s h o t t i n g _ i nT i m e r P a u s e ( )投 球 次 数 + 1 ( )进 球 次 数 + 1 ( )2 分 球3 分 球总 得 分 ( + 2 )总 得 分 ( + 3 )S h o t t i n g _ o u 本 人 抢 到 球 本 人 抢 到 球T i m e r I n i t ( )状态图是另一类 素。这个新类被称为行为元素,它们能够展示 型部件如何随时间变化。事物的一个普遍的现象是随着时间的流逝,都要经历变化。任何计算机系统也是如此。当系统与用户 (也可能是其他系统 )交互的时候,组成系统的对象为了适应交互要经历必要的变化。如果要对系统建立模型,那么模型中必须要反映出这种变化。 三用例图 可视化允许你向用户显示用例,他们能向你提供更多的信息。实际生活中用户常常知道的比他们清楚表达出来的要多,用例能够帮助用户解决这个问题。另外,可视化的表达形式允许将用例图和其他种类的图结合起来。 用例是由参与者发起的,参与者 (也许是发起者,但不是必须的 )能够 从用例的执行中获得有价值的事物。用例模型的图形表示法很直观。用例用一个椭圆形表示,直立人形图标表示参与者。用例的发起参与者在用例图的左侧,接收参与者在用例图的右侧。参与者的名字放在参与者图标的下方,用例的名字可以放在椭圆形里面也可以放在椭圆形下面。关联线连接参与者和用例,并且表示参与者与用例之间有通信关系。关联线是实线,和类之间的关联线类似。 用例分析的一个好处是它能展现出系统和外部世界之间的边界。参与者是典型地系统外部实体,而用例是典型地属于系统内部。系统的边界用一个矩形 (里面写上系统的名字 )来代表。系统 的用例装入矩形之内。 用例图在开发过程中的应用 开发过程从与客户会谈开始。这些会谈可以产生初步类图,它可作为理解系统领域 (也就是要解决的问题的范围 )知识的基础。在了解了客户领域的一般术语后,就可以开始准备与用户交谈了。 与用户会谈开始时谈论领域术语,但是要马上转到用户的术语。会谈的初步成果是能够发现 些参与者以及高层用例,这些高层用例概括地描述了 本图用例的主要内容 1、 发起用例的参与者 用例参与者主要包含以下几个对象: 运动员,计时员,记分员,裁判 2、 用例的前置条件 3、 场景中的步骤 开球,拿到球,传球,投球(进球) 4、 场景完成后的后置条件。 5、 从用例中获益的参与者。 运 动 员 记 分 员计 时 员裁 判开 球- 开 球*- 开 球*- 接 到 球*接 到 球 / 传 球 、 投 球*- 计 时 开 始 / 暂 停*- 投 球 / 传 球*- 投 球 次 数 + 1*传 球运 动 员 到 球*- 接 到 球*- 接 到 球*四顺序图 顺序图由采用通常方式表示的对象组成:对象用矩形框表示,其中是带下划线的对象名:消息用带箭头的实线表示;时间用垂直虚线表示。 对象从左到右布置在顺序图的顶部。布局以能够使图尽量简洁为准。 从每个对象向下方伸展的的虚线叫做对象的生命线 ( 在生命线上的窄矩形条被称为激活。激活表示该对象正在执行某个操作。激活矩形的长度表示 出激活的持续时间。下图显示了对象、生命线和激活的表示法。 消息 , 一个对象到另一个对象的消息用跨越对象生命线的消息线表示。对象还可以发送消息给它自己 也就是说,消息线从自己的生命线出发又回到自己的生命线。 消息可以是简单的 (、 同步的 (或异步的( 简单消息是从 个对象到另一个对象的控制流的转移。如果一个对象发送了 个同步消息,那么它要等待对方对消息的应答,收到应答后才能继续自己的操作。而发送异步消息的对象不需要等待对方的应答便可以继续自己的操作。在顺序图中,简单消息是 个简单箭头,同步消息是实心箭头。异步消息是 个半边箭头,如下图所示。 时间, 顺序图中垂直方向代表时间维,时问流逝的方向为自顶向下。靠近顶部的消息发生的时间要比靠近底部的消息早。 因此,顺序图是两维的。自左至右的维数代表对象的布局,自顶向下的维数代表时间的流逝。下 图说明了顺序图的基本图符集。对象横放在图的项部。每个对象的生命线都是一条从对象向下的虚线。图中的实线与箭头连接另一条生命线并代表对象之间相互发送的消息。人形表示 个参与者,他发起了序列。但严格地讲,参与者的图标不属于顺序图图符集。 序图在对象交互的表示中加入了时间维。在顺序图中,对象位于图的顶部,从上到下表示时间的流逝。每个对象都有一个垂直向下的对象生命线。对象生命线上的窄矩形条代表激活 该对象某个操作的执行。可以沿着对象的生命线表示出对象的状态。 消息 (简单的、同步的或异步的 )用连接对象生命线之间的带箭头连线
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自制设备合同协议书
- 冻库修建合同协议书
- 幕墙维修合同协议书
- 续租商铺合同协议书
- 宠物加盟合同协议书
- 工程合同转移协议书
- 工程合同协议书实例
- 驾校入股合同协议书
- 工厂保洁合同协议书
- 简易采购合同协议书
- 作业许可检查表
- 城市雕塑艺术工程工程量计价清单定额2022年版
- 绩溪事业单位招聘考试《行测》历年真题汇总及答案解析精选V
- 湘美版美术三年级下册 《渔家乐-蟳埔情》课件(共20张PPT)
- 农产品集中交易市场等级技术规范-编制说明
- 张京16分钟中英文对照翻译稿
- 武汉绿地中心项目技术管理策划书(48页)
- 油田相关业务的税制及税率
- 北师大版物理八年级下册课课练:专题训练 透镜的相关作图(含答案)
- 《国际经济法》案例思考题
- 投掷:原地投掷垒球
评论
0/150
提交评论