论文部分内容阅读
摘 要 UML是在多种面向对象建模方法的基础上发展起来的建模语言,它不是一门程序设计语言。但却可以将UML模型映射为多种程序设计语言代码,也可以使用逆向生成器工具将程序源代码转换为UML模型。本文浅析了类图、状态图、组件图三种模型与Java语言之间的代码映射关系。
关键词 UML;代码映射;建模
中图分类号:TP393 文献标识码:A 文章编号:1671—7597(2013)042-082-02
统一建模语言(Unified Modeling Language,UML)是一种通用的可视化面向对象的建模语言,适用于对任何面向对象的事物的建模。虽然UML不是一门程序设计语言。但可以将UML模型映射为多种程序设计语言代码,也可以使用逆向生成器工具将程序源代码转换为UML模型。
1 类图与Java代码之间的映射
类图是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型,它用于描述系统的结构。类图的建模贯穿系统的分析和设计阶段的始终,通常从商务伙伴能够理解的用例开始建模,最终成为只有开发小组能够完全理解的类。
面向对象的系统中充满着各种不同的对象,它们相互协作完成各种不同的任务。与之对应的类之间也存在着多种关系。以Java编程语言为例,如图1所示双向关联关系(1..*,*)的类图与Java代码的映射如下。
2 状态图与Java代码之间的映射
状态图是对单个对象建模,描述某个对象所处的各种可能状态以及这些状态之间的转移。状态图映射成代码的方法如下:
1)将不同状态作为常数枚举,把当前状态存储在适当的数据成员中。
2)依赖于状态的操作可以用开关语句对每个状态分别设一个case实现。每个case表示来自特定状态,用相应的消息表示转换。
3)需求用专门的数据成员存储对象的历史状态。
例如,银行账户有借记(InCredit)和透支(Overdraw)两种基本状态,仅有的两个操作是存款和取款,监视条件根据在交易中涉及的存取款金额amt和该账户的当前余额bal的关系来确定执行哪种行为。例如,如果当前是透支状态,发生了存款事件,如果存款金额大于或等于该账户当前透支的金额(amt≥-bal),则执行bal -= amt的行为,并且当前状态转移为借记状态。该账户透支时,不能取款,如图2所示。
3 组件图与Java代码之间的映射
在软件建模的过程中,组件图可以帮助用户了解每个功能位于软件包的位置以及之间的关系,组件图通过这些元素描述软件的各个组件及它们之间的依赖关系,以及组件的接口和调用关系。
通常,组件图展示了对将要被建立的整个系统的早期理解,同时也为架构师提供一个开始为解决方案建模的自然形式。组件图可以呈现给关键项目发起人及实现人员,对于不同的项目小组成员也是有用的交流工具。
另外,组件图也可以描述软件设计的物理实现,即每个组件体现了系统设计中特定类的实现。例如,图3所示的购物车的组件图,它就能较为容易地映射为Java代码结构,如下。
4 结论
面向对象的系统开发过程中,每个阶段都要建造不同的模型。需求分析阶段建造的模型用来捕获系统需求信息;设计阶段的模型是分析模型的扩充,为实现阶段作指导性和技术性的解决方案;实现阶段的模型是真正的源代码及编译后的组件;发布阶段是描述系统物理上的架构。归根到底,UML在软件开发者之间沟通设计思想起着举足轻重的作用。
参考文献
[1]曹静,罗炜.软件建模技术[M].水利水电出版社,2011.
[2]王路群.面向对象的软件工程开发实践[M].江苏教育出版社,2013.
关键词 UML;代码映射;建模
中图分类号:TP393 文献标识码:A 文章编号:1671—7597(2013)042-082-02
统一建模语言(Unified Modeling Language,UML)是一种通用的可视化面向对象的建模语言,适用于对任何面向对象的事物的建模。虽然UML不是一门程序设计语言。但可以将UML模型映射为多种程序设计语言代码,也可以使用逆向生成器工具将程序源代码转换为UML模型。
1 类图与Java代码之间的映射
类图是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型,它用于描述系统的结构。类图的建模贯穿系统的分析和设计阶段的始终,通常从商务伙伴能够理解的用例开始建模,最终成为只有开发小组能够完全理解的类。
面向对象的系统中充满着各种不同的对象,它们相互协作完成各种不同的任务。与之对应的类之间也存在着多种关系。以Java编程语言为例,如图1所示双向关联关系(1..*,*)的类图与Java代码的映射如下。
2 状态图与Java代码之间的映射
状态图是对单个对象建模,描述某个对象所处的各种可能状态以及这些状态之间的转移。状态图映射成代码的方法如下:
1)将不同状态作为常数枚举,把当前状态存储在适当的数据成员中。
2)依赖于状态的操作可以用开关语句对每个状态分别设一个case实现。每个case表示来自特定状态,用相应的消息表示转换。
3)需求用专门的数据成员存储对象的历史状态。
例如,银行账户有借记(InCredit)和透支(Overdraw)两种基本状态,仅有的两个操作是存款和取款,监视条件根据在交易中涉及的存取款金额amt和该账户的当前余额bal的关系来确定执行哪种行为。例如,如果当前是透支状态,发生了存款事件,如果存款金额大于或等于该账户当前透支的金额(amt≥-bal),则执行bal -= amt的行为,并且当前状态转移为借记状态。该账户透支时,不能取款,如图2所示。
3 组件图与Java代码之间的映射
在软件建模的过程中,组件图可以帮助用户了解每个功能位于软件包的位置以及之间的关系,组件图通过这些元素描述软件的各个组件及它们之间的依赖关系,以及组件的接口和调用关系。
通常,组件图展示了对将要被建立的整个系统的早期理解,同时也为架构师提供一个开始为解决方案建模的自然形式。组件图可以呈现给关键项目发起人及实现人员,对于不同的项目小组成员也是有用的交流工具。
另外,组件图也可以描述软件设计的物理实现,即每个组件体现了系统设计中特定类的实现。例如,图3所示的购物车的组件图,它就能较为容易地映射为Java代码结构,如下。
4 结论
面向对象的系统开发过程中,每个阶段都要建造不同的模型。需求分析阶段建造的模型用来捕获系统需求信息;设计阶段的模型是分析模型的扩充,为实现阶段作指导性和技术性的解决方案;实现阶段的模型是真正的源代码及编译后的组件;发布阶段是描述系统物理上的架构。归根到底,UML在软件开发者之间沟通设计思想起着举足轻重的作用。
参考文献
[1]曹静,罗炜.软件建模技术[M].水利水电出版社,2011.
[2]王路群.面向对象的软件工程开发实践[M].江苏教育出版社,2013.