文档库 最新最全的文档下载
当前位置:文档库 › 从UML类图到Java代码自动生成技术研究

从UML类图到Java代码自动生成技术研究

从UML类图到Java代码自动生成技术研究
从UML类图到Java代码自动生成技术研究

从UML类图到Java代码自动生成技术研究

张中宝1,韩同欣2,刘西洋1

1西安电子科技大学软件工程研究所,陕西西安(710071)

2北京航天航空大学计算机学院, 北京(100083)

E-mail:zhongbaoz@https://www.wendangku.net/doc/dc13462128.html,

摘要:本文描述了基于UML CASE平台的代码生成器的设计与实现。从可执行UML到高级语言的代码生成技术已经在实践中得到实现,本文描述的代码生成器采用了一种全新的面向对象的脚本语言Ruby和基于Ruby的XML接口REXML,处理生成自UML类图的XMI 文档。通过从XMI DOM树中提取建模系统模型元素的相关信息,之后构造合适的容器类存储提取的数据,并访问这些数据进行ERb模板匹配,最后生成了可执行的Java代码框架。整个开发过程遵循模型驱动的软件开发方法,以更灵活的脚本语言和模板机制实现了模型驱动架构MDA从平台无关模型到平台相关模型的转化。

关键词:模型,代码生成,MDA(模型驱动架构)

中图分类号:TP312

1.引言

模型是应用程序或系统的某些部分的简单抽象表示。用户可以以任意的复杂程度构建模型:从在白板上手绘的方框图,到使用建模工具生成的复杂的UML图。然而,实际开发却经常脱离模型,模型只作为一个系统的蓝图,开发者仍然要手工编写所有的实现代码。随着应用程序的进展和规模的扩大,开发者经常发现坚持使用模型所带来的约束要远远大于其用途,维护模型变成繁琐的工作而不会产生帮助。设计阶段产生的UML模型和代码之间的同步变得越来越困难——代码为了应付新增加需求和新产生的想法而不断变化,模型却一直停留在原地不动,这使得模型在一段时间以后失去了它的价值。模型驱动开发是一种能够将模型与实现更紧密地联系在一起的开发方法。使用MDD,模型不仅能用来封装应用程序的设计,还可以用来生成实现代码。它是模型驱动架构[1](Model Driven Architecture, MDA)的一部分,MDA 表示了一种模型驱动开发方法的概念框架。

代码生成是一个专注于解放编码生产力,用程序来编程的研究方向。它是MDA思想的一个重要的技术基础。MDA的基本思想是在软件开发中以模型为驱动,由模型来生成或编译成程序代码,实现软件需求。只有在代码生成技术获得充分发展的基础上,模型驱动架构的思想才能得以实现。

在软件项目中运用代码生成技术可带来以下几大好处:

1)高效率。代码生成的工作主要是建立和维护输入模型,而这些输入模型基本上或全部都能从设计模型转化过来,工作量很少,因而软件生成率得到成倍提高。

2)高质量。代码生成技术使用代码模板来生成代码,模板越完善,生成的代码就越好。模板改善后,所有生成的代码质量都能提高,并且代码的命名和风格都能保持一致。因而采用代码生成技术能获得更高质量的代码。

3)更易维护。当需求改变时,大多数的代码生成器都能在输入模型的基础上,重新生成满足新需求的代码,这能有效地降低软件需求变更带来的风险。

4)促进团队的分工和发展。由于编码工作量少,程序员的工作得到解放,项目团队有更多时间来进行设计和架构优化,以及设计更好的代码生成工具。

目前,代码生成技术的发展还处于初期阶段,代码生成工具主要是用数据库模型来生成基于数据库的程序代码。代码生成技术较多的应用在集成开发环境和专业的代码生成工具

中。已公开的相关的研究成果比较少[2][3],商用工具有Rhapsody、Rose RT等等,它们实现了简单类图和状态图的代码生成。

本项目的研究涉及到模型驱动的构架思想,模型驱动的开发方法以及代码生成技术。项目将要完成的任务是在模型驱动构架的思想下,采用模型驱动的开发方法,设计一个代码生成器,实现从UML[4]类图到Java语言的代码生成。项目的实现为模型驱动架构思想的实现提供了技术支持。

2.代码自动生成器的设计

可执行UML中以类图来建模系统的结构,描述了对象的类型和对象间的各种静态关系。在模型-代码的映射关系中,结构对应代码的框架部分。这里给出结构实现的总体方案,其中的策略和技术同样适用于约束和行为。

2.1功能需求描述

为了实现从平台无关的UML类图模型到平台相关的代码框架,项目开发的生成器必需实现以下的功能:

1)读取由UML模型转化来的XMI[5]文件;

2)准确地将类图模型描述的现实系统生成Java语言框架。代码生成器的主要功能需求用例图如图1所示。

Java语言模板

图1 代码生成器主要功能需求用例图

2.2代码生成器系统框架

基于MDA思想的软件开发过程应实现平台无关模型到平台相关模型的转换,最终生成可执行的代码。以代码生成器开发为例,完全符合MDA思想的代码生成器必需包括模型检查子系统、代码生成属性设置子系统和代码生成子系统等三部分。模型检查子系统主要在生成可执行代码前进行相应的模型一致性检查, 将有助于发现模型中的问题和不一致性, 避免生成错误代码或无效代码,确保平台无关的模型的一致性和准确性。代码生成属性设置子系统主要完成代码模板的语言属性检查。代码生成子系统是最核心的部分,实现代码生成,将平台无关的模型映射为具体的Java代码框架,做到模型的平台相关(一段源代码框架也是模型)。

本项目只开发代码生成子系统。因为实现的是从类图到代码的生成,所以可以不考虑不同模型的一致性问题。代码生成属性设置体现在模型到代码的映射规则和Java模板中。生成器的前端输入是由UML类图模型转换而来的XMI文件,由Rational Rose2003的XMI导出工具导出生成。

2.3 代码生成建模

2.3.1 模型驱动开发过程

本项目采用的是一种模型驱动的开发方法。模型驱动开发的主要过程是:

分析与设计:基于开发系统的需求分析,系统设计人员进行分析和设计。这一步的工件是与具体平台无关的模型。

设计确认:由于在第一步构建的设计模型是可执行的,因此模型可以被确认其正确性。传统的确认方法,比如模仿执行的testing方法,对于可执行的PIM语言的集成开发环境都给予了支持。然而这些确认方法都是低效的,主要是因为测试案例覆盖的范围限制。在一个复杂的设计模型中,一般很难覆盖所有的测试案例。

