UML--示范.(uml图用什么软件画用例图、类图、序列图、时序图、包图....)
2010-12-19 14:39
中文版: 面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出。许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML的精彩之处。 UML中有九种建模的图标,即: l 用例图 l 类图 l 对象图 l 顺序图 l 协作图 l 状态图 l 活动图 l 组件图 l 配置图 本课程中的某些部分包含了这些图的细节信息的页面链接。而且每个部分都有一个小问题,测试一下你对这个部分的理解。 ――――――――――――――――――――――――――――――――――――――― 为什么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) 角是人状的图标,用例是一个椭圆,通讯是连接角和用例的线。 一个用例图是角,用例,和它们之间的联系的集合。我们已经把Make Appointment作为一个含有四个角和四个用例的图的一部分。注意一个单独的用例可以有多个角。 用例图在三个领域很有作用。 l 决定特征(需求)。当系统已经分析好并且设计成型时,新的用例产生新的需求 l 客户通讯。使用用例图很容易表示开发者与客户之间的联系。 l 产生测试用例。一个用例的情节可能产生这些情节的一批测试用例。 类图 类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统。类图是静态的-它们显示出什么可以产生影响但不会告诉你什么时候产生影响。 下面是一个顾客从零售商处预定商品的模型的类图。中心的类是Order。连接它的是购买货物的Customer和Payment。Payment有三种形式:Cash,Check,或者Credit。订单包括OrderDetails(line item),每个这种类都连着Item。 UML类的符号是一个被划分成三块的方框:类名,属性,和操作。抽象类的名字,像Payment是斜体的。类之间的关系是连接线。 类图有三种关系。 l 关联association-表示两种类的实例间的关系。如果一个类的实例必须要用另一个类的实例才能完成工作时就要用关联。在图中,关联用两个类之间的连线表示。 l 聚合aggregation-当一个类属于一个容器是的一种特殊关系。聚合用一个带菱形的连线,菱形指向具有整体性质的类。在我们的图里,Order是OrderDetails的容器。 l 泛化generalization-一个指向以其他类作为超类的继承连线。泛化关系用一个三角形指向超类。Payment是Cash,Check和Credit的超类。 一个关联有两个尾端。每个尾端可以有一个角名role name来说明关联的作用。比如,一个OrderDetail实例是一个Order实例的项目。 关联上的方向性navigability箭头表示该关联传递或查询的方向。OrderDetail类可以查询他的Item,但不可以反过来查询。箭头方向同样可以告诉你哪个类拥有这个关联的实现;也就是,OrderDetail拥有Item。没有方向性的箭头的关联是双向。 关联尾端的数字表示该关联另一边的一个实例可以对应的数字端的实例的格数,通过这种方式表达关联的多样性multiplicity。多样性的数字可以是一个单独的数字或者是一个数字的范围。在例子中,每个Order只有一个Customer,但一个Customer可以有任意多个Order。 下面这个表给出了最普遍的多样性示例。
每个类图包括类,关联和多样性表示。方向性和角是为了使图示得更清楚时可选的项目。 包和对象图 为了简单地表示出复杂的类图,可以把类组合成包packages。一个包是UML上有逻辑关系的元件的集合。下面这个图是是一个把类组合成包的一个商业模型。 dependencies关系。如果另一个的包B改变可能会导致一个包A改变,则包A依赖包B。 包是用一个在上方带有小标签的矩形表示的。包名写在标签上或者在矩形里面。点化线箭头表示依赖 对象图Object diagrams用来表示类的实例。他们在解释复杂关系的细小问题时(特别是递归关系时)很有用。 这个类图示一个大学的Department可以包括其他很多的Departments。 这个对象图示上面类图的实例。用了很多具体的例子。 UML中实例名带有下划线。只要意思清楚,类或实例名可以在对象图中被省略。 每个类图的矩形对应了一个单独的实例。在 协作图 协作图也是互动的图表。他们像序列图一样也传递相同的信息,但他们不关心什么时候消息被传递,只关心对象的角。在序列图中,对象的角放在上面而消息则是连接线。 对象角矩形上标有类或对象名(或者都有)。类名前面有个冒号(:)。 协作图的每个消息都有一个序列号。顶层消息的数字是1。同一个等级的消息(也就是同一个调用中的消息)有同样的数字前缀,再根据他们出现的顺序增加一个后缀1,2等等。 状态图 对象拥有行为和状态。对象的状态是由对象当前的行动和条件决定的。状态图statechart diagram显示出了对象可能的状态以及由状态改变而导致的转移。 我们的模型例图建立了一个银行的在线登录系统。登录过程包括输入合法的密码和个人账号,再提交给系统验证信息。 登录系统可以被划分为四种不重叠的状态:Getting SSN, Getting PIN, Validating, 以及 Rejecting。每个状态都有一套完整的转移transitions来决定状态的顺序。 状态是用圆角矩形来表示的。转移则是使用带箭头的连线表示。触发转移的事件或者条件写在箭头的旁边。我们的图上有两个自转移。一个是在Getting SSN,另一个则在上Getting PIN。 初始状态(黑圆圈)是开始动作的虚拟开始。结束状态也是动作的虚拟结束。 事件或条件触发动作时用(/动作)表示。当进入Validating状态时,对象并不等外部事件触发转移。取而代之,它产生一个动作。动作的结果决定了下一步的状态。 活动图 活动图activity diagram是一个很特别的流程图。活动图和状态图之间是有关系的。状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程动作流程。活动图告诉了我们活动之间的依赖关系。 对我们的例子来说,我们使用如下的过程。 “通过ATM来取钱。” 这个活动有三个类Customer, ATM和 Bank。整个过程从黑圆圈开始到黑白的同心圆结束。活动用圆角矩形表示。 活动图可以被分解成许多对象泳道swimlanes ,可以决定哪些对象负责那些活动。每个活动都有一个单独的转移transition连接这其他的活动。 转移可能分支branch成两个以上的互斥的转移。保护表达式(在[]中)表示转移是从一个分支中引出的。分支以及分支结束时的合并merge在图中用菱形表示。 转移也可以分解fork成两个以上的并行活动。分解以及分解结束时的线程结合join在图中用粗黑线表示 组件与配置图 组件component是代码模块。组件图是是类图的物理实现。 配置图Deployment diagrams则是显示软件及硬件的配置。 下面的配置图说明了与房地产事务有关的软件及硬件组件的关系。 物理上的硬件使用节点nodes表示。每个组件属于一个节点。组件用左上角带有两个小矩形的矩形表示。 转载自:dn.codegear/article/31863 | ||||||||||||
UML提供9种视图:类图、对象图,用例图,序列图、协作图,状态图、活动图,构件图和部署图。
2011-04-20 21:38
UML设计的9种图例概论 1、用例图 描述角以及角与用例之间的连接关系。 说明的是谁要使用系统,以及他们使用该系统可以做些什么。 一个用例图包含了多个模型元素, 如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。 2、类图 类图是描述系统中的类,以及各个类之间的关系的静态视图。 能够让我们在正确编写代码以前对系统有一个全面的认识。 类图是一种模型类型,确切的说,是一种静态模型类型。 3、对象图 与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。 4、活动图 描述用例要求所要进行的活动,以及活动间的约束关系, 有利于识别并行活动。 能够演示出系统中哪些地方存在功能, 以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。 5、状态图 描述类的对象所有可能的状态,以及事件发生时状态的转移条件。 可以捕获对象、子系统和系统的生命周期。 他们可以告知一个对象可以拥有的状态, 并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。 一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类; 该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。 6、序列图(顺序图) 序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。 顺序图可以用来展示对象之间是如何进行交互的。 顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。 7、协作图 和序列图相似,显示对象间的动态合作关系。 可以看成是类图和顺序图的交集,协作图建模对象或者角,以及它们彼此之间是如何通信的。 如果强调时间和顺序,则使用序列图; 如果强调上下级关系,则选择协作图; 这两种图合称为交互图。 8、构件图 (组件图) 描述代码构件的物理结构以及各种构建之间的依赖关系。 用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。 9、部署图 (配置图) 是用来建模系统的物理部署。 例如计算机和设备,以及它们之间是如何连接的。 部署图的使用者是开发人员、系统集成人员和测试人员。 几种图的区别: 一:这九种模型图各有侧重 1:用例图侧重描述用户需求, 2:类图侧重描述系统具体实现; 二:描述的方面都不相同 1:类图描述的是系统的结构, 2:序列图描述的是系统的行为; 三:抽象的层次也不同 1:构件图描述系统的模块结构,抽象层次较高, 2:类图是描述具体模块的结构,抽象层次一般, 3:对象图描述了具体的模块实现,抽象层次较低。 在有的文献书籍中,将这九种模型图分为三大类: 结构分类、动态行为和模型管理: 1:结构分类包括用例图、类图、对象图、构件图和部署图, 2:动态行为包括状态图、活动图、顺序图和协作图, 3:模型管理则包含类图。 画图说明 UML(统一建模语言):是面向对象的可视化建模的一种语言。 是数据库设计过程中,在E-R图(实体-联系图)的设计后的进一步建模。 UML中有3种构造块: 事物、关系和图,事物是对模型中最具有代表性的成分的抽象; 关系是把事物结合在一起; 图聚集了相关的的事物。 具体关系图标如下: 说明: 构件事物是名词,是模型的静态部分。 行为事物是动态部分,表示行为。 分组事物是组织部分。 注释事物是解释部分。 依赖:一个事物变化会引起另一个事物变化。 聚集:特殊的关联,描述整体与部分的组合关系。 泛化:是一种特殊与一般的关系,如子元素(特殊)与父元素(一般),箭头指向父元素。 实现:类元之间的关系,其中一个类元指定了由另一个类元保证执行的契约。 一般用在接口和实现他们的类之间或用例和实现它们的协作之间。 1. 类(Class): 表示对某种对象的封装。具体表示如下图, 最上面一格代表类名,斜体表示该类为抽象类;第二格表示该类的特性,就是常说的字段和属性;第三格表示类的操作, 即方法和行为。前面的+号表示public,-表示private,#表示protected。 2. 接口(Interface): 是指一系列方法的声明,没有实现,实现该接口的类负责实现该接口的方法。 其中,最上面一格表示接口名称,第二格表示该接口定义的一些方法。 3. 继承(Inheritance):是指使用已存在的类的定义作为基类,可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。具体表示方法是空心三角形+实线。 当然,Java语言中为了实现类似C++的多继承机制,还有个实现(Implements)接口的类图,具体表示方法是空心三角形+虚线或者下图的棒棒糖表示法。 4.关联(Association): 当一个类需要“知道”另一个类时,就可以用关联来表示, 使用实线箭头来表示。 5.聚合(Aggregation):是一种弱的“拥有”关系, 相当于包含,但不是其中的一部分, 以便和合成区分开来,使用空心菱形+实线箭头来表示。 6.合成(Composition): 也叫组合,是一种强的“拥有关系”,体现的是一种局部和整体的关系, 其生命周期和整体一样,使用实心的菱形+实线箭头来表示。 其中连线两段的数字表示基数,表明一个类可以有几个实例,一个人有一个脑袋,所以用1:1表示。 7.依赖(Dependency): 比如,人类要喝水,要吃饭等,体现的是一种依赖关系, 使用虚线箭头来表示。 UML提供9种视图:类图、对象图,用例图,序列图、协作图,状态图、活动图,构件图和部署图。 在UML系统开发中有三个主要的模型: 功能模型: 从用户的角度展示系统的功能, 包括用例图。 对象模型: 采用对象,属性,操作,关联等概念展示系统的结构和基础, 包括类图。 动态模型: 展现系统的内部行为。 包括序列图,活动图,状态图。 下面具体说明: 1.类图:描述一组对象、接口、协作等事物之间的关系。 如下图(摘自网络): 注:#表示protected,+表示Public,-表示private 2.对象图:描述一组对象之间的关系,是具有具体属性值和行为的一个具体事物, 其是类图中所建事物实例的静态快照, 其与类图的主要区别是一个是抽象的,而对象图是具体的。 如下图: 3.用例图:描述一组用例、参与者以及它们之间的关系, 其展示的是该系统在它的外面环境中所提供的外部可见服务。如下图: 4.交互图:包括序列图(顺序图)和协作图,两者对应, 顺序图是强调消息时间顺序,有对象生命线和控制焦点。 协作图是强调接收和发送消息的对象的结构组织,有路径和顺序号。如下图(摘自网络): 序列图: 协作图: 5.状态图:展示了一个状态机, 由状态、转换、事件和活动组成。 强调事件行为的顺序。如下图): 6.活动图:是一种特殊的状态图,实现一个活动到另一个活动的流程。 如下图(摘自网络): 7.构件图和部署图:构件图展示一组构件之间的组织和依赖关系, 并以全局的模型展示出来。 部署图是构件的配置及描述系统如何在硬件上部署。如下图: |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论