uml的构造包含3种

  • 事物4种:结构,行为,分组,注释事物
  • 关系4种:泛化,实现,依赖,关联,
  • 图10种,用例图,类图,对象,包,组件,部署,状态,活动,序列,协作

事物是对模型中最具代表性的成分的抽象,关系把事物结合到一起,图聚集了相关的事物

下面说最常见的关系:类与类,类与接口,接口与接口之间,

  • 泛化generalization,  是一个类(成为子类,子接口)继承自另外的一个类(父类,父接口)的功能,就是继承的关系,c++或java的继承关系就是表示这个概念,是最常见的关系.在设计的时候很明确,没有争议.java中通过extends关键字
  • 实现realization,,实现关系指的是一个class类显得interface接口(可以是多个)的功能. 实现是类和接口之间最常见的额关系;在java此类关系由关键字implements标识
  • -
  • -
  • -
  • 依赖dependency,

    • 类与类之间的关系,表示一个类依赖于另一个类的定义. 依赖关系总是单向的.
    • 可以简单的理解:A依赖于B,  就是一个类A使用了另一个类B,而这种使用关系具有偶然性,临时性,非常弱. 但是B的变换会影响到A.
    • 比如某人需要过河,此时人与船之间的关系就是依赖,
    • 表现在代码平面:就是类B作为参数被类A在某个method方法中使用.
    • -
    • -
    • -
  • 关联association(关联,聚合,合成)
    • 表示类与类之间的关系,它使得一个类知道另一个类的属性和方法
    • 关联可以使用单箭头表示单向关联,使用双箭头或不用箭头表示双向关联,不建议使用双向关联.
    • 关联有两个端点,在每个端点可以有一个基数,表示这个关联的类可以有几个实例
      • 常见的基数及含义:
      • 0..1:
      • 0..*:
      • 1:
      • 1..*:
    • 关联体现的是两个类,或者类与接口之间语义级别的一种强依赖关系,
    • 比如我和我的朋友,这种关系比依赖更强,不存在依赖关系的偶然性,关系也不是临时的,一般是长期性的,双方的关系一般是平等的
    • 标在代码上,被关联类B以类属性的形式出现在关联类A中,,,,也可能是关联类A引用了一个类型为被关联类B的全局变量
    • 在java语言中关联关系是使用实例变量实现的.
    • -
    • -
    • 聚合aggregation关系,关联关系是一种特例,是强的关联关系.
      • 聚合是整体与个体之间点关系,即has-a关系
      • 此时整体与部分之间是可分离的,他们可以具有各自的生命周期,
      • 部分可以属于多个整体对象,也可以为多个整体对象共享
      • 比如计算机与cpu,公司与员工的关系
      • 在代码上,和关联关系是一致的,只能从语义级别来区分
    • -
    • 组合(合成)composition,也是关联的一种特例,体现的是contains-a的关系
      • 这种关系比聚合更强,叫强聚合
      • 它同样体现整体与部分的关系,但此时整体与部分是不可分的.
      • 整体的生命周期结束就意味着部分的生命周期的,比如人和大脑(看自己理解)
      • 合成关系是不能共享的(什么意思?)
      • 在代码上,和关联关系是一致的,只能从语义级别来区分
    • -
    • 组合和聚合几乎相同,唯一的区别就是部分 不能脱离  整体 单独存在.就是说,部分的生命周期 不能比整体 还要长.
    • -

-总结:对于继承,实现(实例化)没有多少疑问,体现的是类与类,类与接口简单纵向关系

其他的四种关系,体现的是类与类,类与接口见的引用,横向关系,需要仔细讨论.有时候在代码层面也不是很好区分.但是总体来说,强弱关系为:  组合>聚合>关联>依赖

http://www.uml.org.cn/oobject/201006114.asp