代码生成:一旦设计模型被完全确认,那么传统的编程语言,例如C/C++和Java就能够从确认的模型中产生出来。代码产生主要基于一组预定义的模板,该模板详细说明设计模型中的语义实体怎样被编译成代码。

下图给出了模型驱动的主要开发流程。

图2 模型驱动开发流程图

2.3.2 代码自动生成机制

模型驱动软件开发的最终目标是产生可执行代码,即把为系统建立的各级分析、设计模型转换成特定语言的代码。代码自动生成的原理是根据建模平台的目标系统模型,以及对类和对象的详细设计中的规范说明信息,由代码生成器自动生成可执行的代码。具体地说,生成代码的信息来源有两个:代码生成属性(控制代码生成方式) 和模型元素规范(控制代码生成内容) 。代码自动生成过程是以数据容器为基础,将系统详细设计阶段得到的模型信息保存在数据容器中,在代码生成前,针对特定语言设定的代码生成属性也保存在数据容器中。在生成代码时,从基本数据容器中提取描述系统的信息,从数据容器中提取特定语言的代码生成属性值,依据系统对映射关系的描述,通过代码模板实现从目标模型到特定语言的可执行代码的转换。代码模板是代码生成器的关键,模板是在对特定语言(如C+ + ,JA V A ,

VB 等) 代码体系结构和组成的分析、提炼的基础上,建立设计模型与语言的映射关系。本项目中的代码生成机制描述如图3所示。

图3 代码生成机制

3. 代码生成器的实现

本节首先讲述了代码生成器的实现机制,之后描述了生成器生成代码的具体实现步骤及核心算法,最后给出了生成器的性能测试。

3.1 代码生成器的实现

前面介绍了代码生成器的实现原理。下面将从代码生成的四个阶段:存储模型、提取类图信息、构造存储信息的容器类、ERb模板匹配生成代码来描述代码生成的实现。

3.1.1 存储模型元素信息

本项目代码生成的目标模型是在Rational Rose2003建模平台上设计构造的,为将设计的模型直接生成程序代码,需要将模型系统的数据信息保存起来,以便生成器提取相应的模型元素。例如,在一个学校信息系统中(如图4所示),为了生成该系统的程序语言代码,必需把各个类,如学校、学生、部门等,及类与类之间的关系存储起来。项目采用Rose1.XML1.3.6Tools工具,将在Rational Rose2003平台上设计的系统模型导出为XMI1.1格式,利用XMI的元数据交换机制,存储模型元素信息,并应用于生成器的下一步解析、提取信息步骤。

图4 学校信息系统类图

3.1.2 信息提取

按照3.1.1节的设计,模型元素信息已经保存在XMI文件中,接下来就要从XMI文件中提取相应的模型信息。利用REXML接口,将由模型导出的XMI文件导入内存中,形成内存树。之后遍历DOM树。

本算法基于面向对象的思想,把每个模型元素抽象为类,实现了代码生成器组件的可重用性。

下面给出算法的具体数据结构:

1)将类图中的关系抽象为类。在该类中定义相关方法,它可以获取存储在XMI文件中的关系信息,图5所表示的是类图中关系的存储组织结构图。

2)

图5 存储类图(XMI文件)中关系的数据结构

另外在泛化关系中,利用了类中Root ,Specification , Generalization 等属性标签,建立继承关系树,在此数据结构中,构建Hashes表,来管理每一对具有父子关系的结点。

3)通过1)中存储类图中的关系信息,获取其两端类的信息,以及父类的信息,并将其封装在一个结点树中。信息的存储包括类自身信息的存储,比如类的数据成员、操作等,还有关联端信息的存储,比如在A与B的一对多关联中,要把class B类型的类变量定义在class A的数据成员中。它们分别由表示单个类的class Node中的方法和关系类中的addInformaition()操作实现。其结构图如图6所示。

图6存储类信息的树型数据结构

4)在构建好每一个类的存储结构以后,采用一个名为ClassList的数组来对所有的类进行管理。如图7所示。

图7 整个XMI 文件中的实体类组织成的数据结构

通过以上步骤,将建模系统的所有可生成代码的模型元素信息有效的组织起来,为模板文件提供了可传递的可替代变量。

3.1.3 ERb 模板匹配生成代码

如上小节描述的,模型系统中所有可以生成代码的模型元素已经被存储在合理的数据结构中,为了最终生成代码,之后需要进行模板匹配。每种语言都有自己的代码生成属性设置,代码模板会根据特定语言的代码生成属性设置提供不同的映射代码。所以编写ERb 模板(embedded Ruby [6],eRuby ,嵌入式Ruby 的一种实现,是一种类似于JSP ,ASP ,PHP ,或HTML 的文本模板工具,可以将Ruby 代码嵌入到文本文件)时要考虑特定语言的代码生成属性设置[7]

3.2 代码生成器性能测试

在Rational Rose2003平台上构建简单的类图模型,通过Rose XML 1.3.6 Tools 工具将其导出为XMI1.1格式,输入到项目实现的代码生成器中,生成器调用Java 模板,最后得到了一组Java 文件。测试模型如图8所示。由代码生 name : String manager : String getName()

name : String title : String = "graduate"age : Integer isMarried : Boolean salary : Integer address : String isAdult()

fullName()

upgrade()

getMarried()

addAge()+employer 0..1locatioin : String

style : String

price : Currency

getLocation()1

图8 测试类图模型

成器生成的Java文件如图9所示。

图9 生成的java文件

生成的Java文件均能通过JDK编译运行,准确地将模型元素生成相应的代码。在由类图模型导出的XML文件符合XMI规范的情况下,生成器能正确地生成代码。

4. 结论

本项目实现的基于UML CASE平台的代码生成器,能够正确的从简单的类图模型生成Java语言代码,并具有良好的效率。

参考文献

[1]Miller J , Mukerji J. Model Driven Architecture(MDA) [ EB/OL ]. https://www.wendangku.net/doc/dc13462128.html,/mda/, 2003.

[2]Carolyn Duby. Implementing UML Statechart Diagrams[A]. In Embedded Systems Conference [C], April

2001.

[3]Jon Oldevik, Arnor Solberg . Framework for Model Transformation and Code Generation[A] . EDOC’02[C].

IEEE Computer Society Massachusetts Ave., NW Washington, DC USA. P181, 2002.

