《第13章UML项目实训.ppt》由会员分享,可在线阅读,更多相关《第13章UML项目实训.ppt(43页珍藏版)》请在三一办公上搜索。
1、面向对象技术及UML教程,第13章 UML项目实训,第13章 UML项目实训,前面章节介绍了面向对象的基本概念、软件开发过程和UML。介绍了UML的主要图符、模型图以及这些模型图的应用。在学习了这些知识、方法和技能后可能还不清楚如何在一个实际项目中应用UML。本章将给出一个具体的实例“打击游戏”,应用UML完成项目开发的全过程。,13.1 项目启动,在实际的软件公司中,软件项目一般都是由软件项目组开发的 在软件项目组中每个项目组的成员都有自己明确的分工,他们相互合作完成项目开发 项目启动就是参照软件公司的软件项目开发方式,先组建项目组,确定项目的目标,制定项目开发计划,为实际的项目开发做好准备
2、。,13.1 项目启动,项目组一般由4到5人组成,采用自由结组的方式 定义四个角色:项目经理系统分析员程序员测试员,13.1.1 建立项目组,13.1 项目启动,明确开发目标 打击游戏的项目目标可以确定为:开发一个简单的小娱乐游戏,通过点击游戏窗口中的图片,可以赢得游戏分数,随着分数的积累能够升级。制定开发计划(详细内容见教材)为什么先制定开发计划?一般在软件项目开发之初会根据项目开发的合同时间确定一个项目计划。,13.1.2 制定开发计划,13.2 项目需求分析,这里要开发的打击游戏属于自己开发产品,因此需要系统分析员组织项目组成员进行系统的需求分析 具体的需求可以参考市面上流行的这些小游戏
3、,根据它们提供的功能特点,游戏特色,吸引玩家的地方等等 在项目组全体成员的共同努力下,尽量多的挖掘出系统的需求,13.2.1 需求获取,13.2 项目需求分析,打击游戏的需求分析是从功能描述、界面描述两个方面着手的 游戏提供一个界面,随机在某个位置上放置一幅图片。玩家可以点击该幅图片,当图片被点中时,图片消失,在窗口上别的位置上再出现一幅图片,游戏继续;如果在规定的时间内玩家没有点中图片,游戏结束。玩家每次点中图片后,给玩家加分,将分数显示在界面上。当玩家的分数达到一定数值后,游戏晋级,表现为图片停留的最长时间减少。,13.2.2 需求描述,13.2 项目需求分析,用例图,13.2.2 需求描
4、述,13.2 项目需求分析,用例说明:玩家:实际游戏的软件使用者,通过点击图片,获取分数。Timer:计算机系统的定时器,负责放置图片,记录图片显示时间。打击游戏:玩家点击图片,赢得分数。记录分数:系统记录玩家的分数,显示玩家的最后得分。晋级:当玩家得到的分数达到某个规定的限值时游戏晋升到下一个级别。,13.2.2 需求描述,13.2 项目需求分析,事件流:1玩家启动游戏,进入游戏界面;2玩家点击开始按钮,游戏开始;3定时器在界面的某个位置放置一张图片4规定时间内,点击图片,图片消失,玩家得分;5系统显示玩家的分数;6循环34;7当玩家分数达到一个规定的值时,玩家晋级,显示玩家的级别。8如果玩
5、家已经通关,游戏结束;9循环38;,13.2.2 需求描述,13.2 项目需求分析,备选事件流:3.a玩家没有点击到图片,并且时间片结束,游戏结束,显示对话框“游戏结束,您的得分为XXX,是否重新开始游戏!”;8.a玩家通关后,显示对话框“您已经通关,是否重新开始游戏!”;,13.2.2 需求描述,13.2 项目需求分析,13.2.3 软件界面,13.2 项目需求分析,1、加分规则:2、晋级规则:3、难度规则:,13.2.4 游戏规则定义,13.2 项目需求分析,1、启动游戏2、进行游戏3、游戏晋级4、游戏通关5、游戏失败6、暂停游戏,13.2.5 游戏说明,13.3 使用UML进行系统设计,
6、进行系统设计主要步骤:首先根据对需求用例的事件流进行分析,找到系统中的备选对象。其次分析系统中具体对象和对象之间的关系,也就是对象之间如何进行消息传递。再次根据上面的分析,设计出系统顺序图或协作图。最后,进行抽象得到系统的静态结构图-类图。,13.3 使用UML进行系统设计,从事件流描述中找出所有可能的对象:界面:游戏的界面图片:打击游戏界面上显示的图片分数:游戏玩家在玩游戏中赢得的分数级别:游戏的难度等级,玩家获得的分数达到一定值,游戏晋级定时器:控制游戏界面中图片的显示时间,13.3.1 系统备选对象,13.3 使用UML进行系统设计,进一步分析可能还有以下对象:棋盘:游戏界面中的显示图片
7、的区域,被划分成3行4列共12个单元格,每个单元格中可以显示图片 系统:控制和管理游戏中的系统事件,13.3.1 系统备选对象,13.3 使用UML进行系统设计,被选对象:系统:System图片:Picture棋盘:Board定时器:Timer级别:GameLevel分数:Score,13.3.2 系统对象分析,13.3 使用UML进行系统设计,玩家要想开始游戏,就需要给发一个开始消息给系统对象System发送一个消息start(),13.3.2 系统对象分析,13.3 使用UML进行系统设计,系统对象收到开始游戏后,首先需要显示游戏的棋盘。这时系统对象System需要给游戏盘对象Board发
8、送一个显示棋盘的消息displayPic(),13.3.2 系统对象分析,13.3 使用UML进行系统设计,显示棋盘,同时还需要在棋盘上显示一张图片。这时需要棋盘对象Board给图片对象Picture发送一个消息show(),13.3.2 系统对象分析,13.3 使用UML进行系统设计,显示玩图片后,需要开始记录图片的显示时间。这时需要系统对象System给定时器对象Timer发送一个消息start(),13.3.2 系统对象分析,13.3 使用UML进行系统设计,汇总得到协作图,13.3.2 系统对象分析,13.3 使用UML进行系统设计,点击图片后,隐藏图片,增加分数,计算晋级 按照前面过
9、程可以得到协作图,13.3.2 系统对象分析,13.3 使用UML进行系统设计,前面分析了系统中的对象,进一步对这些对象进行抽象可以得到类和类间关系,13.3.3 系统类图设计,13.3 使用UML进行系统设计,完成系统类图设计后继续:编写系统设计规格说明书详细记录对象的分析和设计过程给出系统顺序图或协作图,并给出说明给出经过抽象后得到的类图,给出类的主要属性和方法的描述,13.3.3 系统类图设计,13.4 使用UML进行类设计,13.4.1 添加系统类,13.4 使用UML进行类设计,13.4.2 类图设计,系统设计类在具体实现时可能被转化成一个包,13.4 使用UML进行类设计,13.4
10、.2 类图设计,系统设计中的类在实现中也可能还映射成一个类,例如System类 有时系统设计中的类在实现是可能消失或者变成了一个属性或方法了,13.4 使用UML进行类设计,13.4.3 添加属性,对设计类进行细化,增加属性 类Level中需要增加一个属性gameLevel 类Board中需要增加一个图片类的引用属性pic,13.4 使用UML进行类设计,13.4.4 添加方法,对设计类进行细化,例如System类增加方法:start():开始游戏方法。hit():用户点击动作处理方法。System():构造系统中的主要对象。init():初始化重要对象的属性。stop():结束游戏。addS
11、core():游戏加分。addLevel():游戏晋级。,13.4 使用UML进行类设计,13.4.4 添加方法,例如System类增加方法后类图,13.4 使用UML进行类设计,13.4.5 类图设计,细化后实现类图,13.4 使用UML进行类设计,13.4.5 类图设计,System类的主要方法:,13.4 使用UML进行类设计,13.4.5 类图设计,Timer类的主要方法:,13.4 使用UML进行类设计,13.4.5 类图设计,TimeLength类的主要属性和方法:,13.4 使用UML进行类设计,13.4.5 类图设计,Board类的主要方法:,13.4 使用UML进行类设计,1
12、3.4.5 类图设计,Score类的主要方法:,13.4 使用UML进行类设计,13.4.5 类图设计,GameLevel类的主要方法:,13.5 UML设计模型到代码实现转换,具体实现代码参见教材,13.6 UML在测试阶段应用,部分测试用例和测试结果,13.7 项目总结,本项目开是由项目小组完成的 每个项目组成员分配了不同的角色 项目开发过程中划分成多个阶段 开发过程中使用UML来描述各个阶段的软件产品 项目使用面向对象的Java语言来实现。上面这个例子只完成了主要的功能,读者可以按照这个过程继续完成其他功能,也可以参照这个例子完成其他的项目。,13.8 小结,本章以一个打击游戏为例,介绍了如何使用UML来描述一个项目的需求,进行面向对象的分析和设计,最终完成一个项目 这个项目中只用到了部分UML模型图,读者如果有兴趣,可以使用其他的UML用例图来分析和设计这个项目,