源地址:https://blog.csdn.net/a19881029/article/details/8957441

===================================================

类之间大体分为5种关系:

1,依赖关系(Dependency)

单向,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类,是一种“use a”关系

如果A依赖于B,则B表现为A的局部变量,方法参数,静态方法调用等

  1. public class Person {
  2. public void doSomething(){
  3. Card card = new Card();//局部变量
  4. ....
  5. }
  6. }
  1. public class Person {
  2. public void doSomething(Card card){//方法参数
  3. ....
  4. }
  5. }
  1. public class Person {
  2. public void doSomething(){
  3. int id = Card.getId();//静态方法调用
  4. ...
  5. }
  6. }

2,关联关系(Association)

单向或双向(通常我们需要避免使用双向关联关系),是一种"has a"关系,如果A单向关联B,则可以说A has a B,通常表现为全局变量

  1. public class Person {
  2. public Phone phone;
  3. public void setPhone(Phone phone){
  4. this.phone = phone;
  5. }
  6. public Phone getPhone(){
  7. return phone;
  8. }
  9. }

3,聚合关系(Aggregation)

单向,关联关系的一种,与关联关系之间的区别是语义上的,关联的两个对象通常是平等的,聚合则一般不平等,有一种整体和局部的感觉,实现上区别不大

Class由Student组成,其生命周期不同,整体不存在了,部分依然存在,当前Team解散了,人还在,还可以加入别的组

  1. public class Team {
  2. public Person person;
  3. public Team(Person person){
  4. this.person = person;
  5. }
  6. }

4,组合关系(Composition)

单向,是一种强依赖的特殊聚合关系

Head,Body,Arm和Leg组合成People,其生命周期相同,如果整体不存在了,部分也将消亡

  1. public class Person {
  2. public Head head;
  3. public Body body;
  4. public Arm arm;
  5. public Leg leg;
  6. public Person(){
  7. head = new Head();
  8. body = new Body();
  9. arm = new Arm();
  10. leg = new Leg();
  11. }
  12. }

5,继承关系(Inheritance)

类实现接口,类继承抽象类,类继承父类都属于这种关系

可以分得更细:

实现(Realization):类实现接口属于这种关系

泛化(Generalization):即"is a"关系,类继承抽象类,类继承父类都属于这种关系

参考网址: https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html

UML类图(Class Diagram)中类与类之间的关系及表示方式(转)的更多相关文章

  1. 类图(Class Diagram)

    类图(Class Diagram): 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 类一般由三部分组成: 类名(Class):每个类都必须 ...

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

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

  3. 【UML】类图Class diagram(转)

    http://blog.csdn.net/sds15732622190/article/details/48860711 前言 说到UML,相信大家就能立刻反应出其中的类图,为什么这么说呢,类图和用例 ...

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

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

  5. uml的图与代码的转换——类图

    Uml是我们经常使用的统一建模语言或称标准建模语言.它的图是如何和代码对应的呢?下面我们就来就这个问题讨论一下: 首先是类:uml中的类图是这样的 在这个图中,我们可以看出,这个类图总共分了三行,第一 ...

  6. UML时序图(Sequence Diagram)学习笔记

    什么是时序图时序图(Sequence Diagram),又名序列图.循序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作. 让我们来看一看visio2016对时序 ...

  7. Python设计模式 - UML - 组件图(Component Diagram)

    简介 组件图又称构建图,用于显示系统各组件及各组件关系的物理视图. 组件图通常包括组件.接口.关系.端口和连接器,用来显示程序代码中相应的模块.源文件或源文件集合之间的依赖和泛化关系. 组件图中的组件 ...

  8. Python设计模式 - UML - 包图(Package Diagram)

    简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类 ...

  9. Python设计模式 - UML - 活动图(Activity Diagram)

    简介 活动图描述从一个活动到另一个活动的执行顺序.约束条件.引用对象及状态结果等方面的控制流,适用于对业务用例.工作流程或程序实现建模. 活动图建模步骤 - 确定活动图的范围和边界,对哪些工作流.哪些 ...

随机推荐

  1. oracle本地安装注意事项

    这两天组员在本地windows上安装oracle数据库,安装完各种问题,pl/sql developer以及tns_admin配置以及tnsnames.ora和sqlnet.ora listener. ...

  2. 转型大数据之学前准备,掌握linux(一)

    导语:为什么要学习linux?学到什么程度? 大数据技术是运行在集群,且是linux操作系统这样的集群当中的,所以学习大数据之前,你得先掌握了linux的简单操作,没错,我们不是专门的做linux工作 ...

  3. 使用apt-get install时如何指定安装版本

    命令语法如下: sudo apt-get install package=version 例如: sudo apt-get install samba=2:4.4.5+dfsg-2ubuntu6

  4. vue2.0 移动端,下拉刷新,上拉加载更多插件,修改版

    在[实现丰盛]的插件基础修改[vue2.0 移动端,下拉刷新,上拉加载更多 插件], 1.修改加载到尾页面,返回顶部刷新数据,无法继续加重下一页 2.修改加载完成文字提示 原文链接:http://ww ...

  5. “==”与equals的区别

    “==”与equals的区别: “==”:两个对象比较的是对象的引用地址比较,对象的hashCode值是对象的引用地址,只有两个对象的hashCode值一样,此比较符才会返回true,否则即使两个对象 ...

  6. 『Python基础-5』数字,运算,转换

    『Python基础-5』数字,运算,转换 目录 基本的数字类型 二进制,八进制,十六进制 数字类型间的转换 数字运算 1. 数字类型 Python 数字数据类型用于存储数学上的值,比如整数.浮点数.复 ...

  7. 【转载++】C/C++错误分析errno,perror,strerror和GetLastError()函数返回的错误代码的意义

    本文是上一篇“fopen返回0(空指针NULL)且GetLastError是0”的侧面回应.听赶来多么地正确和不容置疑,返回NULL时调用GetLastError来看看报错啊,但当时却返回了0,大家都 ...

  8. Wake-Sleep(W-S)算法【转载】

    原文: https://www.zhihu.com/question/29648549 https://blog.csdn.net/zouxy09/article/details/8775518 en ...

  9. 版本控制工具——Git的拓展使用

    一.使用Github 通过前面两节已经配置了SSH Key与Github上的相关设置,接下来介绍常用的使用 使用Fork克隆一份到本地仓库 之后可以在自己的仓库克隆一份到本地 git clone gi ...

  10. WebRTC中Android Demo中的摄像头从采集到预览流程

    APPRTC-Demo调用流程 1.CallActivity#onCreate 执行startCall开始连接或创建房间 2.WebSocketClient#connectToRoom 请求一次服务器 ...