[4]Evans Andy, Kent Stuart. Core Meta-Modelling Semantics of UML: The pUML Approach[EB/OL] .

https://www.wendangku.net/doc/dc13462128.html,/puml/papers/pumluml99.pdf, October 1999.

[5]Robin Cover. XML Metadata Interchange(XMI) Specification[ EB/OL]. https://www.wendangku.net/doc/dc13462128.html,/xmi.html,

January 2002.

[6]Yukihiro Matsumoto. Programming Ruby[M]. 孙勇等,电子工业出版社,2007年3月

[7]刘然等. 基于UML的CASE平台的代码自动生成[J]. 北京理工大学学报. 2002/22/2: 196-200

Research on Automatic Code Generation from UML Models Zhang Zhongbao1,Han Tongxin2,Liu Xiyang1

1 Software Engineering Institute,Xidian University,Xi′an(710071)

2 School of Computer Science and Engineering,BUAA (100083)

Abstract

The Design and Implementation of Code Generator based on UML CASE platform is described in this paper. Technique of code generation abouting executable UML has already been implemented in practice.However,one new object-oriented script language Ruby is applied for accessing XML Metadata Interchange documents produced by UML Class Diagram,along with Ruby-based REXML library.Above all,extracting corresponding datas from XMI DOM tree.Then,constructing certain data structure to store that datas.Finally,accessing these datas to generate Java-code framework by matching ERb templates.The whole process is under the Model Driven Development method and implement the transition form MDA’s platform-independent model to platform-specific model.

Keywords:Model,Code generation,MDA(Model-Driven Architecture)

作者简介:

张中宝,(1983-),男,硕士研究生,研究方向:模型检验。

韩同欣,(1983-),男,硕士研究生,研究方向:逆向工程。

刘西洋,(1970-),男,副教授,研究方向:模型检验、软件体系结构技术与应用。

UML实验心得体会

uml实验报告 学院 班级学号姓名 uml实验报告 实验一:用例图 实验结果: 小结实验心得体会: 用例模型用于需求分析阶段,它描述了待开发系统的功能需求,并驱动了需求分析之后 各阶段的开发工作。用例图是uml中用来对系统的动态方面进行建模的7种图之一。用例图 描述了用例、参与者以及它们之间的关系。用例图从用户角度描述系统功能,并指出各功能 的操作者。通过本次实验,我熟悉rational rose建模环境,更加清楚的了解了用例图的语 义和功能,如何清晰明了的识别参与者、用例,学会了如何使用事件流描述用例。同时掌握 了用例间的类属关系、include关系和extend关系的语义、功能和应用。最后通过本次实验 学习了如何使用用例图为系统的上下文以及系统的需求建模。 思考题: 1. 如果要删除参与者、用例,请问是在导航窗口删除,还是在绘图窗口删除? 答:都可以删除,但在绘图窗口中有两种删除方式:一种是只删除参与者、用例,而不 改变其在导航窗口中的存在,另一种是从建模中完全删除。 2. 如果要删除参与者和用例的联系,用例和用例的联系,请问是在绘图中删除,还是在 参与者或用例的设置对话框中删除? 答:都可以删除。 实验二:类对象模型的建立 实验结果: 小结实验心得体会: 类图是面向对象系统建模最常用的图,描述了类图、接口集、协作以及它们之间的关系。 类图描述了系统的静态设计视,该视主要体现系统的功能需求,即系统应该提供给用户的服 务。通过本次实验,加深了我对类图语义的理解和功能的应用,掌握了类之间的联系,关联、 依赖、聚合等,同时基本掌握了在rational rose中绘制类的关联、依赖、泛化关系。 思考题:选中一个模型对象,点击鼠标右键,比较快捷菜单项“edit——delete”与“edit ——delete from model”,它们二者之间区别在哪里? 答:“edit——delete”只是在绘图窗口中删除了模型对象,而“edit——delete from model”则是彻底的删除了模型对象。 实验三:顺序图、协作图 实验结果: 顺序图: 1. 归还图书 2.借出图书 协作图: 1. 归还图书 2. 借出图书 小结实验心得体会: 顺序图描述了对象之间的动态合作关系,它强调对象之间消息发送的时间顺序,同时显 示对象之间的交互。协作图与顺序图是同构的,rose可自动转换。顺序图是强调消息的交互

UML实验报告全

《系统分析与建模》实验指导书__2011__/__2012__年第__二__学期 姓名:____钱秀梅_________ 学号:__ 10030117_____ 班级:_ 10计一_______ 指导教师:___殷凯__________ 计算机科学与技术系编写

系统分析与建模实验指导书―1―计算机科学与技术系 目录 实验0 熟悉软件开发环境 (1) 实验1 用例图设计………………………………………………… 实验2 类和对象图设计 (3) 实验3 交互图设计 (7) 实验4 状态图设计 (9) 实验5 活动图设计 (12) 实验6 包图设计 (15) 实验7 物理图设计 (17) 附录考核登记表 (23)

