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. ubuntu16.4 配置logstash6.3.2 kibanan6.3.2

    1. 官网下载 https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz https://www.elastic.co ...

  2. pta数据结构编程题

    编程题6 树的同构 编程题7 List Leaves 编程题8 Tree Traversals Again 编程题10 Root of AVL Tree 编程题12 堆中的路径 编程题13 File ...

  3. 动态规划专题(三)——数位DP

    前言 数位\(DP\) 真的是最恶心的\(DP\). 简介 看到那种给你两个数,让你求这两个数之间符合条件的数的个数,且这两个数非常大,这样的题目一般就是 数位\(DP\) 题. 数位\(DP\)一般 ...

  4. mongostat查看mongodb运行状态使用命令介绍

    mongostat是mongodb自带的一个用来查看mongodb运行状态的工具 使用说明 mongostat -h   字段说明 启用后的状况是这样的 insert query update del ...

  5. 2018.2.2 java中的Date如何获取 年月日时分秒

    package com.util; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; pub ...

  6. edge不能上网-代码 INET_E_RESOURCE_NOT_FOUND

    这个问题 ,网上有很多解决方法,我基本都测试了一遍,可是我都没有用 情况:首先,我开始的时候是可以用的,然后在公司,开了代理,就不能使用了,这是我之后多次尝试发现的,所以你也遇到和我一样的情况不必惊慌 ...

  7. cin对象的一些常用方法使用总结

    >> 最初定义的是右移,当但是出现在 cin >>中的时候这个符号被重载了,变成了一个流操作,在用户通过键盘输入信息的时候,所有内容都会先直接存储在一个叫输入缓冲区的的地方,c ...

  8. 01_15_Struts2_带参数的结果集

    01_15_Struts2_带参数的结果集 1. 背景说明 服务器端页面跳转的时候,通过struts提供的标签的valuestack可以直接取.服务器端的转发,valuestack的对象属性可以共享. ...

  9. 如何在vue项目中使用md5加密

    npm安装: npm install --save js-md5 1.在需要使用的项目文件中引入: import md5 from 'js-md5'; 使用: md5('hello world') / ...

  10. 第29题:LeetCode54:Spiral Matrix螺旋矩阵

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ...