UML之关系
学习UML我们首先要掌握他们的关系,UML关系可以分为四类,主要有关联、依赖、泛化和实现。
下面我们就一一来详细说明这几种关系。
关联
表示两个类或类与接口之间强烈的依赖关系,关联用直线表示。当然我们不能仅仅用一个直线表示关联,,就跟我们穿衣服似的还需要加些小饰品来修饰一下,那么对关联有哪些修饰呢?
名称:相当于标识符,让我们能认清这个关系。
角色:表示一个类在该关系中扮演的角色,比如人和公司就有这种关系,人是公司的职员,人就扮演职员的角色,公司是人的雇主,就扮演雇主的角色。
多重性:说明一个关联中有多少相互连接的对象。比如一个班有1...n名学生,一个学生属于一个班级,表示数量上的对应关系。
另外关联还可以分为聚合和组合,都表示整体和部分的关系,但聚合表示是有可以分割的部分组成,比如汽车就是由发动机和轮胎等等可单独存在的事物组装到一起。而组合是有不可分割的部分组成,比如人,就是一个不可分割的整体,虽然由四肢、心脏、肺等组成,但这些器官不能单独存在。
依赖
依赖简单来说就是一种使用关系,用虚线带箭头表示。就是类A要使用类B,是一种比较简单的关系。
泛化
泛化实际就是继承,用空心三角形表示。简单来说就是儿子从父亲哪里继承了父亲的一些属性和方法。比如一般孩子都和父母外观长得很像,这就是孩子从父母哪里继承了父母的基因。当然讲到继承就不得不提到多态,我们看到孩子和父母长得又有点不太像,这是因为在原来的基础之上,又有了自己的特点,这就是多态。
实现
实现主要用于类和接口之间的关系,用虚线加空心三角形表示。接口仅仅提供和外部沟通的方法,具体这个功能怎样实现,就需要我们进一步去用代码来实现这个功能。我们通过一个函数直接调用另一个功能,这个函数就可以称之为接口。
这仅是我自己对这几种关系的认识,可能有不对的,欢迎大家指正。接下来继续进行UML九种图的学习。
UML之关系的更多相关文章
- 【建模】UML类关系分析
一.UML类关系分析 1.关联(asociation) 一般是一方拥有另一方对象的指针.箭头的方向是访问方向. 2.聚合(Aggregation)和组合(Composition) 聚合和关联一般不做区 ...
- UML六种关系
UML六种关系 基础之上,并对其进行了扩展.在程序中是通过继承类实现的.比如狗是对动物的具体描述,在面向对象设计的时候一般把狗设计为动物的子类. 表示方法:空心三角形箭头的实线,子类指向父类 实现 概 ...
- 设计模式学习---UML常见关系的实现
一.UML基本构造 UML的基本构造含3种: (1) 事物(4种):结构事物,行为事物,分组事物,注释事物 (2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系 (3) 图(10种):用例图, ...
- UML——六大关系整理
UML——六大关系整理 1.定义 是一种面向对象的建模语言,它是运用统一的.标准化的标记和定义实现对软件系统进行面向对象的描述和建模(百度百科). 2.六种关系 这六种关系分别为,继承.实现.关联.聚 ...
- UML中关系的分类及其概念——总结备忘
UML中关系分类: 依赖:依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义. 关联:关联是类与类之间的联接,它使一个类知道另一类的属性和方法. 聚合:聚合 ...
- UML基本关系
UML-Unified Model Language 统一建模语言,又称标准建模语言.是用来对软件密集系统进行可视化建模的一种语言.UML的定义包括UML语义和UML表示法两个元素. UML是在开发阶 ...
- UML中类关系表示与Java代码中的对应关系
UML中类关系表示与Java代码中的对应关系 1. 类的UML表示法 上图中,Employee 类有两个String类型的私有属性和一个返回值为String类型public 方法 getName(); ...
- 学习设计模式第三 - 基础使用UML表示关系
面向对象的思想中存在如下几种关系,一般为了方便交流都使用UML的类图来展现类之间的关系.所以了解类图中符号的含义对看懂类图,尤其是用类图展示的设计模式很有帮助.下面依次介绍这几种关系 类继承关系 继承 ...
- 我所理解的OOP——UML六种关系
最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了,有时候也会尝试使用UML表示类之间的关系,但UML从毕业后就再也没接触过了,经常会被小伙伴儿们指出继 ...
- 软件开发与UML的关系
今天,我们上<统一建模语言UML>.课上老师给我们讲解了软件开发与UML之间的关系:UML常用于建立软件系统的模型,适用于系统开发的不同阶段.UML的应用贯穿于系统开发的不同阶段.1.需求 ...
随机推荐
- mysql 报错ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ ( ...
- PHP,Excel导出换行
// 有id,才算真的有发票数据 if ($v['b_invoice_id']) { $v['b_invoice_info'] = json_decode($v['b_invoice_json'],t ...
- 作为注册中心Eureka比Zookeeper好在哪里?
作为注册中心Eureka比Zookeeper好在哪里? 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性),A(可用性)和P(分区容错性).由于分区容错性P在是分布式系统中必须要保证 ...
- LeetCode 144. 二叉树的前序遍历(Binary Tree Preorder Traversal)
144. 二叉树的前序遍历 144. Binary Tree Preorder Traversal 题目描述 给定一个二叉树,返回它的 前序 遍历. LeetCode144. Binary Tree ...
- K8S从入门到放弃系列-(13)Kubernetes集群mertics-server部署
集群部署好后,如果我们想知道集群中每个节点及节点上的pod资源使用情况,命令行下可以直接使用kubectl top node/pod来查看资源使用情况,默认此命令不能正常使用,需要我们部署对应api资 ...
- python 2.7 环境配置
原文地址:Python 2.7的安装(64位win10) Python 2.7.12 下载地址:https://www.python.org/downloads/ 安装路径D:\Program Fil ...
- C 语言字符串的比较
C 语言字符串的比较 #include <stdio.h> #include <Windows.h> #include <string.h> int main(vo ...
- jdk8新特性--使用lambda表达式的延迟执行特性优化性能
使用lambda表达式的延迟加载特性对代码进行优化:
- 关于Mybatis中mapper.xml的传入参数简单技巧
由于在做项目的时候,我看见同事使用的传入参数类型各式各样,感觉没规律可言,闲暇的时候我就自己搭建了项目做了一些传入参数的测试(当然其实更好的方式是看源码,但是博主能力有限,毕竟入行没多久,看起来很吃力 ...
- TypeScript入门一:配置TS工作环境
配置手动编译TS文件工作环境 配置webpack自动化打包编译工作环境(后面补充) 一.TypeScript入门学习引言 进入主题之前,首先说明这个系列的博客是我刚刚接触TypeScript的学习笔记 ...