设计模式 uml元素的更多相关文章

  1. Python设计模式 - UML - 对象图(Object Diagram)

    简介 对象图和类图的基本概念是类似的,可以看作类图在系统某一时刻的镜像,显示了该时刻系统中参与交互的各个对象以及它们之间的关系. 对象图的元素包括对象.链接.包,元素之间的关系和类图相似. 对象图建模 ...

  2. 23种经典设计模式UML类图汇总

    在这里23种经典设计模式UML类图汇总       创建型模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基 ...

  3. Python设计模式 - UML - 类图(Class Diagram)

    简介 类图是面向对象分析和设计的核心,用来描述系统各个模块中类与类之间.接口与接口之间.类与接口之间的关系,以及每个类的属性.操作等特性,一般在详细设计过程中实施. 类图本身就是现实世界的抽象,是对系 ...

  4. Python设计模式 - UML - 总览

    说到设计模式就不得不涉及建模思想,说到建模思想自然而然会应用UML,目前业界开源的UML工具很多,用起来也非常便捷.近几年来随着软件应用领域开发模式转向快速迭代试错,UML在敏捷开发,尤其是web及m ...

  5. 设计模式-UML类图基础

    设计模式之序-UML类图那点事儿 打14年年底就像写那么一个系列,用于讲设计模式的,代码基于JAVA语言,最早接触设计模式是大一还是大二来着,那时候网上有人给推荐书,其中就有设计模式,当时给我推荐的书 ...

  6. 设计模式 UML & java code

    A: 创造性模式 1. 工厂方法模式(FactoryMethod) 1.1 类图 1.2 代码1 public interface Pet { public String petSound(); } ...

  7. [zt]Singleton和Double-Checked Locking设计模式—UML图及代码实现

    Singleton和Double-Checked Locking设计模式,分别指的是单例模式和双重检查锁模式,它们都可以用于确保某个类只有一个对象实例化. 两个模式的区别在于:Singleton模式用 ...

  8. 设计模式-UML类图的各符号含义(转)

    UML类图的各符号含义 类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形.由这些基本的图形进行组合构成了类图的基本符号.这里要注意这几个符号的顺序,代表了类与类之间关系 ...

  9. CSS 设计模式一 元素

    1.background  内置 是一种CSS内置设计模式,支持在元素下显示图片 HTML <!DOCTYPE html> <html lang="en"> ...

随机推荐

  1. LeetCode Implement strStr() 实现strstr()

    如题 思路:暴力就行了.1ms的暴力!!!别的牛人写出来的,我学而抄之~ int strStr(char* haystack, char* needle) { ; ; ; ++i) { ; ; ++j ...

  2. vue+node+mongodb实现的页面

    源代码地址:https://github.com/GainLoss/vue-node-mongodb 目前这个项目实现的是: 1.利用vue-cli实现前台页面的编写 (1)页面的跳转利用的是vue- ...

  3. Python基础总结与实践

    Python简介 Python是一种动态解释型编程语言,在模块载入时将源码编译成字节码, 这些字节码被虚拟机PVM解释执行,其中解释执行是Python性能较低的主要原因: Python使用C语言编写, ...

  4. ARM体系结构与编程-3

    ARM存储系统:ARM中用于存储管理的系统控制协处理器CP15:包括16个32位寄存器,其编号为0到15.实际上对于某些编号的寄存器可能相应有多个物理寄存器. 訪问CP15寄存器的指令:MRC.MCR ...

  5. 【洛谷4657】[CEOI2017] Chase(一个玄学的树形DP)

    点此看题面 大致题意: 有一棵树,树上编号为\(i\)的节点上有\(F_i\)个铁球,逃亡者有\(V\)个磁铁,当他在某个节点放下磁铁时,与这个节点相邻的所有节点上的铁球都会被吸引到这个节点.然后一个 ...

  6. 2018.6.4 Oracle数据库预定义的异常列表

    declare v_ename emp.ename%type; begin select ename into v_ename from emp where empno=&gno; dbms_ ...

  7. 管道命令'|' 和xargs find命令找到后把所有找到的删除

    管道符号,是unix功能强大的一个地方,符号是一条竖线:"|", 用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为comm ...

  8. Python02 变量

    变量 因为Python是弱变量类型编程语言,所以变量赋值不需要类型声明. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 变量 ...

  9. PAT 乙级 1017

    题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...

  10. 八、MySQL 数据类型

    MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准S ...