论文部分内容阅读
摘 要:统一建模语言UML是面向对象软件设计的新技术。在介绍UML的基础上,用UML分析设计了俄罗斯方块。根据本游戏特点,侧重选用了用例图、顺序图、类图、状态图进行分析设计,最后总结了UML技术的优越性。
关键词:面向对象技术;UML;软件工程;俄罗斯方块
中图分类号:TP31文献标识码:A文章编号:1672-3198(2008)02-0275-02
1 引言
在20世纪60年代中期开始爆发的软件危机,使人们认识到大中型软件系统与小型软件有着本质的区别:大型软件系统的开发周期长、费用高、软件质量难以保证、开发生产率低,为了摆脱软件危机提出了软件工程的概念。软件工程的目的就是要在规定的时间、开发费用内开发出满足用户需求的高质量的软件系统,高质量不仅是指错误率低,还包括好用、易用、可移植、易维护等要求。软件开发有复杂性和困难性,软件设计人员既要为自己建立设计与实践的准则,又要利用这些准则构造符合要求的软件系统,因此所面临的困难比其他涉及领域更多。
2 面向对象技术及统一建模语言UML
为了减少软件复杂性对软件开发过程的影响,我们只能采用控制复杂性的方法,这些方法包括分解、抽象、模块化、信息隐蔽等。而面向对象技术充分体现了上述思想,可以有效的提高软件生产率,缩短软件开发时间、提高软件质量、是控制软件复杂性的有效途径。面向对象方法的基本思想是:对问题领域进行自然分割,以更接近人类思维的方式建立问题域模型,从而使设计出的软件尽可能直接描述现实世界,具有更好的可维护性,能适应用户需求的变化。
统一建模语言(UML:Unified Modeling Language)是面向对象(Object-Oriented)技术领域内占主导地位的标准建模语言。UML是一种基于面向对象的可视化建模语言,它提供了用图形符号表示的模型元素,它可消除一些潜在的不必要的差异,还可通过统一语义和符号表示,使项目根植于一个成熟的标准建模语言,从而可以拓宽所研制与开发的软件系统的适用范围,并提高其灵活程度。
UML定义了下列5类、共10种模型图,主要内容如下:第一类用例图,它从用户的角度描述系统的功能,并指出各功能的操作者。用例图有助于系统开发者与用户之间进行交流,以获取用户需求。第二类静态图,包括类图、对象图和包图。其中类图用于定义系统中的类,包括描述类之间的联系以及类的内部结构,即类的属性和操作;对象图显示类的对象实例,一个对象图是类图的一个实例;包图由包或类组成,主要表示包与包、或包与类之间的关系,用于描述系统的分层结构。第三类行为图,描述系统的动态模型和组成对象间的交互关系。一种是状态图,它描述一类对象的所有可能的状态以及事件发生时状态的转移条件;另一种是活动图,它描述为满足用例要求所要进行的活动以及活动间的约束关系。第四类交互图,描述对象间的交互关系。一种称之为顺序图,用以显示对象之间的动态合作关系;另一种是合作图,它着重描述对象间的协作关系。第五类实现图,包括构件图和配置图。构件图描述代码部件的物理结构以及各部件之间的依赖关系;配置图定义系统中软硬件的物理体系结构。这些图为系统的分析、开发提供了多种图形表示,它们的有机结合就有可能分析与构造一个一致的系统。
3 基于面向对象技术UML开发俄罗斯方块
3.1 系统描述与规划并建立用例图
俄罗斯方块的功能需求是,提供一个界面显示当前生成的方块状态、下落及下一个方块,接收用户输入以控制下落和旋转,调整到最佳位置,当下落终止后判断是否产生满行,如果有满行则消行并设置分数,当分数达到一定要求时给用户增加等级和下降速度,之后产生新方块,重复执行此操作,直到方块无法被消去而阻止新方块的产生。
根据系统描述我们可以抽象出9个用例:用户输入系统、图像显示系统、方块动作、新方块生成、消行、方块死亡、分数设置、等级设置、下降速度控制。抽取出两个角色:用户和控制系统。用例图如图1所示。
用例图用简单的图形符号表示出系统的活动者,用例以及它们之间的联系,准确的表达了活动者与系统的交互情况和系统所能提供的服务。在实际问题中提取出用例是系统的一个基本任务,把系统的功能需求用用例图清楚、准确的表达出来,在此基础上进行对象模型的分析与设计。在开发过程中要不断的修改和完善用例模型,推动系统的分析与设计不断精化,努力达到系统预定目标。
3.2 系统静态分析、类图及顺序图
系统分析主要是对领域问题及其解决方案的一个分析和设计过程,关键是要准确找出现实世界的对象和类之间的关系,把他们映射成系统中的对象类和类之间的联系,并加以设计和调整,最终用图形表示出来。
本系统中主要类有窗口类、图形显示类和方块类。窗口是操作的载体,图形显示是与用户进行交互的媒介,方块类是操作的对象执行具体的动作。窗口类是整个系统的载体,操作显示等都在其上完成;图形显示类提供了将方块的布局及产生的新方块和下一个方块显示给用户,以告知用户当前状态。具体的动作是由方块执行,方块接收用户的控制消息,执行动作,同时刷新图形。我们要处理的关键是方块,这里方块共7种图形,要是建立七个单一的类,则系统编写起来会非常复杂,这时可以根据系统的共性,得到一个基类。因为各种不同的方块的动作是一样的,都有下降、旋转、移动三种动作,同时各种方块的组成相同,即4个小方块,可以统一存储。这样我们创建一个虚基类,它本身不创建实际对象,只提供操作和存储功能,不同形状的方块对象由各子类创建。创建对象时,由子类的构造函数给类的属性赋值,决定了类对象的形状。类图和具体方块的形状如图2类图及实例对象模型所示。
在产生新对象时,只需创建一个对象并把对象赋给基类对象指针,就可以用全局基类指针来控制各种动作,而不用对各个子类单独处理。系统只需对基类对象指针作移动、旋转、下降等操作,而不用关心当前对象是那个类创建的。这样操作和具体对象分离,就简化了程序的控制,使全局的设计达到最优化。
通过发现类、类对象,明确他们的含义和责任,确定属性和操作,发现类之间的静态联系,分析对象类之间的一般与特殊关系、部分与整体关系,研究类的继承性、多态性,调整和精化类之间的联系,使其能更准确地描述系统的静态特征。
顺序图表示完成某个行为的对象类和这些对象类之间所传递的消息的时间顺序。用户进入系统后,通过键盘输入对方块做动作控制,控制系统根据输入或系统等待时间决定方块的动作,当方块下落到遇到障碍后,控制系统得到消息进行消行、分数设置等,见图3顺序图。
3.3 动态分析设计及状态图
状态图用于描述系统的行为,描述类的一个对象在其生存周期间的行为,表现为一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作,可以描述用例及整个系统的动态行为。在对确定的对象进行行为建模时,所选择对象生存期中的状态数量是有限的。对象处于每个状态的持续时间也是有限的。当发生某个事件,或完成了某个动作或活动的执行,都会触发状态的转移。首先选择初始状态和终结状态,然后发现对象的各种状态,确定状态可能发生的转移,把必要的动作加到状态或转移上。根据俄罗斯方块的系统描述,功能要求,分析得到系统的状态图,如图4所示。
4 总结
利用上述方法,设计了俄罗斯方块游戏,并用C++ Builder6.0作为开发工具实现了系统,如果需要添加新的方块形状只需新建一个类并在控制中加入新建对象的过程即可,充分体现了系统的可扩充性,可维护性等。虽然游戏较小,但足可以生动的展现了面向对象UML技术的强大功能,不仅能够提高开发效率,提高软件质量,加速开发过程,而且具有较好的可重用性、可扩充性、可维护性和可移植性。
参考文献
[1]史济民. 软件工程[M]. 北京: 高等教育出版社,2002.
[2]王少锋. 面向对象技术UML教程[M]. 北京: 清华大学出版社,2004.
[3]郑莉, 董渊. C++ 语言程序设计[M]. 北京:清华大学出版社,2004.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:面向对象技术;UML;软件工程;俄罗斯方块
中图分类号:TP31文献标识码:A文章编号:1672-3198(2008)02-0275-02
1 引言
在20世纪60年代中期开始爆发的软件危机,使人们认识到大中型软件系统与小型软件有着本质的区别:大型软件系统的开发周期长、费用高、软件质量难以保证、开发生产率低,为了摆脱软件危机提出了软件工程的概念。软件工程的目的就是要在规定的时间、开发费用内开发出满足用户需求的高质量的软件系统,高质量不仅是指错误率低,还包括好用、易用、可移植、易维护等要求。软件开发有复杂性和困难性,软件设计人员既要为自己建立设计与实践的准则,又要利用这些准则构造符合要求的软件系统,因此所面临的困难比其他涉及领域更多。
2 面向对象技术及统一建模语言UML
为了减少软件复杂性对软件开发过程的影响,我们只能采用控制复杂性的方法,这些方法包括分解、抽象、模块化、信息隐蔽等。而面向对象技术充分体现了上述思想,可以有效的提高软件生产率,缩短软件开发时间、提高软件质量、是控制软件复杂性的有效途径。面向对象方法的基本思想是:对问题领域进行自然分割,以更接近人类思维的方式建立问题域模型,从而使设计出的软件尽可能直接描述现实世界,具有更好的可维护性,能适应用户需求的变化。
统一建模语言(UML:Unified Modeling Language)是面向对象(Object-Oriented)技术领域内占主导地位的标准建模语言。UML是一种基于面向对象的可视化建模语言,它提供了用图形符号表示的模型元素,它可消除一些潜在的不必要的差异,还可通过统一语义和符号表示,使项目根植于一个成熟的标准建模语言,从而可以拓宽所研制与开发的软件系统的适用范围,并提高其灵活程度。
UML定义了下列5类、共10种模型图,主要内容如下:第一类用例图,它从用户的角度描述系统的功能,并指出各功能的操作者。用例图有助于系统开发者与用户之间进行交流,以获取用户需求。第二类静态图,包括类图、对象图和包图。其中类图用于定义系统中的类,包括描述类之间的联系以及类的内部结构,即类的属性和操作;对象图显示类的对象实例,一个对象图是类图的一个实例;包图由包或类组成,主要表示包与包、或包与类之间的关系,用于描述系统的分层结构。第三类行为图,描述系统的动态模型和组成对象间的交互关系。一种是状态图,它描述一类对象的所有可能的状态以及事件发生时状态的转移条件;另一种是活动图,它描述为满足用例要求所要进行的活动以及活动间的约束关系。第四类交互图,描述对象间的交互关系。一种称之为顺序图,用以显示对象之间的动态合作关系;另一种是合作图,它着重描述对象间的协作关系。第五类实现图,包括构件图和配置图。构件图描述代码部件的物理结构以及各部件之间的依赖关系;配置图定义系统中软硬件的物理体系结构。这些图为系统的分析、开发提供了多种图形表示,它们的有机结合就有可能分析与构造一个一致的系统。
3 基于面向对象技术UML开发俄罗斯方块
3.1 系统描述与规划并建立用例图
俄罗斯方块的功能需求是,提供一个界面显示当前生成的方块状态、下落及下一个方块,接收用户输入以控制下落和旋转,调整到最佳位置,当下落终止后判断是否产生满行,如果有满行则消行并设置分数,当分数达到一定要求时给用户增加等级和下降速度,之后产生新方块,重复执行此操作,直到方块无法被消去而阻止新方块的产生。
根据系统描述我们可以抽象出9个用例:用户输入系统、图像显示系统、方块动作、新方块生成、消行、方块死亡、分数设置、等级设置、下降速度控制。抽取出两个角色:用户和控制系统。用例图如图1所示。
用例图用简单的图形符号表示出系统的活动者,用例以及它们之间的联系,准确的表达了活动者与系统的交互情况和系统所能提供的服务。在实际问题中提取出用例是系统的一个基本任务,把系统的功能需求用用例图清楚、准确的表达出来,在此基础上进行对象模型的分析与设计。在开发过程中要不断的修改和完善用例模型,推动系统的分析与设计不断精化,努力达到系统预定目标。
3.2 系统静态分析、类图及顺序图
系统分析主要是对领域问题及其解决方案的一个分析和设计过程,关键是要准确找出现实世界的对象和类之间的关系,把他们映射成系统中的对象类和类之间的联系,并加以设计和调整,最终用图形表示出来。
本系统中主要类有窗口类、图形显示类和方块类。窗口是操作的载体,图形显示是与用户进行交互的媒介,方块类是操作的对象执行具体的动作。窗口类是整个系统的载体,操作显示等都在其上完成;图形显示类提供了将方块的布局及产生的新方块和下一个方块显示给用户,以告知用户当前状态。具体的动作是由方块执行,方块接收用户的控制消息,执行动作,同时刷新图形。我们要处理的关键是方块,这里方块共7种图形,要是建立七个单一的类,则系统编写起来会非常复杂,这时可以根据系统的共性,得到一个基类。因为各种不同的方块的动作是一样的,都有下降、旋转、移动三种动作,同时各种方块的组成相同,即4个小方块,可以统一存储。这样我们创建一个虚基类,它本身不创建实际对象,只提供操作和存储功能,不同形状的方块对象由各子类创建。创建对象时,由子类的构造函数给类的属性赋值,决定了类对象的形状。类图和具体方块的形状如图2类图及实例对象模型所示。
在产生新对象时,只需创建一个对象并把对象赋给基类对象指针,就可以用全局基类指针来控制各种动作,而不用对各个子类单独处理。系统只需对基类对象指针作移动、旋转、下降等操作,而不用关心当前对象是那个类创建的。这样操作和具体对象分离,就简化了程序的控制,使全局的设计达到最优化。
通过发现类、类对象,明确他们的含义和责任,确定属性和操作,发现类之间的静态联系,分析对象类之间的一般与特殊关系、部分与整体关系,研究类的继承性、多态性,调整和精化类之间的联系,使其能更准确地描述系统的静态特征。
顺序图表示完成某个行为的对象类和这些对象类之间所传递的消息的时间顺序。用户进入系统后,通过键盘输入对方块做动作控制,控制系统根据输入或系统等待时间决定方块的动作,当方块下落到遇到障碍后,控制系统得到消息进行消行、分数设置等,见图3顺序图。
3.3 动态分析设计及状态图
状态图用于描述系统的行为,描述类的一个对象在其生存周期间的行为,表现为一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动转移而伴随的动作,可以描述用例及整个系统的动态行为。在对确定的对象进行行为建模时,所选择对象生存期中的状态数量是有限的。对象处于每个状态的持续时间也是有限的。当发生某个事件,或完成了某个动作或活动的执行,都会触发状态的转移。首先选择初始状态和终结状态,然后发现对象的各种状态,确定状态可能发生的转移,把必要的动作加到状态或转移上。根据俄罗斯方块的系统描述,功能要求,分析得到系统的状态图,如图4所示。
4 总结
利用上述方法,设计了俄罗斯方块游戏,并用C++ Builder6.0作为开发工具实现了系统,如果需要添加新的方块形状只需新建一个类并在控制中加入新建对象的过程即可,充分体现了系统的可扩充性,可维护性等。虽然游戏较小,但足可以生动的展现了面向对象UML技术的强大功能,不仅能够提高开发效率,提高软件质量,加速开发过程,而且具有较好的可重用性、可扩充性、可维护性和可移植性。
参考文献
[1]史济民. 软件工程[M]. 北京: 高等教育出版社,2002.
[2]王少锋. 面向对象技术UML教程[M]. 北京: 清华大学出版社,2004.
[3]郑莉, 董渊. C++ 语言程序设计[M]. 北京:清华大学出版社,2004.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。