类图及绘制工具StarUML
类图及绘制工具 StarUML Unified Modeling Language (UML)又称统一建模语言或 标准建模语言,是始于 1997 年一个 OMG 标准,它是一个支 持模型化和软件系统开发的图形化语言,为软件开发的所有 阶段提供模型化和可视化支持,包括由需求分析到规格,到 构造和配置。面向对象的分析与设计(OOAD,OOAD) 方法的发展在 80 年代末至 90 年代中出现了一个高潮,而 UML 就是这个高潮的产物。OMG:对象管理组织(Object Management Group) UML 由 3 个要素构成:UML 的基本构造块、支配这些构造 块如何放置在一起的规则和运用于整个语言的公用机制。 UML 有 3 种基本的构造块:事物、关系和图。 事物是对模型中最具有代表性的成分的抽象,包括结构事 物,如:类(Class) 、接口(Interface) 、协作(Collaboration) 、 用例(UseCase) 、主动类( ActiveClass) 、组件( Component) 和节点(Node) ;行为事物,如交互(Interaction) 、态机 (Statemachine) 、分组事物(包,Package) 、注释事物(注 解,Note) 。 关系用来把事物结合在一起,包括:依赖、关联、泛化和实现 关系。UML 中有九种建模的图标,即: 用例图、类图、对象图、顺序图、协作图、状态图、活动图、 组件图、配置图用例图 Use case diagrams 描述了作为一个外部的观察者的视角对系统的印象。强调这 个系统是什么而不是这个系统怎么工作。 用例图与情节紧紧相关的。情节 scenario 是指当某个人与系 统进行互动时发生的情况。用例图在三个领域很有作用: 1.决定特征(需求) 。当系统已经分析好并且设计成型时,新 的用例产生新的需求; 2.客户通讯。使用用例图很容易表示开发者与客户之间的联 系; 3.产生测试用例。一个用例的情节可能产生这些情节的一批 测试用例。 类图 Class diagram 通过显示出系统的类以及这些类之间的关系来表示系统。类 图是静态的———它们显示出什么可以产生影响但不会告 诉你什么时候产生影响。UML 类的符号是一个被划分成三 块的方框:类名,属性,和操作。抽象类的名字,是斜体的。 类之间的关系是连接线。类图有三种关系: 1.关联 association-表示两种类的实例间的关系。 如果一个类 的实例必须要用另一个类的实例才能完成工作时就要用关 联。在图中,关联用两个类之间的连线表示; 2.聚合 aggregation-当一个类属于一个容器是的一种特殊关 系。 聚合用一个带菱形的连线, 菱形指向具有整体性质的类。 在我们的图里,Order 是 OrderDetails 的容器; 3.泛化 generalization-一个指向以其他类作为超类的继承连 线。 泛化关系用一个三角形指向超类。 Payment 是 Cash, Check 和 Credit 的超类。 包和对象图 为了简单地表示出复杂的类图, 可以把类组合成包 packages。 一个包是 UML 上有逻辑关系的元件的集合。 顺序图 为交互图,是动态的(它们描述了对象间的交互作用)。顺序 图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖 线向下延伸。横向轴代表了在协作中各独立对象的类元角 色。类元角色用生命线表示。当对象存在时,角色用一条虚 线表示,当对象的过程处于激活状态时,生命线是一个双道 线。消息用从一个对象的生命线到另一个对象生命线的箭头 表示。箭头以时间顺序在图中从上到下排列。 协作图 协作图也是互动的图表。他们像序列图一样也传递相同的信 息, 但他们不关心什么时候消息被传递, 只关心对象的角色。 在序列图中,对象的角色放在上面而消息则是连接线。对象 角色矩形上标有类或对象名(或者都有) 。类名前面有个冒 号(: ) 。 协作图的每个消息都有一个序列号。顶层消息的数字是 1。 同一个等级的消息(也就是同一个调用中的消息)有同样的 数字前缀,再根据他们出现的顺序增加一个后缀 1,2 等等。 状态图 对象拥有行为和状态。对象的状态是由对象当前的行动和条 件决定的。状态图 statechart diagram 显示出了对象可能的状 态以及由状态改变而导致的转移。 状态是用圆角矩形来表示的。转移则是使用带箭头的连线表 示。触发转移的事件或者条件写在箭头的旁边。 初始状态(黑色圆圈)是开始动作的虚拟开始。结束状态也 是动作的虚拟结束。 事件或条件触发动作时用(/动作)表示。动作的结果决定了 下一步的状态。 活动图 activity diagram 活动图是一个很特别的流程图。活动图和状态图之间是有关 系的。状态图把焦点集中在过程中的对象身上,而活动图则 集中在一个单独过程动作流程。活动图告诉了我们活动之间 的依赖关系。 转移可能分支 branch 成两个以上的互斥的转移。 保护表达式 (在[ ]中)表示转移是从一个分支中引出的。分支以及分支 结束时的合并 merge 在图中用菱形表示。 转移也可以分解 fork 成两个以上的并行活动。分解以及分解 结束时的线程结合 join 在图中用粗黑线表示。 组件图 组件 component是代码模块。 组件图是是类图的物理实现。 配置图 Deployment diagrams 显示软件及硬件的配置。 物理上的硬件使用节点 nodes 表示。 每个组件属于一个节点。 组件用左上角带有两个小矩形的矩形表示。 详细内容参考 这里就主要讲解一下类图的要点:UML 类图常见的几种关 系:泛化(Generalization) 是一种继承关系,表示一般与特殊的关系,它指定了子类如 何特化父类的所有特征和行为。 例如:人是动物的一种,即有人的特性也有动物的共性。 箭头指向:带三角箭头的实线,箭头指向父类泛化 实现(Realization) 是一种类与接口的关系,表示类是接口所有特征和行为的实 现. 箭头指向:带三角箭头的虚线,箭头指向接口实现 关联(Association) 是一种拥有的关系,它使一个类知道另一个类的属性和方 法;如:老师与学生,丈夫与妻子关联可以是双向的,也可 以是单向的。 双向的关联可以有两个箭头或者没有箭头,单向的关联有一 个箭头。 代码体现:成员变量 箭头及指向:带普通箭头的实心线,指向被拥有者关联 老师与学生是双向关联,老师有多名学生,学生也可能有多 名老师。但学生与某课程间的关系为单向关联,一名学生可 能要上多门课程,课程是个抽象的东西他不拥有学生。特殊 情况:自身关联自身关联 聚合(Aggregation) 聚合是整体与部分的关系,且部分可以离开整体而单独存 在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以 存在。聚合关系是关联关系的一种,是强的关联关系;关联 和聚合在语法上无法区分,必须考察具体的逻辑关系。 代码体现:成员变量 箭头及指向:带空心菱形的实心线,菱形指向整体聚合 组合(Composition) 是整体与部分的关系,但部分不能离开整体而单独存在。如 公司和部门是整体和部分的关系,没有公司就不存在部门