史上最全UML的详细解析

1.UML中的几种关系

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

1.1. 泛化(Generalization)

  【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

  【箭头指向】:带三角箭头的实线,箭头指向父类

1.2. 实现(Realization)

  【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.

  【箭头指向】:带三角箭头的虚线,箭头指向接口

1.3. 关联(Association)

  【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

  【代码体现】:成员变量

  【箭头及指向】:带普通箭头的实心线,指向被拥有者

  上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

  下图为自身关联:

1.4. 聚合(Aggregation)

  【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

  聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

  【代码体现】:成员变量

  【箭头及指向】:带空心菱形的实心线,菱形指向整体

1.5. 组合(Composition)

  【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

【代码体现】:成员变量

【箭头及指向】:带实心菱形的实线,菱形指向整体

1.6. 依赖(Dependency)

  【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

  【代码表现】:局部变量、方法的参数或者对静态方法的调用

  【箭头及指向】:带箭头的虚线,指向被使用者

1.7 各种关系的强弱顺序:

  泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

  下面这张UML图,比较形象地展示了各种类图关系:

时间: 2024-11-29 01:41:20

史上最全UML的详细解析的相关文章

史上最全的Android ViewDragHelper解析

简介: 一般我们在自定义ViewGroup 的时候会通常都会用到onInterceptTouchEvent ,onTouchEvent 这些方法去进行距离的判断然后利用scroller 去进行目标的移动,从而实现ViewGroup 的自定义.此方法不但判断麻烦,而且逻辑复杂,不易操作,今天给大家要价讲的这个工具ViewDragHelper 是谷歌IO大会上推出的触摸辅助开发工具,极大的简化了开发自定义VIewGroup 的难度. 1.废话不多说 ,首先要初始化 ViewDragHelper 这个

Feign Ribbon Hystrix 三者关系 | 史上最全, 深度解析

史上最全: Feign Ribbon Hystrix 三者关系 | 深度解析 疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列之15 [博客园总入口 ] 前言 在微服务架构的应用中, Feign.Hystrix,Ribbon三者都是必不可少的,可以说已经成为铁三角. 疯狂创客圈(笔者尼恩创建的高并发研习社群)中,有不少小伙伴问到尼恩,关于Feign.Hystrix,Ribbon三者之间的关系,以及三者的超时配置.截止目前,全网没有篇文章介绍清楚的,故,尼恩特写一篇详细一点的文章,剖析

史上最全网站降权原因解析

在互联网时代飞速发展的前景下加上昂贵的竞价费用让多数企业苦不堪言于是低成本投入的职业-seo就诞生了,从业人数也每年呈递增状态,然而互联网的垃圾信息也越来越多,于是搜索引擎为了更好的迎合用户体验也频繁的展开了各项算法调整.在这期间当然也有很多网站被降权甚至被K掉,至于什么原因,有很多从职朋友还不能彻底的找到问题的根源,下面笔者以个人多年经验为大家展开一下分享,希望能帮助你早日恢复网站排名. 直接进入正题: 一.空间问题 因为空间访问速度不稳定,有时慢有时打不开的情况,因这个被降权的案列也是很多的

史上最全最详细JNDI数据源配置说明

史上最全最详细JNDI数据源配置说明 转载 : https://blog.csdn.net/zhanglf02/article/details/76726702 2017年08月05日 17:12:08 阅读数:4466 环境:tomcat6.0+Maven 要使用数据源就要知道数据源的由来:在java开发使用jdbc都要经历这四步 ①加载数据库驱动程序:(Class.forName("数据库驱动类");) ②连接数据库(Connection con = DriverManager.g

史上最全的maven的pom.xml文件详解

史上最全的maven的pom.xml文件详解 http://www.cnblogs.com/hafiz/p/5360195.html <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h

史上最全java架构师技能图谱(下)

"java架构史上最全技能图谱分为上下两篇,这是java架构史上最全图谱下篇,包含:大数据以及性能.设计模式.UML.中间件.分布式集群.负载均衡.通讯协议.架构设计等技术图谱等章节.如果需要上篇内容:数结构算法.java进阶.web开发.框架与工具四大篇章技能图谱,请查看java架构史上最全图谱上篇(历史文章查看).本文作者,陈睿 BAT优知学院创始人,一线大厂资深CTO,免费提供系统的互联网技术进阶干货资料和系列课程,以及定期的线下项目实战. 架构师进阶六大要求程序设计要求WEB开发要求架构

史上最全: svn与git的对比(二):svn与git的相关概念

如图1是svn服务器端数据的目录结构 下面是git服务器端的目录结构 纵观svn和git服务端的目录结构我们很容易发现 1.有些文件夹还是蛮像的,甚至是一样的比如说svn中的conf,hooks等git中也有,svn中的db类似与git中的objects. 2.git中的内容好像是比svn中,主要是多了head文件,branches,refs等 下面我们就详细来看一下这些文件夹或文件的作用 史上最全: svn与git的对比(二):svn与git的相关概念

史上最全最完整的IOS 游戏开发 PDF电子书定制下载

<iOS 5游戏开发>作者:(新西兰)James·Sugrue著 页数:191 出版社:北京市:人民邮电出版社 出版日期:2012.08 简介:<iOS5游戏开发>是一本iOS5游戏开发的基础入门书.全书使用通俗易懂的简单实例,带领读者经历构建经典动作游戏的整个周期.读者在本书的阅读过程中,将经历从开发概念.规划设计一直到编写实际代码的全过过程.本书的每一章,都将演示游戏创建过程中的一个逻辑步骤,读者将在其中学习如何创建Sprite,用触摸屏.重力感应器和屏幕游戏棒控制玩家角色等-

史上最全“大数据”学习资源整理

史上最全"大数据"学习资源整理 当前,整个互联网正在从IT时代向DT时代演进,大数据技术也正在助力企业和公众敲开DT世界大门.当今"大数据"一词的重点其实已经不仅在于数据规模的定义,它更代表着信息技术发展进入了一个新的时代,代表着爆炸性的数据信息给传统的计算技术和信息技术带来的技术挑战和困难,代表着大数据处理所需的新的技术和方法,也代表着大数据分析和应用所带来的新发明.新服务和新的发展机遇. 为了帮助大家更好深入了解大数据,云栖社区组织翻译了GitHub Aweso