实验0 熟悉软件开发环境 一、实验目的 学习使用EA开发环境创建模型的一般方法,理解EA界面布局和元素操作的一般技巧。 二、实验环境 软件平台:Microsoft Windows2000 /XP。软件工具:EA 7.5。 三、实验内容与要求 1.学会启动和关闭EA 7.5开发环境。 2.使用目标项目(Project)的向导创建一个项目。 3.了解EA 7.5界面的六大组成部分(菜单Menu、浏览器Browser、文档窗口Document Window、图窗口Diagram Window、日值窗口Log Window和工具栏。 4.在浏览器中实现如下操作:增加模型元素(包括角色、用例、类、组建、图等); 查看现有模型元素;查看现有模型元素之间的关系;移动模型元素;更名模型元 素;访问元素的详细规范。 5.分别在在图中增加删除图元素和在浏览器中增加删除图元素。 四、实验预习和准备 参考相关书籍,能够熟练地安装和使用EA 7.5软件建立模型。 五、实验过程与结果 读者 借书 还书 续借图0-1 用例图

UML各种图详解

UML用例图 用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块。展示了一个外部用户能够观察到的系统功能模型图。 用例图中涉及的关系: 1》泛化(Inheritance) 就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。 2》包含(Include) 包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。 3》扩展(Extend) 扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。

1 一个类和一个接口不同:一个类可以有它形态的真实实例,然而一个接口必须至少有一个类来实现它。在 UML 2 中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也有文本“interface”。 2》UML 支持的可见性类型的标志 3》多重值和它们的表示 4》类图之间的关系有:泛化(继承),依赖,关联,聚合/组合。 1.聚合/组合

聚合是一种特别类型的关联,用于描述“总体到局部”的关系。在基本的聚合关系中,部分类的生命周期独立于整体类的生命周期。 举例来说,我们可以想象,车是一个整体实体,而车轮轮胎是整辆车的一部分。轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。在这个实例中,Wheel类实例清楚地独立地Car类实例而存在。然而,有些情况下,部分类的生命周期并不独立于整体类的生命周期 -- 这称为合成聚合。举例来说,考虑公司与部门的关系。公司和部门都建模成类,在公司存在之前,部门不能存在。这里Department类的实例依赖于pany类的实例而存在。 ·基本聚合(聚合) 有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,你画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。 图中清楚的表明了类Car对象包含了另一类Wheel的4个实例,这两者在概念上是密不可分的,其中的一个类是另一个类的构成成分。菱形表示“包含”,箭头表示被包含的对象,数字4表示包含的数目。 ·组合聚合(组合) 组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。 注意:组合关系如聚合关系一样绘制,不过这次菱形是被填充的。 2.依赖 依赖可以说是要完成C5里的所有功能,一定要有C6的方法协助才行 3.关联 可以分为单向关联,双向关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。 单向关联:

20150528_152805_40_UML-实验报告(03)-类图

北京信息科技大学 实验(上机)报告 课程名称U M L及建模工具学号2012012194姓名李自然成绩_______

附录: 影片租赁源程序 //租赁类的定义 class Rental { private Movie _movie; // 影片 private int _rentDate; // 租赁日期 private int _daysRented; // 租期 public Rental(Movie movie, int daysRented) { _movie = movie; _daysRented = daysRented; } public int getDaysRented() { return _daysRented; } public Movie getMovie() { return _movie; } double getCharge() { return _movie.getCharge(_daysRented); } int getFrequentRenterPoints() { return _movie.getFrequentRenterPoints(_daysRented); } } //顾客类的定义 class Customer { private String _name; // 姓名private String _phone; // 电话号码private Vector _rentals = new Vector(); // 租借纪录

public Customer(String name) { _name = name; } public void addRental(Rental arg) { _rentals.addElement(arg); } public String getName() { return _name; } //输出租赁交易报告 public String statement() { Enumeration rentals = _rentals.elements(); String result = "Rental Record for " + getName() + "\n"; while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); //显示该顾客的每个租赁 result += "\t" + each.getMovie().getTitle()+ "\t" + String.valueOf(each.getCharge()) + "\n"; } //结尾打印(总费用和积分) result += "Amount owed is " + String.valueOf(getTotalCharge()) + "\n"; result += "You earned " + String.valueOf(getTotalFrequentRenterPoints()) + " frequent renter points"; return result; } //已超文本方式输出租赁交易报告 public String htmlStatement() { Enumeration rentals = _rentals.elements(); String result = "

Rentals for " + getName() + "

\n"; while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); //显示该顾客的每个租赁

UML 新编实验指导书(实验三 类图)

天津理工大学华信软件学院 天津理工大学(华信软件学院) 实验指导书 课程名称:软件工程与UML建模 适应课程: (1969216)

上机实验(三)创建类和类图 一、实验目的: 在Rose 环境下创建类和类图, 完成应用案例的类图设计。 二、实验内容: (一)创建类 1)根据“需求陈述”提炼对象和类 2)分析对象,并将对象抽象成类 (二) 创建类图 建立类之间的关系(关联关系、泛化关系、聚集或组合关系、依赖关系等)创建类图。 (三) 综合应用练习。 三、操作步骤: (一) 创建类 1、启动Rose 2003进入后,在左面结构框内右击Logical View; 2、选New 选Class Diagram ,再在Class Diagram下创建类; 3、给类命名(比如Course); 4、增加属性(右击框途中的类,选New Attribute); 5、添加类操作(右击框途中的类,选New Operation); (二) 建立类之间的关系 1.首先关联关系 (使用按钮工具,如果当前工具栏中没有,右击工具栏,然后添加相关按钮) 1) 单项关联; 2) 双向关联。 2.练习聚集和组合 (先建立关联,再右击靠近“整体”方的关联线,选Aggregate选项。) 3.然后泛化关系。 4.最后练习依赖关系。 四.实例练习(不能用课件及教材上的示例,要自己来想。) 1.举实例说明类之间的关联关系。 包括:单、双向关联、一对一关联、一对多关联、多对多关联、自反关联、限定关联和关联类。 2.举实例说明类之间的聚合(组合)关系。 3.举实例说明类之间的泛化(继承)关系。包括:单继承、多继承。 4.举实例说明接口与实现,抽象类与子类等。 五.综合应用: (一)以“学生选课系统”为例建立类图 1.“学生选课系统”涉及到的类: 1) Database类

UML各种图详解

父用例通常是抽象的。

1 一个类和一个接口不同:一个类可以有它形态的真实实例,然而一个接口必须至少有一个类来实现它。在 UML 2 中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也有文本“interface”。 2》UML 支持的可见性类型的标志 3》多重值和它们的表示

4》类图之间的关系有:泛化(继承),依赖,关联,聚合/组合。 1.聚合/组合 聚合是一种特别类型的关联,用于描述“总体到局部”的关系。在基本的聚合关系中,部分类的生命周期独立于整体类的生命周期。 举例来说,我们可以想象,车是一个整体实体,而车轮轮胎是整辆车的一部分。轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。在这个实例中,Wheel类实例清楚地独立地Car类实例而存在。然而,有些情况下,部分类的生命周期并不独立于整体类的生命周期-- 这称为合成聚合。举例来说,考虑公司与部门的关系。公司和部门都建模成类,在公司存在之前,部门不能存在。这里Department类的实例依赖于Company类的实例而存在。 ·基本聚合(聚合) 有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,你画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。 图中清楚的表明了类Car对象包含了另一类Wheel的4个实例,这两者在概念上是密不可分的,其中的一个类是另一个类的构成成分。菱形表示“包含”,箭头表示被包含的对象,数字4表示包含的数目。 ·组合聚合(组合) 组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。 注意:组合关系如聚合关系一样绘制,不过这次菱形是被填充的。 2.依赖 依赖可以说是要完成C5里的所有功能,一定要有C6的方法协助才行 3.关联 可以分为单向关联,双向关联

UML实验四建立类图

