UML类图主要由类和关系组成.

  1. 类: 什么具有相同特征的对象的抽象, 具体我也记不住, 反正有官方定义

  2. 关系: 指各个类之间的关系

类图

类就使用一个方框来表示, 把方框分成几层, 来表示不同的信息,如下图所示:

当然, 类图也不一定每一次都长这样, 比如你只分析各个类之间的关系时, 甚至可以只给出类名; 如果是一个接口的话, 可以不给出属性, 只留下类名和方法.

下面来说一下这几个部分分别怎么写

1.类名

类名没什么好说的, 就是起个名, 写上, 完活

2.属性

属性的格式为:

访问权限 属性名 : 类型=默认值

  • 访问权限: 访问权限再各个面向对象中用遍了, 有

    • 公有: (+), 大家都可以访问

    • 私有: (-), 只有自己可以访问

    • 保护: (#), 可以被自己和子类访问

  • 属性名: 就是起个名

  • 类型: 属性的类型, 可以是基础数据类型, 也可以是一个类

  • 默认值: 属性初始值, 可以省略

如:

+name:String // 公有的name属性, 字符串类型 -age:int=0 // 私有的age属性, int类型, 初始值为0

3.方法

方法的定义和属性差不多, 不过加上了参数, 格式为:

访问权限 方法名(参数列表): 返回值

其中参数列表的定义为 "类型 名字", 多个之间用逗号隔开, 其它和属性一样, 不再赘述, 举例:

+getName(String name):void

关系

终于到重头戏了, 类之间的关系表示, 通常来说, 两个类之间主要有以下几种关系:

  • 继承: 这在面向对象里用的太多了, 就是子类继承了父类的属性和方法

  • 实现: 简单说就是类实现接口, 明白了吧

  • 关联: 简单来说, 就是在类A中使用了类B, 而且这种使用不是临时的, 而是长期的, 所以关联是一种强依赖关系. 比如: 类A中的一个属性是类B, 或者类A在方法中用到了类B的全局变量

  • 依赖: 简单来说, 就是类A中的一个方法参数是类B, 所以这种关系可以说是临时的, 也可以是在方法中临时调用了类B的方法

  • 聚合: 聚合其实也是一种关联关系, 不过在关联关系的基础上再加条件, 聚合强调的是整体于部分的关系, 而且部分是可以脱离整体而存在的. 如类A中的属性list是类B的集合, 类B单拿出来还是一个完整的

  • 组合: 组合与聚合有些相似, 都是强调整体与部分的关系, 不同的是, 组合中部分是不能脱离整体而存在的, 所以也叫强聚合,比如羊和羊头

基本上继承和实现都没什么异议, 主要就是再后面四个, 很多时候分不清, 这四种的强弱关系为: 组合>聚合>关联>依赖

下面来看一下再UML中如何表示这几种关系:

1.继承

如图, 张三和王五都继承自人类

2. 实现

如图, 张三和王五都实现了接口人类

3. 依赖

依赖是一种很弱的关系, 通常是类A在运行期间用到类B, 通常在程序中是用过构造函数, 方法参数将类B传给类A的, 表示如下:

如图, 程序员在工作时需要电脑

4. 关联

关联区别于依赖, 是关联关系是不变的, 比如张三和张三家, 是一成不变的内容, 表示如下:

如图, 张三关联了他的家, 这种是单向关联, 也有时是双向关联, 则两头都没有箭头

5. 聚合

聚合是一种特殊的关联, 反映的是整体与局部的关系, 区别于关联, 聚合没有双向聚合(因为是整体与局部嘛), 与组合不同, 聚合关系中的部分可以独立存在, 表示如下:

如图, 蚂蚁离开了蚂蚁窝, 还是蚂蚁

6.组合

组合也是一种特殊的关联, 反映的是整体与局部的关系, 区别与聚合, 组合关系中的部分不能脱离全体独立存在,比如张三和张三的头, 表示如下:


以上就是UML中最最基础的各部分, 以后再看UML图就不至于一脸懵逼了..

UML类图基础说明的更多相关文章

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

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

  2. UML 类图基础知识记录

    UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 依赖(Dependency): 关联(Association): 聚合(Aggregation): 合成(Composition): 泛化 ...

  3. UML 类图基础

    先留个坑, 后续再填 UML 类图中主要包括以下几种关系: 1. 泛化: 定义:继承关系,指定子类继承父类的所有特征与行为. 图形:三角形箭头,指向父类.         2. 实现 定义:类与接口的 ...

  4. UML类图基础

    UML( Unified Modeling Language) 统一建模语言, 它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和 ...

  5. 看懂类图——UML类图基础

    类图 要学懂设计模式,就需要先看得懂类图,类与类之间的关系是学习设计模式的基础,而在软件工程中,类与类之间的关系是通过UML中的类图来体现. 这篇笔记包含的不会是类图的所有东西,包含的只是各个类之间的 ...

  6. (转)看懂类图——UML类图基础

    类图 要学懂设计模式,就需要先看得懂类图,类与类之间的关系是学习设计模式的基础,而在软件工程中,类与类之间的关系是通过UML中的类图来体现. 这篇笔记包含的不会是类图的所有东西,包含的只是各个类之间的 ...

  7. 设计模式UML类图基础

    1.聚合 聚合(aggregation)表示一种弱的"拥有"关系,体现的是A对象可以包含B对象,但是B对象不是A对象的一部分.如大雁是群居动物,每只大雁都属于一个雁群,一个雁群可以 ...

  8. UML类图(上):类、继承和实现

    面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...

  9. [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图

    [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...

随机推荐

  1. 自动化运维工具-Ansible基础

    目录 自动化运维工具-Ansible基础 什么是Ansible 同类型软件对比 Ansible的功能及优点 Ansible的架构 Ansible的执行流程 安装Ansible ansible配置文件 ...

  2. Error 942 occured during Initialization of Bufq KUPC$S_1_20181023155636

      一台ORACLE实例(Oracle Database 10g Release 10.2.0.5.0)启动时,报"Error 942 occured during Initializati ...

  3. 利用Github建立博客专用图库

    0.前言 当我们写博客或者文档的时候常常需要引用图片.倘或引用图片的链接是外网的,常常会出现加载过慢的情况,并且不稳定的图片来源不方便管理.所以如果建立一个博客专用的图片仓库,统一管理维护方面就方便得 ...

  4. flask之web网关、三件套、配置、路由(参数、转化器及自定义转化器)、cbv、模板语言、session

    目录 1.wsgiref.py 2.werzeug.py 3.三件套 4.配置文件 5.路由本质 6.cbv.py 7.路由转化器 8.自定义转化器 9.模板语言 10.session原理 11.te ...

  5. 详解JAVA8Stream API {全}

    1: 概述 1.1 优势 1.2 与传统迭代器的区分 1.3 流的操作类型分为两种: 2:流的构造与转换 2:1 常见构造 2.2: 三大包装类型的构造 2.3 并行流的规则输出 2.4 流的转换 3 ...

  6. 赖法,强制启动,https版的winrm ---powershell远程连接(winrm)的4个安全级别,详解

    ---------[winrm的“四级”安全]--------- 四级安全,就是最不安全的. winrm默认使用http+5985端口,密码传输加密,数据.命令传输明文.有被人窃取机密,和插入攻击命令 ...

  7. C++ day01-C++的函数和对象

    C++的函数和对象 1.1 1 混合型语言 c++以.cpp为文件扩展名,有且只有一个名为main的主函数,因保留了这个面向过程的主函数,所以被称为混合语言 2 注释方式 . C++的注释方式有两种, ...

  8. Kettle-动态数据链接,使JOB得以复用

    动态数据连接,使JOB得以复用 背景 移动执法系统在目前的主要的部署策略为1+N的方式,即总队部署一套,地市各部署一套,且基本都在环保专网.各地市的业务数据需要推送到总队系统,以便总队系统做整体的监督 ...

  9. url中拼接中文参数,后台接收为乱码的问题

    遇到在URL中拼接中文的参数,后台拿到的数据为乱码的问题,这里来说一下问题出现的原因与解决方法. 大家比较关心的应该是解决的方法,因此先说解决方法. 解决方法 解决的方法是在客户端对这个中文参数进行编 ...

  10. 【转载】修改Windows下键盘按键对应功能的一些方案

    原文见:https://sites.google.com/site/xiangyangsite/home/technical-tips/windows-tips/multi_media_key_cus ...