精华内容
下载资源
问答
  • 类图在UML中用于表示类以及类与类之间静态关系的信息,也是我们在学习设计模式时最重要一种模型,通过UML类图,我们可以更加清晰明了理解设计模式工作原理,在后续章节中会频繁使用到。 类图中的关系表示符 ...

    UML简介

    UML(Unified Modeling Language,UML)统一建模语言,是用来设计软件蓝图的可视化建模语言,它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。

    类图

    类图在UML中用于表示类以及类与类之间的静态关系的信息,也是我们在学习设计模式时最重要的一种模型,通过UML类图,我们可以更加清晰明了的理解设计模式的工作原理,在后续章节中会频繁使用到。

    类图中的关系表示符

    在使用UML进行面向对象设计时,为了清晰的表述类与类之间的关系,UML提供了一系列的关系标识符,如下所示:

    • Dependency:表示依赖关系;
    • Association:表示关联关系;
    • Generalization:表示泛化关系,也就是继承关系;
    • Realization:表示实现,即一个类实现一个接口;
    • Aggregate:表示聚合关系;
    • Composite:表示组合关系;

    类图中的关系表示法

    1. 依赖关系

    假如一个 A 类 中使用了另一个类 B,则说明类 A依赖于类 B,使用的方式有很多种,例如:成员变量、方法参数、返回值、以及在方法中的局部变量,这些都属于依赖关系,在UML类图中,依赖关系表示如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2. 泛化关系

    泛化关系是依赖关系中的一种特例,如果一个类 B 继承于类 A,则说明类A 与类 B之间存在泛化关系。
    在这里插入图片描述

    3. 实现关系

    实现关系也是依赖关系中的一种特例,如果一个类B 实现了接口 A,则说明两者之间存在实现关系;
    在这里插入图片描述

    4. 关联关系

    • 关联关系实际上是类与类之间的关系,他是依赖关系的特例。
    • 关联关系具有导航性:即双向关系和单向关系
    • 关联关系具有多重性:如“1”(表示有且仅有一个),“0…”(表示0个或多个),“0,1”(表示0个或1个),“n…m”(表示n到m个都可以),“m…”(表示至少m个)
      在这里插入图片描述

    5. 聚合关系

    聚合关系表示整体与部分的关系,整体与部分可以分开聚合关系是关联关系的特例,所以它也具有导航性和多重性。
    在这里插入图片描述

    6. 组合关系

    如果认为类之间具有不可分割的关系,则升级为组合关系,组合也是整体与部分的关系,但是整体与部分不可分开,组合关系是关联关系中的一种强耦合关系。

    在这里插入图片描述

    展开全文
  • 类图(Class diagram)是最常用的UML图, 用于描述系统结构化设计, 主要包括类、接口以及它们之间结构和关系, 下面就一起看下这两部分.一. 基本模型-类类基本模型包括三部分: 类名, 属性, 方法.属性和方法都可以...
    f180a7f2f1a49b89b9a5be66b17528e6.png

    类图(Class diagram)是最常用的UML图, 用于描述系统的结构化设计, 主要包括类、接口以及它们之间的结构和关系, 下面就一起看下这两部分.

    一. 基本模型-类

    类的基本模型包括三部分: 类名, 属性, 方法.

    属性和方法都可以使用三种可见性修饰符:

    + : public

    # : protected

    - : private

    二. 类之间关系

    实体关系顾名思义是指类与类或者类与接口之间的关系.

    (1)继承关系: is-a 关系, 使用空心箭头 + 实线表示;

    (2)实现接口: is-a 关系, 使用空心箭头 + 虚线表示;

    (3)关联关系: has-a关系, 类与类之间的联接, 一个类知道另一个类的方法, 使用实线 + 箭头表示;

    (4)依赖关系: use-a关系, 一个类依赖于另一个类的定义, 可以是类的属性, 或者方法参数, 或者局部变量等, 使用虚线 + 箭头表示;

    (5)聚合关系: has-a关系, 整体和个体的关系,如羊群与羊, 使用空心菱形+实线+箭头;

    (6)组合关系: has-a关系, 整体和部分的关系,如羊与羊角, 使用实心菱形+实线+箭头;

    下面有图有真相

    ef67fad7a813746f60476833d3f8bcd7.png

     推 / 荐 / 阅/ 读 

    ●如何讲好这个“用户故事”

    ●提效 | 如何写好设计文档

    ●SMART | 明确目标管理原则

    展开全文
  • 常用UML图的使用场景

    2012-10-05 10:49:00
    类图:最常用,描述子系统或模块内部结构 序列/时序:单个场景下,子系统间或对象间交互操作 ...包:大型系统实际代码中,各子系统间、应用分层间依赖关系 组件:实际模块或逻辑分层间,...

    类图:最常用,描述子系统或模块的内部结构

    序列图/时序图:单个场景下,子系统间或对象间的交互操作

    活动图:流程图与序列图的结合,可以在序列图的基础上表达更多业务逻辑,比序列图更能表达细节

    状态图:多场景、多种操作下,系统或对象的状态变化

    通信图:序列图的变种,形式更自由,不能体现子系统的生命周期

    包图:大型系统实际代码中,各子系统间、应用分层间的依赖关系

    组件图:实际模块或逻辑分层间,接口的依赖关系

    部署图:各子系统所使用的软件环境,部署的软件包信息

    用例图:描述需求的场景或粗略用例

    其他杂图:个人认为,只有能把问题从某个角度描述清楚,便于大家理解,图怎么画都行

    转载于:https://www.cnblogs.com/todsong/archive/2012/10/05/2712055.html

    展开全文
  • UML图关系大全

    千次阅读 2009-08-11 15:10:00
    UML类图关系大全 1、关联双向关联:C1-C2:指双方都知道对方存在,都可以调用对方公共属性和方法。在GOF设计模式书上是这样描述:虽然在分析阶段这种关系是适用,但我们觉得它对于描述设计模式内关系...
    
    

    1、关联


    双向关联:
    C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。

    在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。对象引用本身就是有向的,更适合表达我们所讨论的那种关系。所以这种关系在设计的时候比较少用到,关联一般都是有向的。

    使用ROSE 生成的代码是这样的:

    class C1 
    ...{
    public:
        C2* theC2;

    };

    class C2 
    ...{
    public:
        C1* theC1;

    };

    双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。





    单向关联:
    C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。没有生命期的依赖。一般是表示为一种引用。

    生成代码如下:

    class C3 
    ...{
    public:
        C4* theC4;

    };

    class C4 
    ...{

    };

    单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。



    自身关联(反身关联):
    自己引用自己,带着一个自己的引用。

    代码如下:

    class C14 
    ...{
    public:
        C14* theC14;

    };

    就是在自己的内部有着一个自身的引用。

    2、聚合/组合

    当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。



    聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。这句话怎么解,请看下面组合里的解释)。

    代码如下:

    class C9 
    ...{
    public:
        C10 theC10;

    };

    class C10 
    ...{

    };

     



    组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。在《敏捷开发》中还说到,A组合B,则A需要知道B的生存周期,即可能A负责生成或者释放B,或者A通过某种途径知道B的生成和释放。

    他们的代码如下:

    class C7 
    ...{
    public:
        C8 theC8;

    };

    class C8 
    ...{
    };

    可以看到,代码和聚合是一样的。具体如何区别,可能就只能用语义来区分了。

    3、依赖



    依赖:
    指C5可能要用到C6的一些方法,也可以这样说,要完成C5里的所有功能,一定要有C6的方法协助才行。C5依赖于C6的定义,一般是在C5类的头文件中包含了C6的头文件。ROSE对依赖关系不产生属性。

    注意,要避免双向依赖。一般来说,不应该存在双向依赖。

    ROSE生成的代码如下:

    // C5.h
    #include "C6.h"

    class C5 
    ...{

    };

    // C6.h
    #include "C5.h"

    class C6
    ...{

    };

    虽然ROSE不生成属性,但在形式上一般是A中的某个方法把B的对象作为参数使用(假设A依赖于B)。如下:

    #include "B.h"
    class A
    ...{
              void Func(B &b);
    }

    那依赖和聚合/组合、关联等有什么不同呢?

    关联是类之间的一种关系,例如老师教学生,老公和老婆,水壶装水等就是一种关系。这种关系是非常明显的,在问题领域中通过分析直接就能得出。

    依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可以说是“uses”了那个类),就可以把这种关系看成是依赖,依赖也可说是一种偶然的关系,而不是必然的关系,就是“我在某个方法中偶然用到了它,但在现实中我和它并没多大关系”。例如我和锤子,我和锤子本来是没关系的,但在有一次要钉钉子的时候,我用到了它,这就是一种依赖,依赖锤子完成钉钉子这件事情。

    组合是一种整体-部分的关系,在问题域中这种关系很明显,直接分析就可以得出的。例如轮胎是车的一部分,树叶是树的一部分,手脚是身体的一部分这种的关系,非常明显的整体-部分关系。

    上述的几种关系(关联、聚合/组合、依赖)在代码中可能以指针、引用、值等的方式在另一个类中出现,不拘于形式,但在逻辑上他们就有以上的区别。

    这里还要说明一下,所谓的这些关系只是在某个问题域才有效,离开了这个问题域,可能这些关系就不成立了,例如可能在某个问题域中,我是一个木匠,需要拿着锤子去干活,可能整个问题的描述就是我拿着锤子怎么钉桌子,钉椅子,钉柜子;既然整个问题就是描述这个,我和锤子就不仅是偶然的依赖关系了,我和锤子的关系变得非常的紧密,可能就上升为组合关系(让我突然想起武侠小说的剑不离身,剑亡人亡...)。这个例子可能有点荒谬,但也是为了说明一个道理,就是关系和类一样,它们都是在一个问题领域中才成立的,离开了这个问题域,他们可能就不复存在了。


    4、泛化(继承)



    泛化关系:如果两个类存在泛化的关系时就使用,例如父和子,动物和老虎,植物和花等。
    ROSE生成的代码很简单,如下:

    #include "C11.h"

    class C12 : public C11
    ...{
    };


    5、这里顺便提一下模板



    上面的图对应的代码如下:

    template<int>
    class C13 
    ...{
    };

    这里再说一下重复度,其实看完了上面的描述之后,我们应该清楚了各个关系间的关系以及具体对应到代码是怎么样的,所谓的重复度,也只不过是上面的扩展,例如A和B有着“1对多”的重复度,那在A中就有一个列表,保存着B对象的N个引用,就是这样而已。

    好了,到这里,已经把上面的类图关系说完了,希望你能有所收获了,我也费了不少工夫啊(画图、生成代码、截图、写到BLOG上,唉,一头大汗)。不过如果能让你彻底理解UML类图的这些关系,也值得了。:)


    +++++++++++++++++++++++++++++++++++++++++++++++++++++

    在UML建模中,对类图上出现元素的理解是至关重要的。开发者必须理解如何将类图上出现的元素转换到Java中。以java为代表结合网上的一些实例,下面是个人一些基本收集与总结:
     
    基本元素符号:
     
    1. 类(Classes)
    类包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。
    属性和操作之前可附加一个可见性修饰符。加号(+)表示具有公共可见性。减号(-)表示私有可见性。#号表示受保护的可见性。省略这些修饰符表示具有package(包)级别的可见性。如果属性或操作具有下划线,表明它是静态的。在操作中,可同时列出它接受的参数,以及返回类型,如下图所示:

     
      2. 包(Package)
    包是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。在Java中,一个包可能含有其他包、类或者同时含有这两者。进行建模时,你通常拥有逻辑性的包,它主要用于对你的模型进行组织。你还会拥有物理性的包,它直接转换成系统中的Java包。每个包的名称对这个包进行了惟一性的标识。

      3. 接口(Interface)
    接口是一系列操作的集合,它指定了一个类所提供的服务。它直接对应于Java中的一个接口类型。接口既可用下面的那个图标来表示(上面一个圆圈符号,圆圈符号下面是接口名,中间是直线,直线下面是方法名),也可由附加了<<interface>>的一个标准类来表示。通常,根据接口在类图上的样子,就能知道与其他类的关系。

    关 系:
     
    1. 依赖(Dependency)
    实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例。更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的各个类之间的关系,表示出包和包的关系。

      2. 关联(Association)
    实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。在Java中,关联转换为一个实例作用域的变量,就像图E的“Java”区域所展示的代码那样。可为一个关联附加其他修饰符。多重性(Multiplicity)修饰符暗示着实例之间的关系。在示范代码中,Employee可以有0个或更多的TimeCard对象。但是,每个TimeCard只从属于单独一个Employee。

     
     
    3. 聚合(Aggregation)
    聚合是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。聚合也转换成Java中的一个实例作用域变量。
    关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。

      4. 合成(Composition)
    合成是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局部的存活状态,要么负责将其销毁。
    局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。Employee和TimeCard的关系或许更适合表示成“合成”,而不是表示成“关联”。

      5. 泛化(Generalization)
    泛化表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的UML元素。在Java中,用extends关键字来直接表示这种关系。

     
      6. 实现(Realization)
    实例关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对Java应用程序进行建模时,实现关系可直接用implements关键字来表示。

    像聚合还分为:非共享聚合、共享聚合、复合聚合等。以及其它内容,下次再补充。

    展开全文
  • 实例介绍UML顺序图使用

    千次阅读 2015-03-25 06:32:51
    UML顺序你是否熟悉,本文向大家简单介绍一下,顺序表示了随时间安排一系列消息。每个分类角色显示为一条生命线,代表整个交互期间上角色。 ...UML顺序和协作均...每一种应根据主要关注焦点而使用
  • UML图

    2016-08-07 17:03:40
    这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系; 能看懂类图中各个类之间的线条、箭头代表什么意思后,也就足够应对 日常的工作和交流; 同时,我们应该能将类图所表达的含义和最终的代码对应...
  • 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系; 能看懂类图中各个类之间的线条、箭头代表什么意思后,也就足够应对 日常的工作和交流; 同时,我们应该能将类图所表达的含义和最终的代码对应...
  • UML简介 UML(Unified Modeling Language),统一建模语言,是用来设计阮籍蓝图的可视化建模语言。它的特点是简单,统一,...另外,对于UML 建模工具的使用方法,当前业界使用最广泛的是 Rational Rose。使用 Umle...
  • UML基础 UML对象解析

    2016-09-16 23:57:00
    本节向大家介绍一下UML对象方面内容,主要包括UML对象概念介绍,表示法和用途等,希望通过本节介绍大家对UML对象有全面认识,下面让我们一起来学习吧。 UML对象简介 对象(ObjectDiagram)是显示了...
  • (三)UML之类图关系

    2017-12-24 20:40:00
    泛化(generalization):表示is-a的关系,是对象之间耦合度最大一种关系,子类继承父类所有细节。直接使用语言中继承表达。在类图中使用带三角箭头实线表示,箭头从子类指向父类。如下: 实现...
  • 一,用例: 1,概念:描述人们如何...3对象:描述系统在某一时刻的静态结构,对象与对象之间的关系,相当于一次快照uml的表达方式:对象名:属性 三,顺序: 1.概念:用来表示用例中的行为顺序,顺序展示u...
  • 对你有帮助的UML的9种

    万次阅读 多人点赞 2018-06-03 17:54:48
    用例展现了一组用例、参与者以及它们之间的关系,描述系统静态使用情况。说白了就是用户与各项操作之间的关系。 2、类图 类图展示了一组类、接口和协作以及它们之间的关系,类图也是我们在建模中所...
  • UML的三个基本部分:事物(Things)关系(Relationships)(Diagrams)类图:例如下面钟表类的表示对象UML的几种关系:①依赖关系:(虚线箭头)类A是源,类B是目标,表示类A使用了类B②关联关系:(实线)...
  • UML对象

    2014-03-15 13:25:09
    使用对象来说明数据结构,类图中类或组件等实例静态快照。对象和类图一样反映系统静态过程,但它是从实际或原型化情景来表达。 对象显示某时刻对象和对象之间的关系。一个对象可看成一个类图...
  • UML图中6种箭头含义

    2020-11-29 10:14:39
    在看一些技术博客时候,经常会见到博客里画上很多uml图。因为经常会被这几种表达关系的箭头搞混,这里我就把常见6种箭头表达含义理一下。 泛化 概念:泛化是一种一般与特殊、一般与具体之间关系的描述,具体...
  • 快速入门UML时序

    千次阅读 2018-09-21 16:35:18
    使用UML时序重构代码使用UML时序时序是什么时序图的元素组合块(Combined Fragment)举例 使用UML时序 最近,在重构项目中老代码时候,业务复杂,文档缺失。抽丝剥茧,沉迷在剪不断理还乱纷繁的关系...
  • 扒一扒---UML图与软件工程那点关系

    热门讨论 2017-07-23 14:22:52
    在软件开发各个阶段,使用不同的UML图对系统进行描述。软件工程是从结构化程序设计到面向对象程序设计转变一个过渡。UML是一种定义良好、易于表达、功能强大且普遍使用的建模语言。软件工程领域新思想、新方法...
  • 【SSM - 数据库篇 】 使用PowerDesigner对数据库建模 常用UML图–用例,类图介绍 PowerDesigner PowerDesigner它可以方便地对管理信息系统进行分析设计,他几乎包括了数据库模型设计全过程 使用PowerDesigner对...
  • UML之对象

    2017-07-14 19:29:00
    对象:是显示了一组对象和他们之间的关系使用对象来说明数据结构。类图中类或组件等实例静态快照。对象和类图一样反映系统静态过程,但它是从实际或原型化情景来表达。 ...
  • 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系; 能看懂类图中各个类之间的线条、箭头代表什么意思后,也就足够应对 日常的工作和交流; 同时,我们应该能将类图所表达的含义和最终的代码对应...
  • UML:笔记:

    2019-09-13 01:04:28
    结构 UML图的主要元素是包、包可见性、包之间依赖关系。 包图形表示是左上角带有标签矩形。 包为包内元素提供了命名空间。...依赖关系:元素间依赖关系使用虚线开放箭头...
  • 统一建模语言简介 ...类(Class)是指具有相同属性、方法和关系的对象抽象,它封装了数据和行为,是面向对象程序设计(OOP)基础,具有封装性、继承性和多态性等三大特性。在 UML 中,类使用包含...
  • 设计模式是一套被反复使用的、多数人知晓、经过分类编目代码设计经验总结,使用设计模式是为了可以重用代码,让代码可以更容易被他人理解并且提高代码可靠性。 2.UML 2.1 UML特性 UML融合了多种优秀面向...
  • 表达设计对于架构师重要意义,以及简介了使用统一建模语言UML描写叙述类以及类之间继承关系,这样描写叙述还停留在写代码,表达但是说是怎样写出类代码来,接下来我们要学习用UML表示业务内涵,分析业务...
  • UML

    2020-09-29 15:46:26
    统一建模语言UML UML:是一种基于面向对象的可视化建模...UML的结构事物-1:类 类(Class)是指具有相同属性、方法和关系的对象的抽象,它封装了数据和行为,是面向对象程序设计的基础,具有封装性、继承性和多态性等三
  • UML类图关系

    2013-08-07 21:12:00
    1、类类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中类、接口以及它们之间静态结构和关系的一种静态模型。类图3个基本组件:类名、属性、方法。 2、泛化...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 232
精华内容 92
关键字:

表关系图uml的使用