《面向对象技术UML》实验四报告实验名称: 类图的设计 系别: 计算机专业: 11软工班级: 姓名: 学号: 实验日期: 2013 年 4 月 7 日 教师审批签字: 分数: 1. 实验名称: 类图的设计与制作 2. 实验目的: 熟悉使用Rational Rose工具,建立类图。 3. 实验要求: 实验题目选为图书借阅管理系统(P232-233)。根据各自的基本功能要求和可选功能要求,延续实验二所选的用例及其用例描述,完成该用例的类图的设计与制作(包括:类名,属性,操作,类之间的关 系,版型);将实验步骤和屏幕显示记录下来,填写到实验结果栏。 参考“学习资料网站的分析与设计--20130407”提供的案例。主要参考图2.1、2.2,表2.1到2.9。 具体来说,根据某个用例的用例描述,设计出对应的基于协作的类图(含边界类、控制类、实体类。类之间的关系是依赖)和基于数据模式的实体类图(仅含实体类,实体类之间的关系是关联、泛化、组合、聚集等)。

4. 实验步骤: 任务1:环境设置 ①、选择Tools->Options。 ②、选择Diagram标签。 ③、确保选取Show Visibility、Show Stereotypes、Show Operation Signatures、Show All Attributes 和 Show All Operations复选框。 ④、确保取消Suppress Attrtbutes和Suppress operations复选框。 ⑤、选择Notation标签。 ⑥、确保取消Visibility as Icons复选框。 ⑦、单击OK,退出Options 窗口。 任务2:创建类 根据实验二制作的用例,创建该用例要用到的所有类。 ①、右单击浏览器的Logical View。 ②、选择New->C1ass Diagram。 ③、为新框图命名。双击打开新框图。 ④、选择类工具栏“Class”按钮,创建所有的类(自己命名)。 任务3:将版型加进类中(可选做) 根据需要,可以将任务2创建的类赋予相应的版型(stereotype)。版型的类型可以有:boundary型、control 型、entity型。本任务的目的是将一些类具体归纳到边界类、控制类、实体类中之一。 ①、右单击框图中的某个(些)类,从弹出菜单中选择Open Specification。在版型(stereotype)字段中输入boundary,单击OK。 ②、右单击框图中的某个(些)类,从弹出菜单中选择Open Specification。在版型(stereotype)字段中输入control,单击OK。 ③、右单击框图中的某个(些)类,从弹出菜单中选择Open Specification。在版型(stereotype)字段中输入entity,单击OK。 任务4:增加属性 ①、右单击框图中的某个类,从弹出菜单中选择New

UML用例图等9种图的中文样例

软件工程的5个阶段:需求分析(Requirements Capture),系统分析与设计(System Analysis and Design),实现(Implement),测试(Test),维护(Maintenance)。 2.UML的定义包括UML语义和UML表示法两个部分。UML语义描述基于UML 的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致和通用的定义性说明。UML表示法,为开发者或开发工具使用图形工具和文本语法为系统建模提供了标准。 3.UML(Unified Modeling Language)由视图(View),图(Diagram),模型元素(Model Element),通用机制(General Mechanism)等组成,还提供了扩展机制(Extension Mechanism),使得UML语言能够适应一个特殊的方法或者扩充到一个组织或用户。 a)视图是表达系统的某一方面特征的UML建模元素的子集,由多个图构成,是在某一个抽象层上,对系统的抽象表示。 b)图是模型元素集的图形表示,通常由弧(关系)和顶点(其他模型元素)相互连接构成。 c)模型元素代表面向对象中的类、对象、消息和关系等概念,是构成图的基本概念。 d)通用机制用于表示其他信息,比如注释、模型元素的语义等。 4.UML用模型来描述系统的结构或静态特征,以及行为或动态特征,从不同的视角为系统架构建模,形成不同视角: a)用例视图(Use Case View),强调从用户角度看到的或需要的系统功能,是被称为参与者的外部用户所能观察到的系统功能的模型图。 b)逻辑视图(Logical View),展现系统的静态或结构组成及特征,也被称为结构模型视图(Structural Model View)或者静态视图(Static View)。 c)并发视图(Concurrent View),体现了系统的动态或者行为特征,也称为行为模型视图(Behavioral Model View)或动态视图(Dynamic View)。 d)组件视图(Component View),体现了系统实现的结构和行为特征,也称为实现模型视图(Implementation Model View)。 e)配置视图(Deployment View),体现了系统实现环境的结构和行为特征,也被称为环境模型视图(Environment Model View)或者物理视图(Physical View)。 5.视图由图构成,UML提供了9种不同的图: a)用例图(Use Case Diagram),描述系统功能;

信息管理系统 UML实验三__类图

实验三.类图 第一题:软件学院打算开发一个学生选课系统。画出系统类图! 1.新的系统允许学生利用局域网上的PC机来注册本学期的课程,并可以查看自己已学的所有课程的所有成绩。新的系统允许教师决定要教哪些课程,并通过管理员更新数据库,教师在学期末登记自己教授的课程的成绩。 2.学院已有课程目录(course catalog)数据库部分,课程目录数据库中保存了所有的课程信息新的学生注册系统将读取课程目录数据库中的课程信息,但不会修改数据库中的课程信息。管理员通过其它系统来维护课程信息 3.在每个学期初,学生可以获取这个学期所开设的所有课程的目录,在课程目录中包含每门课的详细信息,如professor(讲课教师,因为后面约定老师可以有教授、副教授和讲师3种类型), department, prerequisite等。 4.每个学生在一个学期,根据自己所在系的培养计划,必修课必须选,选修课自愿,但一学期不可超过8门课程,不少于3门课程。(第8周周二到周五可以退课,但必须保证本学期课程不少于3门,退课需交纳50/门的费用,由计费系统扣费,扣费成功后,该门课程从学生的选课计划中删除,否则,退课不成功) 5.每门课的学生人数最多为200人,最少为30人,如果选修课学 生人数少于30人,该门课将被取消,必修课无最低人数限制。 在每个学期,有一个选课期,在这个时间段内,学生可以改变他们的选课计划(Schedule),注册系统允许学生在这段时间内可以增加或删除所选课程,选课最后一天只能选课,不可退课,在学期结束的时候,学生可以通过系统查询成绩,由于学生成绩属于敏感信息,因此系统要有安全措施来防止非授权的存取。(学生查询成绩前,需要先评教)。 6.教师可以读取系统来获取他们所教的课程的信息,可以了解哪些学生选了他们的课,也可以登记该门课程的学生成绩。 7.教师分为讲师、副教授、教授。 此系统涉及到得参与者有:①学生;②教师;③管理员;④课程目录数据库;⑤计费系统。 第二题画出系统类图 问题描述: 使用信用卡可以在AMT机上进行取款,针对一次取款,建立其类图。 其中系统涉及的参与者有:①顾客②银行工作人员;③A TM取款机 第三题: 画出系统类图 问题描述: 某购物网站,针对下述问题,建立一个类图:有两种顾客,一种是常客,享受公司的一些优惠待遇;另一种是散户。所以其参与者有:顾客、常客、散客和员工 第四题根据下面的陈述画出类图 1)学生包括本科生、研究生两种。 2)研究生的一部分利用课余时间担任助教。 3)教师包括助教、讲师和教授三种。 4)一名助教可以为一位讲师或一位教授助课,一位讲师只能有一名助教,一位教授可以有5名助教。

