zoukankan      html  css  js  c++  java
  • 移动架构-UML

    UML(Unified Modeling Language),UML规范用来描述建模的概念有,类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态。这里对UML做一个简单介绍

    前言

    UNL虽然有很多功能,但平时有的最多的就是类图,时序图和用例图,那么接下来分别对这三种功能做一个简要概述

    类图

    在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Composition), 依赖(Dependency)

    泛化(Generalization)

    【泛化关系】:是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父类的所有特征和行为. 例如:老虎是动物的一种, 即有老虎的特性也有动物的共性
    【箭头指向】:带三角箭头的实线,箭头指向父类
    UML-类图-泛化

    实现(Realization)

    【实现关系】:是一种类与接口的关系, 表示类是接口所有特征和行为的实现.
    【箭头指向】:带三角箭头的虚线,箭头指向接口
    UML-类图-实现

    关联(Association)

    【关联关系】:是一种拥有的关系, 它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子
    关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
    【代码体现】:成员变量
    【箭头及指向】:带普通箭头的实心线,指向被拥有者
    UML-类图-关联1
    上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生
    UML-类图-关联2
    上图为自身关联

    聚合(Aggregation)

    【聚合关系】:是整体与部分的关系, 且部分可以离开整体而单独存在. 如车和轮胎是整体和部分的关系, 轮胎离开车仍然可以存在.
    聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
    【代码体现】:成员变量
    【箭头及指向】:带空心菱形的实心线,菱形指向整体
    UML-类图-聚合

    组合(Composition)

    【组合关系】:是整体与部分的关系, 但部分不能离开整体而单独存在. 如公司和部门是整体和部分的关系, 没有公司就不存在部门.
    组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期
    【代码体现】:成员变量
    【箭头及指向】:带实心菱形的实线,菱形指向整体
    UML-类图-组合

    依赖(Dependency)

    【依赖关系】:是一种使用的关系, 即一个类的实现需要另一个类的协助, 所以要尽量不使用双向的互相依赖.
    【代码表现】:局部变量、方法的参数或者对静态方法的调用
    【箭头及指向】:带箭头的虚线,指向被使用者
    UML-类图-依赖

    各种关系的强弱顺序

    泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
    下面这张UML图,比较形象地展示了各种类图关系:
    UML-类图-类图的关系强弱顺序

    时序图

    时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的。顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序。时序图中包括的建模元素主要有:角色(Actor)、对象(Object)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等等

    角色(Actor)

    系统角色,可以是人、及其甚至其他的系统或者子系统

    对象(Object)

    对象包括三种命名方式:
    第一种方式包括对象名和类名
    第二中方式只显示类名不显示对象名,即表示他是一个匿名对象
    第三种方式只显示对象名不显示类明

    生命线(Lifeline)

    生命线在顺序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间,如下图
    UML-时序图-生命线

    控制焦点(Focus of Control)

    控制焦点是顺序图中表示时间段的符号,在这个时间段内对象将执行相应的操作。用小矩形表示。如下图表示
    UML-时序图-控制焦点

    消息(Message)

    消息一般分为同步消息(Synchronous Message),异步消息(Asynchronous Message)和返回消息(Return Message).如下图所示
    UML-时序图-消息

    • 同步消息=调用消息(Synchronous Message
      消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。
    • 异步消息(Asynchronous Message
      消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
    • 返回消息(Return Message
      返回消息表示从过程调用返回
    • 自关联消息(Self-Message
      表示方法的自身调用以及一个对象内的一个方法调用另外一个方法
      UML-时序图-自关联消息
    • Combined Fragments
      表示带有一些特定条件发送的消息
      UML-时序图-Combined Fragments
      如上图,就表示,循环(loop)发送GetProperty消息获得属性。在使用Astah画时序图时,选择一个Combined Fragments之后,可以在其对应的属性面板更改对应的发送条件。里面介绍了很多,此处列举一二:
      Alternative fragment(denoted "alt")if…then…else对应
      Option fragment (denoted "opt")Switch对应
      Parallel fragment (denoted "par")表示同时发生
      Loop fragment(denoted "loop")for或者Foreach对应

    用例图

    用例图主要用来描述“用户、需求、系统功能单元”之间的关系。它展示一个外部用户能够观察到的系统功能模型图。用例图多用于静态建模阶段(主要是业务建模和需求建模),帮助开发团队以一种可视化的方式理解系统的功能需求

    参与者(Actor)

    在系统外部与系统直接交互的人或事物;需要注意以下两点:
    1)参与者是角色而不是具体的人,它代表了参与者在与系统打交道的过程中所扮演的角色。所以在系统的实际运作中,一个实际用户可能对应系统的多个参与者。不同的用户也可以只对应于一个参与者,从而代表同一参与者的不同实例
    2)参与者作为外部用户(而不是内部)与系统发生交互作用,是它的主要特征。
    在UML中,参与者使用如图所示的一个小人表示
    UML-用例图-参与者

    用例(Use Case)

    系统外部可见的一个系统功能单元。系统的功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。用椭圆表示,椭圆中的文字简述系统的功能
    UML-用例图-用例

    关系(Relationship)

    UML-用例图-关系
    关联(Association)
    表示参与者与用例之间的交互,通信途径,任何一方都可发送或接受消息
    箭头指向:指向消息接收方
    UML-用例图-关联
    泛化(Inheritance)
    在编程中,泛化关系是一种很重要的关系,我们随处可见
    泛化关系是一般和特殊关系,就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的
    箭头指向(需要特别注意):指向父用例
    UML-用例图-泛化
    包含(Include)
    包含关系用来把一个较复杂用例所表示功能分解成较小的步骤。包含用例是必须的,如果缺少包含用例,基用例就不完整;包含用例必须被执行。
    箭头指向:指向分解出来的功能用例
    UML-用例图-包含
    扩展(Extend)
    扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。扩展用例是可选的,如果缺少扩展用例,不会影响到基用例的完整性。
    箭头指向(需要特别注意):指向基用例
    UML-用例图-拓展
    供一个完整的系统的用例图
    UML-用例图-完整用例图

  • 相关阅读:
    细说java平台日志组件
    linux远程执行命令
    linux命令 common 文件比较
    Linux Shell脚本编程--cut命令
    linux sort命令
    shell中if判断一个变量为空
    linux shell if参数
    wc命令
    date 命令
    let 与 expr Shell运算比较 let强强胜出
  • 原文地址:https://www.cnblogs.com/cj5785/p/10664629.html
Copyright © 2011-2022 走看看