UML详解(二)

二、图

1、用例图(Use Case Diagram)

用例图
含义:参与者(Actor)、用例(Use Case)以及他们之间关系构成的用来描述系统功能的动态视图。

作用:用例图是需求分析中的产物。可视化表达系统需求;完全从外部定义系统功能,即需求与设计完全分离;还可以定义系统功能的使用环境和上下文。具有直观,规范等优点。

参与者和参与者之间的泛化关系,用例和用例之间的包含、泛化、扩展关系,参与者和用例之间的关联关系。

  • 构成要素

    • 参与者(谁来做)
      参与者是与目标系统交互的对象,参与者实质上也是类。可以是人、设备、其他系统或任何概念。例:事件作为参与者
      在这里插入图片描述

    • 用例(做什么)
      通过以下问题寻找用例:
      1.参与者希望系统提供什么功能?
      2.系统是否存储和检索信息,如果是,由哪个参与者触发?
      3.当系统改变状态时,是否通知参与者?
      4.是否存在影响系统的外部事件?
      5.哪个参与者通知系统这些事件?

      用例的粒度:用例所包含的系统服务或功能单元的多少。
      用例规约:
      ■ 简要说明
      ■ 事件流:包括基本流和备选流
         基本流:用例“正常”执行时的场景
         备选流:用例执行过程中可能发生的“异常”情况
      ■ 用例场景:由基本流和备选流的组合来对场景进行描述
      ■ 特殊需求:非功能性需求或者设计约束等
      ■ 前置条件:执行用例前系统必须所处的状态或满足的条件
      ■ 后置条件:用例执行完毕后可能处于的一组状态

      在这里插入图片描述

    • 关联

    • 系统边界

  • 三种重要关系

    • 泛化
      一个父用例可以被特化成多个子用例,而父用例与和子用例之间的关系就泛化关系。泛化侧重表示子用例间的 互斥性。
      在这里插入图片描述
      泛化与包含关系的异同:
      同:泛化与包含都增强了基础(父)用例的功能;
      异:
      ① 包含是组合关系,泛化是继承关系;
      ② 包含中的多个基用例是可以同时执行的,而泛化中的多个子用例在一次活动中仅会执行一个;

    • 包含
      包含关系:用例可以简单地包含其他用例具有的行为,并把它所包含的用例作为自身行为的一部分。包含侧重表示被包含用例对参与者提供服务的间接性。
      在这里插入图片描述
      包含关系的主要两种:
      ① 多个用例有同一段行为,则可以把这段共同行为单独抽象成一个用例,然后让其他用例来包含这一用例。
      在这里插入图片描述
      ② 某个用例功能过多,事件流过于复杂,也可以把某一段事件流单独写成一个用例,达到简化的目的(用例的粒度控制)。
      在这里插入图片描述

    • 扩展
      扩展关系:在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例,原有的用例叫基础用例。扩展侧重表示扩展用例的触发不确定性。
      在这里插入图片描述
      扩展关系与包含关系的区别:
       扩展关系中,基础用例提供了一个或多个插入点,扩展用例为这些插入点提供了需要插入的行为。
       扩展关系中,基础用例的执行不一定涉及到扩展用例,扩展用例的执行是具有条件性的。
       即使没有扩展用例,基础用例也是一个完整的用例。

2、类图

2.1 类图

类图

  • 四种关系
    在这里插入图片描述
    • 依赖关系
      依赖是两个或多个模型元素之间语义上的连接关系,发生在一个类使用了另外一个类。
      依赖关系在代码中的体现形式:
       一个类调用另外一个共有类。
       一个类作为另外一个类中方法的局部变量。
       一个类作为另外一个类中方法的参数或者返回值。

      例如,一个人(Person)可以买车(car)和房子(House),Person类依赖于Car类和House类的定义,因为Person类引用了Car和House。与关联不同的是,Person类里并没有Car和House类型的属性,Car和House的实例是以参量的方式传入到buy()方法中去的。

    • 泛化关系
      泛化(继承)关系用来描述类的一般和具体之间的关系,具体类拥有一般类的所有特性、成员和关系。
      在这里插入图片描述

    • 关联关系
      关联关系是一种结构关系,指出了一个事物的对象(类)与另一个事物的对象(类)之间的连接。它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。在Java语言中,关联关系一般使用成员变量来实现。 在这里插入图片描述
      特性:

      • 关联名称
      • 角色
      • 多重性
      • 导航性

      关联类:
      在这里插入图片描述
      关联中两种重要关系:

      • 聚集(Aggregation)
        聚集描述了部分和整体的关系。与关联关系一样,聚集关系也是通过实例变量实现的,但是关联关系所涉及的两个类是处在同一层次上的,而在聚集关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。 数据结构中的集合、线性表等与他们的元素之间都是聚集关系。
        聚集关系:部分类可以没有整体类而独立存在。
        在这里插入图片描述
      • 组成(Composition)
        组成是一种更强形式的关联,也称强聚合关系。部分与整体的生命周期是一致,不能独立存在。
        组成关系:部分类不能脱离整体单独存在。
        在这里插入图片描述
    • 实现关系
      实现关系用来规定接口和实现接口的类或者构件之间的关系。
      在这里插入图片描述

2.2 对象图(系统某一运行时刻的快照。)

对象图

 
ps:UML笔记(三)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值