UML用例图的画法

一.UML简介 UML(统一建模语言,Unified Modeling Language)是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。在系统分析阶段,我们一般用UML来画很多图,主要包括用例图、状态图、类图、活动图、序列图、协作图、构建图、配置图等等,要画哪些图要根据具体情况而定。其实简单的理解,也是个人的理解,UML的作用就是用很多图从静态和动态方面来全面描述我们将要开发的系统。 二.用例建模简介 用例建模是UML建模的一部分,它也是UML里最基础的部分。用例建模的最主要功能就是用来表达系统的功能性需求或行为。依我的理解用例建模可分为用例图和用例描述。用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。用例描述用来详细描述用例图中每个用例,用文本文档来完成。 1.用例图 参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。比如小明是图书馆的管理员,他参与图书馆管理系统的交互,这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。 用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。这是UML对用例的正式定义,对我们初学者可能有点难懂。我们可以这样去理解,用例是参与者想要系统做的事情。对于对用例的命名,我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称。 系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。

UML实验报告

一、实验目的 熟悉软件建模工具PowerDesigner的安装和使用,使用PowerDesigner绘制用例图,熟悉用例文档的编写,掌握系统需求模型的构造过程;学习使用PowerDesigner绘制类图。 二、实验内容 1. 根据如下场景构造需求模型,使用PowerDesigner绘制用例图,撰写用例“在线预订客房”和“前台预订客房”的用例描述文档,并进行模型检查。 某酒店订房系统描述如下: (1) 顾客可以选择在线预订,也可以直接去酒店通过前台服务员预订; (2) 前台服务员可以利用系统直接在前台预订房间; (3) 不管采用哪种预订方式,都需要在预订时交相应订金; (4) 前台预订可以通过现金或信用卡的形式进行订金支付,但是网上预订只能通过信用卡进行支付; (5) 利用信用卡进行支付时需要和信用卡系统进行通信; (6) 客房部经理可以随时查看客房预订情况和每日收款情况。 2. 某电话公司决定开发一个客户信息管理系统,系统功能如下: (1) 浏览客户信息:任何使用Internet的网络用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。 (2) 登录:电话公司授予每个客户一个账号。拥有授权账号的客户可以使用系统提供的页面设置个人密码,并使用该账号和密码向系统注册。公司管理人员也可以通过登录对客户信息进行管理。 (3) 修改个人信息:客户在系统中注册后,可以发送电子邮件或者使用系统提供的页面对个人信息进行修改。 (4) 删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。 绘制该系统的用例图。 3. 根据如下描述绘制类图: 某商场会员管理系统包含一个会员类(Member),会员的基本信息包括会员编号、会员姓名、联系电话、电子邮箱、地址等,会员可分为金卡会员(GoldMember)和银卡会员(SilverMember)两种,不同类型的会员在购物时可以享受不同的折扣;每个会员可以拥有一个或多个订单(Order),每一个订单又可以包含至少一条商品销售信息(ProductItem),商品销售信息包括订单编号、商品编号、商品数量、商品单价和折扣等;每一条商品销售信息对应一类商品(Product),商品信息包括商品编号、商品名称、商品单价、商品库存量、商品产地等。

UML实例图讲解

UML实践----用例图、顺序图、状态图、类图、包图、协作图 2009-01-20 作者:Randy Miller 来源:网络 面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出。许多建模工具封装了UML(也就是Unified Modeling Language?),这篇课程的目的是展示出UML的精彩之处。 UML中有九种建模的图标,即: ?用例图 ?类图 ?对象图 ?顺序图 ?协作图 ?状态图 ?活动图 ?组件图 ?配置图 本课程中的某些部分包含了这些图的细节信息的页面链接。而且每个部分都有一个小问题,测试一下你对这个部分的理解。 为什么UML很重要? 为了回答这个问题,我们看看建筑行业。设计师设计出房子。施工人员使用这个设计来建造房子。建筑越复杂,设计师和施工人员之间的交流就越重要。蓝图就成为了这个行业中的设计师和施工人员的必修课。 写软件就好像建造建筑物一样。系统越复杂,参与编写与配置软件的人员之间的交流也就越重要。在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”。现在它已经成为了软件行业的一部分了。UML提供了分析师,设计师和程序员之间在软件设计时的通用语言。 UML被应用到面向对象的问题的解决上。想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的。一个模型model就是根本问题的抽象。域domain就是问题所处的真实世界。 模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的。记住把一个对象想象成“活着的”。对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations)。对象的属性的值决定了它的状态state。 类Classes是对象的“蓝图”。一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数)。对象是类的实例instances。 用例图 用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象。强调这个系统是什么而不是这个系统怎么工作。 用例图与情节紧紧相关的。情节scenario是指当某个人与系统进行互动时发生的情况。下面是一个医院门诊部的情节。 “一个病人打电话给门诊部预约一年一次的身体检查。接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录。”

uml实验报告1-9

实验一UML建模基础 一、实验目的 1.熟悉UML建模工具Rational rose的可视化环境。 2.掌握利用Rational rose进行建模的步骤。 二、实验内容 1.熟悉Rational rose建模环境 (1)单击“开始—>所有程序—>IBM Rational—>Rational Rose Enterprise Edition”,启动Rational Rose建模环境,软件启动后产生如图1.1所示的建模模型窗口。 图1.1 Rational rose 启动提示界面 (2)选项卡【new】用来选择新建模型时采用的模板。单机【Details】按钮可以查看选中模板的描述。【Existing】选项卡用于打开一个已经存在的模型。【Recent】选项卡可以打开一个最近打开的模型文件。如暂时不需要任何模板,只需要建立一个新的空白模型文件,单击【Cancel】按钮,显示Rational rose主界面,如图1.2所示。

