UML

1. 基本元素

构造型(stereotype):代表模型元素集的关键字

  • 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,用_实线空心三角头_表示泛化关系(子类指向父类)
  • 实现指的是一个class类实现interface接口(可以是多个)的功能,用_虚线空心三角头_表示实现关系(实现类指向接口)
  • 依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A,用

    _虚线箭头_表示依赖关系(依赖方指向被依赖)
  • 关联体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,用_实线箭头_表示关联关系
  • 聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;用_空心菱形_表示聚合关系(把相对独立的类,聚合在一起,比如大雁与雁群)
  • 组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合,组合关系中的整体与部分具有同样的生存周期,用_实心菱形_表示组合关系(组合类的实例化依赖与被组合的类,且被组合的类对于客户端是封闭的,比如大雁与雁翅)

关联关系强弱:组合>聚合>关联>依赖

2. 静态图

  • 类图:描述一类或者一组具有类似属性和共同行为的事物

  • 对象图:对象是一个类的实例,是具有具体属性值的一个具体事物

  • 用例图定义:由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的静态视图称为用例图。

用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。

  • 包含:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。这时包含关系可以用来理清关系。
  • 扩展:系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导出、打印和查询相对独立,而且为查询添加了新行为。
  • 泛化:子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。

3. 实现图

  • 构件图:用于描述一组构件这间的组织和依赖关系,用于建模系统中的静态实现视图

  • 部署图:用来描述系统运行时进行处理的结点以及在结点上活动的构件的配置,大多数用来描述硬件的拓扑结构

4. 行为图

  • 顺序图:类图和对象图表达的是系统的静态结构,顺序图所表达的正是这种基于时间的动态交互

交互图:描述对象之间的消息传递,分为顺序图和协作图,顺序图强调对象之间消息发送的时间序,协作图强调对象间的动态协作关系

  • 协作图:它强调收发消息的对象的组织结构,主要用来对单调的、顺序的控制流建模,但它也可以用来对包括迭代和分支在内的复杂控制流程进行建模

  • 状态图:在任一给定的时刻,一个对象总是处于某一特定的状态,描述从状态到状态的控制流

  • 活动图:本质上是一种流程图,它描述从活动到活动的控制流

附录

  • 交互图 interactive diagram
  • 状态图 statechart diagram
  • 活动图 active diagram
  • 用例图 use case diagram
  • 类图 class diagram
  • 对象图 object diagram
  • 包图 package diagram
  • 顺序图 sequence diagram
  • 协作图 collaboration diagram
  • 构件图 component diagram
  • 部署图 deployment diagram
  • 领域模型 domain model