UML类图之六种基本关系详解
文章目录
- 0. 什么是UML?
- 1. 依赖关系(Dependence)
- 1.1 什么是依赖关系?
- 1.2 上代码
- 1.3 用类图描述关系
- 1.4 依赖小结
- 2. 泛化关系(Generalization)
- 2.1 什么是泛化关系?
- 2.2 上代码
- 2.3 用类图描述关系
- 2.4 小结
- 3. 实现关系(Realization)
- 3.1 什么是实现关系?
- 3.2 上代码
- 3.3 用类图描述关系
- 4. 关联关系(Association)
- 4.1 什么是关联关系?
- 4.2 单向一对一
- 4.3 单向一对一:用类图描述关系
- 4.3 双向一对一
- 4.4 双向一对一: 用类图描述关系
- 5. 聚合关系(Aggregation)
- 5.1 什么是聚合关系?
- 5.2 上代码
- 5.3 类图
- 6. 组合关系(Composition)
- 6.1 什么是组合关系?
- 6.2 上代码
- 6.3 用类图描述关系
- 6.4 再举一个例子,加深理解
- 6.5 上代码
- 6.6 用类图描述关系
- 6.7 注意
0. 什么是UML?
UML:统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发任意进行思考和记录思路的结果。
1. 依赖关系(Dependence)
1.1 什么是依赖关系?
只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编译都过不了。
1.2 上代码
新建四个类
/*** @author LongXi* @create 2021-07-31 19:57*/
public class IDCard {}
/*** @author LongXi* @create 2021-07-31 19:57*/
public class Person {}
/*** @author LongXi* @create 2021-07-31 19:57*/
public class PersonDao {}
/*** @author LongXi* @create 2021-07-31 19:57*/
public class Department {}
主类
/*** @author LongXi* @create 2021-07-31 19:57*/
public class PersonServiceBean {private PersonDao personDao;public void save(Person person){}public IDCard getIDCard (Integer personId){return null;}public void modify(){Department department = new Department();}
}
1.3 用类图描述关系
1.4 依赖小结
在类中用到了对方,具体有下面四种
- 类的成员属性(私有变量)
- 类的方法的返回类型
- 方法接收的参数类型
- 方法中使用到
2. 泛化关系(Generalization)
2.1 什么是泛化关系?
泛化关系实际上就是继承关系,他是依赖关系的特例
2.2 上代码
/*** @author LongXi* @create 2021-07-31 20:15*/
public abstract class DaoSupport {public void save (Object entity){}public void delete (Object id){}
}
/*** @author LongXi* @create 2021-07-31 20:17*/
public class PersonServiceBean extends DaoSupport{}
2.3 用类图描述关系
2.4 小结
- 泛化关系实际上就是继承关系
- 如果A类继承了B类,我们就说A和B存在泛化关系。
3. 实现关系(Realization)
3.1 什么是实现关系?
实现关系实际上就是A类实现了B类,它是依赖关系的特列
3.2 上代码
/*** @author LongXi* @create 2021-07-31 20:23*/
public interface PersonService {public void delete(Integer id);
}
/*** @author LongXi* @create 2021-07-31 20:23*/
public class PersonServiceBean implements PersonService{@Overridepublic void delete(Integer id) {System.out.println("delete");}
}
3.3 用类图描述关系
4. 关联关系(Association)
4.1 什么是关联关系?
关联关系实际上就是类与类之间的联系,它是依赖关系的特例
关联具有导航性:即双向关系或单向关系
4.2 单向一对一
/*** @author LongXi* @create 2021-07-31 20:37*/
public class Person {private IDCard card;
}
/*** @author LongXi* @create 2021-07-31 20:37*/
public class IDCard {}
4.3 单向一对一:用类图描述关系
4.3 双向一对一
/*** @author LongXi* @create 2021-07-31 20:37*/
public class Person {private IDCard card;
}
/*** @author LongXi* @create 2021-07-31 20:37*/
public class IDCard {private Person person;
}
4.4 双向一对一: 用类图描述关系
5. 聚合关系(Aggregation)
5.1 什么是聚合关系?
聚合关系:表示的是整体和部分的关系,整体和部分可以分开。聚合关系是关联关系的特例,所以它具有关联的导航性和多重性。
例如:一台电脑由键盘,显示器,鼠标等组成,组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示。
聚合:整体和部分可以分开
组合:整体和部分不可以分开
5.2 上代码
显示器类
/*** @author LongXi* @create 2021-07-31 20:47*/
public class Moniter {}
鼠标类
/*** @author LongXi* @create 2021-07-31 20:47*/
public class Mouse {}
电脑类
/*** @author LongXi* @create 2021-07-31 20:47*/
public class Computer {private Mouse mouse;private Moniter moniter;public void setMouse(Mouse mouse) {this.mouse = mouse;}public void setMoniter(Moniter moniter) {this.moniter = moniter;}
}
5.3 类图
部分聚合整体
6. 组合关系(Composition)
6.1 什么是组合关系?
如果Mouse,Moniter和Computer是不可分离的,则升级为组合关系
组合关系:也是整体和部分的关系,但是整体和部分不可以分开
6.2 上代码
改变一下鼠标,显示器和电脑的关系
/*** @author LongXi* @create 2021-07-31 20:47*/
public class Computer {private Mouse mouse = new Mouse();private Moniter moniter = new Moniter();public void setMouse(Mouse mouse) {this.mouse = mouse;}public void setMoniter(Moniter moniter) {this.moniter = moniter;}
}
6.3 用类图描述关系
6.4 再举一个例子,加深理解
人和身份证的关系,就是聚合关系,人可以没有身份证。
人和头的关系,就是组合关系,人不可以没有头。
6.5 上代码
头部类
/*** @author LongXi* @create 2021-07-31 20:59*/
public class Head {}
身份证类
/*** @author LongXi* @create 2021-07-31 20:37*/
public class IDCard {private Person person;
}
人类
/*** @author LongXi* @create 2021-07-31 20:37*/
public class Person {// 聚合关系private IDCard card;// 组合关系private Head head = new Head();
}
6.6 用类图描述关系
6.7 注意
如果在程序中Person实体中定义了对IDCard进行级联删除 ,即删除Person时连同IDCard一起删除,那么IDCard和Person就是组合了
UML类图之六种基本关系详解相关推荐
- UML类图的6大关系
<小酌重构系列>已经完成了大约1/3了,在这些文章中,我使用了一些简单的类图来描述重构策略.在之后的文章中,我可能会借助稍微复杂一些的UML类图来介绍.但是在此之前,我觉得有必要先介绍一下 ...
- Java之UML类图的六种关系
UML类图 UML图概念 UML--Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果. ...
- UML类图中的六大关系:关联(单向、双向、自关联)、聚合、组合、依赖、继承、实现
一.类的属性的表示方式 在UML类图中,类使用包含类名.属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个A类,它包含c.d两个属性,以及methodA方法. 那么 ...
- [转] UML类图的几种关系总结
在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition ...
- UML类图属性和相关关系
UML类图 1. 类属性的可见性 描述类的属性的可见性: UML中,可见性分为4级 public 公用的 :用+ 前缀表示 ,该属性对所有类可见 protected 受保护的:用 # 前缀表示,对该类 ...
- UML类图、6种关系
目录 一,类图 二,类的6种关系 1,泛化 2,实现 3,组合 4,聚合 5,关联 6,依赖 三,总结 一,类图 类图中,每个类由3个部分组成,上面的是类名,中间的是属性,下面的是方法. 属性和方法可 ...
- uml 菱形_UML建模之类图常用符号及关系详解!
在软件开发中,经常会遇到UML建模,而类图作为一种静态的结构图,不仅是系统编码和测试的重要模型,还可以简化人们对系统的理解.因此,理解和知道如何使用UML图就显得尤为重要了!那么,对于UML类图中常用 ...
- UML类图中类之间的关系,聚合,组合,依赖总结
下面我就根据下面这个图来讲解一下UML类图. 类图 首先,看动物那个矩形框,他就表示为一个类(Class).类图分为三层: 第一层显示类的名称 如果是抽象类,就用斜体表示 第二层显示类的特性,通常是字 ...
- 【UML】例析UML类图的几种关系
最近在学习UML,别的先不提,英文单词到是学会了不少..既然Rational Rose就是英文版的,索性我就所有东西都按照英文意思来理解,慢慢来,当初学VB的时候我也不是一下子就能记住Label的.. ...
最新文章
- Rushcrm:企业部署CRM系统做什么
- 解决onclick事件调用其它带参数的函数方法无效的问题
- arm linux下编译库System.Net.Primitives.dll和System.Xml.XmlSerializer.dll
- SpringMVC处理自定义异常,通过读取配置文件把错误信息显示在前台页面
- 支付和LBS定位对于O2O到底有多重要?
- django orm 常用查询筛选
- windows下mongodb安装与使用整理
- c语言按shift用户随时退出,2014年云南省“三校生”高考计算机第三次模拟试卷...
- 《我也能做CTO之程序员职业规划》和《.NET软件设计新思维——像搭积木一样搭建软件》新书发布会 回顾
- 用友服务器ip地址在哪里修改密码,用友服务器ip地址在哪里修改密码
- 从实践应用中催生课题,通过课题研究促进应用
- 19 个接私活平台汇总,今天我们只聊用技术挣钱
- 将Win7中的IE11降级为IE8
- Dw cs6的详细下载安装教程对网页设计需要cs6的同学
- C++二维vector初始化大小方法
- 值得注意的4个NPS注意事项
- 【翻译】图解Janusgraph系列-事务详解(Janusgraph Transactions)
- 计算机游戏缓存在哪里清楚,电脑清除缓存在哪里-怎么干净的清理电脑缓存电脑很卡东西清理不干净 爱问知识人...
- 独家专访丨刘江川:从“边缘”到“中心”,边缘计算科学家的创业之路
- Linux开启root用户
热门文章
- 转行进入测试一年有感
- RHEL7 -- 修改主机名
- python入门-windows下anaconda环境搭建
- 【转】POP3、SMTP和IMAP之间的区别和联系
- leetcode @python 120. Triangle
- 变态的儿童国学教育与孔子真正的教育之道
- ASP.NET AJAX深入浅出系列课程(10):基于Microsoft AJAX Library扩展客户端组件.zip(10.77 MB)...
- thinkphp mysql 密码加密_thinkphp微信开发(消息加密解密)
- 软件定义汽车带来的困境---如何破局?
- DelayedOperationPurgatory分析