图1.1 Rational rose 主界面 (3) 主界面包含五大部分:导航窗口、绘图窗口、工具栏、文档窗口和日志窗口。 ①导航窗口:用于在模型中迅速漫游。导航窗口类似于windows 操作系统的资源管理器,它以树形结构显示了模型中的所有元素,包括参与者、用例、类、组件等。利用导航窗口可以: a) 增加模型元素 参与者、用例、类、组件、框图。 b) 浏览现有模型元素。 c) 浏览现有模型元素间的关系。 d) 移动模型元素。 e) 更名模型元素。 f) 将模型元素加进框图。 g) 将文件或UML 链接到元素。 h) 将元素组成包。 i) 访问元素的详细规范。 j) 打开图形。 导航窗口四个视图根结点。 a) 用例视图(Use Case View):用于管理需求分析获取的所有用例、参与者和用例图。 b) 逻辑视图(Logic View):分析和设计完成的所有制品(如类图、对象图、顺序图、活动图、状态图等)放置在逻辑视图中。 图1.3 导航窗口

实验八 UML类图

实验八UML—类图 1 实验要求与目的 ●了解面向对象的基本概念; ●熟练使用Visio绘制类图; 2 实验原理与背景知识 1、面向对象: 面向对象方法是一种把面向对象思想应用于软件开发过程中,知道开发活动的系统方法。对象是由数据和操作组成的封装提,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象,而继承是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 2、UML 面向对象分析与设计方法的发展在20世纪80年代末到90年代中出现了一个高潮,统一建模语言(UML)就是这个高潮的产物。UML是由面向对象方法领域的3位著名专家Grady Booch、James Rumbaugh和Ivar Jacobson提出的,标志着面向对象建模方法进入了第三代。 UML已得到许多世界知名公司的使用和支持,并于1997年11月17日被OMG(Object Management Group)组织采纳,成为面向对象建模的标准语言。目前为止,OMG提交给国际标准化组织(ISO)的UML 1.4版已经通过审核成为国际标准(ISO/IEC 19501:2005)。十几年来,UML已经迅速成长为一个事实上的工业标准。不论在计算机学术界、软件产业界还是在商业界,UML已经逐渐成为人们为各种系统建模、描述系统体系结构、商业体系结构和商业过程时使用的统一工具,并且在实践过程中人们还在不断扩展它的应用领域。 3、类图 类、对象及它们之间的关系,是面向对象技术中最基本的元素。使用面向对象技术解决实际问题时,需要建立面向对象的模型,其中类模型和对象模型揭示了系统的静态结构。在UML中,类模型和对象模型分别用类图和对象图表示。类图技术是面向对象方法的核心,对象图实际上是类图的变种,是类图的实例。 类图是创建其他UML图的基础。 类图不仅定义软件系统中的类,描述类与类之间的关系,它还表示类的内部结构(类的属性和操作)。类图描述的是一种静态关系,它是从静态角度表示系统的。 (1)定义类 UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域(下面两个区域可省略),3个区域分别放类的名字、属性和操作。类名是一类对象的名字。命名是否恰当对系统的可理解性影响相当大,类命名的准则如下: 使用标准术语;使用具有确切含义的名词;必要时用名词短语作名字。 (2)定义类的属性 选取类的属性时应考虑的原则:

UML实验三 分析、设计并使用Rose创建类图

UML统一建模语言实验 实验三分析、设计并使用Rose创建类图 1实验目的 1.1学会分析与设计实际项目需示中的静态模型 1.2掌握在Rational Rose 2007中绘制类图 2实验内容 2.1阅读、理解并创建教材附录《课程实验一饭店预订管理系统》中的类图 (267页)。 2.1.1理解其中的类元素、类之间的关系(依赖、关联、泛化、实现), 其中关联关系理解其多重性。 2.1.2在Rational Rose中创建教材中的类图,探索工具中类以及类之间的 关系等模型元素的属性表示。 2.2综合实例分析:图书管理系统的静态建模 参考实验二对图书管理系统已经完成的需求分析和用例图的创建结 果,进一步分析该系统的静态模型,即类的设计。整个过程中,注意 类之间关系的使用,类名、属性名、成员名的命名规则。 要求: 1)对类的分析按照实体类、界面类、控制类的类型分别设计; a)一个功能的路径:用户类-》界面类–》控制类–》实体类 2)每一个类,考虑其应对外提供的功能,确定操作和属性,对于操作尽 量细化到每个操作应该有的参数和返回值; 2.2.1设计与创建系统的用户类与实体类 根据基本的需求描述,用户类与实体类至少要包括以下: ●借阅者(Borrower) ●图书管理员(Librarian) ●书刊(Book) ●物理书刊(BookItem) ●借书记录(Loan) ●预订记录(Reservation)

思考:以上这些存储于数据库的实体类,都要提供增(add)、删(delete)、改(update)、查(get)的操作,能否抽象出一个公用类来定义这些共同操作?该如何定义? 2.2.2设计与创建系统的界面类 1)为系统的主要功能设计系统的界面,至少应该分为登录界面、借还 书服务界面、信息管理界面; 2)细分每个界面大类下的子界面类:如借书服务界面应该至少包括借 阅界面、退还界面、预约界面等等; a)思考:主界面类与子界面类的关系是什么? b) 3)根据用户可能对相应界面进行的操作,定义界面类的操作,以便在

UML实验报告

《面向对象与UML》 实验报告 实验一UML建模基础 一、实验目的 1.熟悉UML建模工具Rational rose的可视化环境。 2.掌握利用Rational rose进行建模的步骤。 二、实验内容

1.熟悉Rational rose建模环境 2.建模基本步骤 退出系统 用例编号:UC01 用例名称:登陆系统 简要说明:成功打开服务器,并登陆系统 主要参与者:学生 前置条件:学生成功打开服务器 后置条件:成功登陆系统 基本事件流:1.输入帐号 2.输入密码 3.点击确认键系统校验 4.系统确认,学生成功登陆系统 扩展事件流:3a.系统校验失败,系统提示重新输入帐号密码或放弃登陆系统3a1)学生重新输入帐号密码转到第4步 3a2)放弃登陆,终止操作 用例编号:UC02 用例名称:成绩查询 简要说明:完成查询成绩信息 参与者:学生 前置条件:学生成功登陆系统 后置条件:成功查询到成绩

