zoukankan      html  css  js  c++  java
  • UML建模

    UML中的图

    UML包括九种图:使用案例图、类图、对象图、构件图、部署图、活动图、协作图、状态图、序列图。在这些图中使用案例图、类图、序列图是最有用的。
    根据其用意,可以将其划分为结构型图和行为型图两种。
    结构型图:描述系统的静态结构。在显示系统中类及类之间的关系时最有用。
    行为型图:描述系统的动态性质。在显示系统中元素如何协作产生满足要求的系统行为方面是最有用。

    结构型图

     
    显然,要描述一个设计模式的静态结构,使用类图和对象图是很合适的。

    行为型图

     
    显然,要描述一个设计模式的行为特征,使用状态图和时序图是很合适的。

    应当指出的是,一个使用UML的系统设计,往往是从使用案例图开始的,而且是一个设计应当是使用案例驱动的。

    UML中的关系

    在UML中有4种关系:
    (1)依赖关系
    依赖(dependency)是两个模型元素间的语义关系,其中一个元素(独立元素)发生变化会影响另一个元素(依赖元素)的语义(也就是说“独立元素”中引用了“依赖元素”)。在图形上,把依赖画成一条可能有方向的虚线,偶尔在其上还带有一个标记如图2-15所示。   

    (独立元素)(依赖元素)

    图2-14      依赖关系


    (2)关联关系

    关联(association)是类之间的结构关系,它描述了一组链,链是对象(类的实例)之间的连接。聚合是一种特殊类型的关联,它描述了整体和部分间的结构关系。在图形上,把关联画成一条实线,它可能有方向,偶尔在其上还带有一个标记,而且它还经常含有诸如多重性和端名这样的修饰,如图2-15所示。关于关联我们将在下面进一步详述。

                                                                                      

    图2-15      关联


    (3)泛化关系

    泛化(generalization)是一种特殊/一般关系,在其中特殊元素(子元素)基于一般元素(父元素)而建立。用这种方法,子元素共享了父元素的结构和行为(也就是说“子元素”继承了“父元素”)。在图形上,把泛化关系画成一条带有空心箭头的实线,该实线指向父元素,如图2-16所示。

    (子元素)(父元素)

    图2-16      泛化关系

    (4)实现关系

    实现(realization)是类目之间的语义关系,其中的一个类目指定了由另一个类目保证执行的合约。在两种地方会遇到实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用况和实现它们的协作之间。在图形上,把实现关系画成一条带有空心箭头的虚线,它是泛化和依赖关系两种图形的结合,如图2-17所示。

    (实现)(接口)

    图2-17      实现关系

    泛化关系(一般化关系):表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化关系是子类指向父类的,或从实现接口的类指向被实现的接口,与继承或实现的方向相反。如下图所示:

     


    图:一般化关系

    关于UML图中的关联
     

    关联关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联关系包括单向关联、双向关联、聚合关联、合成关联、反射关联关系。

    可能的多重值描述
    表示 含义
    0..1 0个或1个
    1 只能1个
    0..* 0个或多个
    * 0个或多个
    1..* 1个或我个
    3 只能3个
    0..5 0到5个
    m..n m到n个

    表:多重值和它们的表示


    单向关联:在一个单向关联中,两个类是相关的,但是只有一个类知道这种联系的存在。图7 显示单向关联的透支财务报告的一个实例。

     

    图7 :单向关联的透支财务报告


    双向关联:两个类彼此知道它们间的联系,除非你限定一些其它类型的关联。图 6 显示了在Flight类和Plane类之间的的双向关联。

     
    图 6      在Flight类和Plane类之间的双向关联


    聚合关联:有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。图12 显示车和轮胎间的聚合关系的例子。

     
    图12      车和轮胎间的聚合关系
     

    合成关联(组合聚合关系):组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。在图13中,显示了Company类和Department类之间的组合关系,注意组合关系如聚合关系一样绘制,不过这次菱形是被填充的。

     
    图13:Company类和Department类之间的组合关系
     

    反射关联:类也可以使用反射关联与它本身相关联。起先,这可能没有意义,但是记住,类是抽象的。图14 显示一个Employee类如何通过manager / manages角色与它本身相关。当一个类关联到它本身时,这并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关。
     
     
    图14 :Employee类通过manager / manages角色与它本身相关

    标志

    可见性类型

    +

    Public

    #

    Protected

    -

    Private

    ~

    Package


    表4:UML支持的可见性类型的标志

     

  • 相关阅读:
    【提高组】
    【学习】数论
    【2019.10.2】NOIP2018 模拟赛
    【普及组BOSS】
    ELK搭建elasticsearch常见报错
    Linux 下 安装Python第三方模块工具箱pip,以及用pip安装的方法
    Centos 基本命令不能用恢复方法
    Docker0 网卡删除
    Tomcat 设置开机自启
    Python 终端输出字体颜色
  • 原文地址:https://www.cnblogs.com/duanxz/p/2556103.html
Copyright © 2011-2022 走看看