基本事件流:1.学生向系统发出查询成绩请求 2.选择要查询的科目,系统校验 3.成功查询到成绩信息 扩展事件流:2a.系统校验失败,系统提示重新选择输入科目信息或放弃查询 2a1)学生重新输入科目信息,转到第三步 2a2)放弃查询,终止操作 用例编号:UC03 用例名称:退出系统 简要说明:完成退出系统操作 主要参与者:学生 前置条件:学生已成功登陆系统 后置条件:学生成功退出系统 基本事件流:1.点击退出系统按钮 2.成功退出系统 用例编号:UC05 用例名称:找回系统密码 简要说明:完成找回密码功能 参与者:学生 前置条件:成功打开服务器,密码丢失 后置条件:成功找回密码 基本事件流:1.点击找回密码按钮 2.输入新密码 3.重新输入新密码,系统校验 4.系统完成校验,密码成功找回 扩展事件流:3a.系统校验失败,系统提示两次输入密码不符,请重新输入。转到步骤4。 3.结合日常生活中实际使用的系统,模仿2中的用例模型绘制用例图,并保存模型,熟悉利用Rational rose的建模过程,要求绘制的用例图中用例与2中的用例图不相同。

UML各种图例齐全—用例图、类图、状态图、包图、协作图、顺序图详细说明画法和功能

UML各种图例 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language?),这篇课程的目的是展示出UML的精彩之处. UML中有九种建模的图标,即: ?用例图 ?类图 ?对象图 ?顺序图 ?协作图 ?状态图 ?活动图 ?组件图 ?配置图 本课程中的某些部分包含了这些图的细节信息的页面链接.而且每个部分都有一个小问题,测试一下你对这个部分的理解. 为什么UML很重要? 为了回答这个问题,我们看看建筑行业.设计师设计出房子.施工人员使用这个设计来建造房子.建筑越复杂,设计师和施工人员之间的交流就越重要.蓝图就成为

了这个行业中的设计师和施工人员的必修课. 写软件就好像建造建筑物一样.系统越复杂,参与编写与配置软件的人员之间的交流也就越重要.在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”.现在它已经成为了软件行业的一部分了.UML提供了分析师,设计师和程序员之间在软件设计时的通用语言. UML被应用到面向对象的问题的解决上.想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的.一个模型model就是根本问题的抽象.域domain就是问题所处的真实世界. 模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的.记住把一个对象想象成“活着的”.对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations).对象的属性的值决定了它的状态state. 类Classes是对象的“蓝图”.一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数).对象是类的实例instances. 用例图 用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象.强调这个系统是什么而不是这个系统怎么工作. 用例图与情节紧紧相关的.情节scenario是指当某个人与系统进行互动时发生的情况.下面是一个医院门诊部的情节. “一个病人打电话给门诊部预约一年一次的身体检查.接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录.” 用例Use case是为了完成一个工作或者达到一个目的的一系列情节的总和.角色actor是发动与这个工作有关的事件的人或者事情.角色简单的扮演着人或者对象的作用.下面的图是一个门诊部Make Appointment用例.角色是病人.角色与用例的联系是通讯联系communication association(或简称通讯communication)

实验三 UML类图建模

辽宁工程技术大学上机实验报告 实验名称实验三UML类图建模 院系专业班级 姓名学号日期 实验 目的 简述本次实验目的:掌握用建模工具创建用例图的方法; 实验准备你为本次实验做了哪些准备:上课时认真听讲,学习关于上机时的知识; 上机前认真复习上机所需要用到的知识; 实验 进度 本次共有 2 个练习,完成 2 个。 实验总结本次实验的收获、体会、经验、问题和教训: 通过这次实验,对RationalRose2003中有关类的操作有了更深层次的了解,同时学会了对Rose中工具栏未显示元素的添加操作。另外,对类和关联的识别以及类之间的关联、聚集和组合、泛化、依赖等关系的确认中容易犯的错误有了深刻的体会。 教师 评语 成绩

实验三UML类图建模 一、实验目的 1、理解类的基本概念 2、理解类间的关系 3、掌握类图的绘制方法 二、实验工具 面向对象可视化建模工具Rational Rose 2003。 三、实验性质 本实验为设计性实验。 四、实验内容 1. 参考第五部分中的步骤,绘制如下页的类图——图书管理系统类图。 2.根据下面编程语言部分语法的描述,构建一张类图,显示由该语言编程的程序的结构。 模块由特性集合组成。一个特性可以是一个变量、一个子程序或者是一个嵌套的模块。子程序由声明和语句两部分组成。子程序的局部特性可以在声明部分进行声明,语句部分则由一组非空的语句序列组成。语句包括循环、条件或赋值语句,而每个赋值语句都包含一个对将被赋值的变量的引用。 (识别类和关系)

建立类图的过程就是对领域问题极其解决方案的分析和设计过程,关键是要准确的找出系统中的类及它们之间的联系,并加以设计调整。 下面以选课系统为例介绍在Rose2003中类图的创建步骤: (1)创建新的类图:在“Logical View“中双击Main图,或者右击“Logical View“,弹出在快捷菜单中选择“New”->“Class Diagram”,双击图标,为编辑类图做好准备。 (2)增加一个类: 方法一:在逻辑视图中,从工具栏中选择class图标,在右边的绘图区中添加一个新元素,并取名表明新增一个类。 方法二:右键单击“Logical View“,新建一个类,并把它拖到右面的模型图的窗口中。 (3)选择新创建的元素,点击鼠标右键,在弹出的菜单中选择“Open Sepcification”,弹出图1对话框。 (4)在对话框中,可以修改元素的名称,如图2所示。 (5)点击“Attributes”选项卡,添加属性,如图3所示。 (6)点击“operations”选项卡,添加方法如图4所示。 (7)同样的方法添加Course类,如图5所示。 (8)创建两个类之间的关系,通过分析得出:学生类和课程类之间为单向关联。 选择图标栏的“关联”,由学生类指向课程类。如图6所示。 (9)创建关联名。右击关联,选择“open specification“,键入关联名,如图7所示。 (10)分别在“Role A Detail“和“Role B Detail“选项卡中键入名称和多重性,如图8所示。 (11)重复(2)-(10)中的步骤完成选课系统整个类图的创建。

相关文档