软件设计之UML的几种关系
在软件开发中,经常会遇到UML建模,而类图作为一种静态的结构图,不仅是系统编码和测试的重要模型,还可以简化人们对系统的理解。因此,理解和知道如何使用UML图就显得尤为重要!
UML类图的基本符号
UML类图基本符号的含义
1、类(Class):一般是用三层矩形框表示,第一层表示类的名称,第二层表示的是字段和属性,第三层则是类的方法。第一层中,如果是抽象类,需用斜体显示。
2、包(Package):是一种常规用途的组合机制。在UML中用一个Tab框表示,Tab里写上包的名称,框里则用来放一些其他子元素,比如类,子包等等。
3、接口(Interface):表示的是一系列的操作集合,它指定了一个类所提供的服务。一个接口只指明了实现这一接口的分类器实例应该支持的特性,并没有指定其所刻画的特性是如何实现的。
UML类图六种关系
在UML类图中,常见的有以下几种关系:
- 泛化(Generalization)
- 实现(Realization)
- 关联(Association)
- 聚合(Aggregation)
- 组合(Composition)
- 依赖(Dependency)。
各种关系的强弱顺序:泛化 >实现>组合> 聚合> 关联> 依赖
- 泛化:表示的是类之间的继承关系,注意是子类指向父类。UML中用带空心三角箭头的实线表示泛化关系,箭头指向的是一般个体。
- 实现:一般是接口和实现类之间的关系;
- 关联:一种拥有关系,表示的是类与类之间存在某种特定的对应关系。UML中用双向带箭头的虚线表示关联关系,箭头两端为相互关联的两个类。
- 聚合:表示的是整体与部分之间的关系, 如汽车类和轮胎类;部分不能离开整体单独存在。UML中用空心菱形头的实线表示聚合关系,菱形头指向整体。
- 组合:是聚合的一种特殊形式,表示的是类之间更强的组合关系。整体与部分的关系,但是二者不可分离,分离了就没有意义了,例如,公司类和部门类,没有公司就没有部门;UML中用实心菱形头的实线来表示组合,菱形头指向整体。
- 依赖:表示的是类之间的调用关系。UML中用带箭头的虚线表示依赖关系,而箭头所指的则是被依赖的类
软件设计之UML的几种关系相关推荐
- UML 有几种关系图标
UML 有几种关系图标:泛化(继承),实现,依赖,关联,聚合,组合 泛化(继承) B--▷A B 类作为 A 类的子类存在.(A是具体类) 实现 ...
- 软件设计之UML—UML中的六大关系
一.UML中的六大关系 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation), ...
- 软件设计之UML—UML的构成[上]
UML是一种通用的建模语言,其表达能力相当的强,不仅可以用于软件系统的建模,而且可用于业务建模以及其它非软件系统建模.UML综合了各种面向对象方法与表示法的优点,至提出之日起就受到了广泛的重视并得到了 ...
- UML 用例图以及UML的八种关系
首先,一张总体的知识脉络导图献上: 一.什么是用例图? 用例图描述了一组用例.参与者以及它们之间的关系. 使用阶段:软件需求分析 使用者:软件分析人员.软件开发人员 用例模型:表明开发者和用户对需求规 ...
- 剪不断,理还乱——UML的四种关系
看UML视频已经有一段时间了,但是对于UML中的关系还是不够理解.虽然,UML中只有四种关系,但是还是不太能够区分,有种剪不断,理还乱的赶脚.特此总结. (一)关联. 关联表示两个或多个类之间 ...
- UML之6种关系的解释与画法
1.依赖关系,A类是B类的一个变量,B类持有A类的一个引用.依赖其实定义非常模糊,所以使用依赖只应该是在其他关系无法表示的时候: 2.泛化关系 就是java中的继承 3.关联关系,分为单项关联,双向关 ...
- UML图和软件设计原则
笔记来源于黑马程序员但不仅仅是黑马 UML图和软件设计原则 UML图 2.1 类图概述 2.2 类图的作用 2.3 类图表示法 2.3.1 类的表示方式 2.3.2 类与类之间关系的表示方式 2.3. ...
- 软件设计与体系结构(第二版)部分习题
第一章:软件工程与软件设计 1.叙述软件工程中可修改性,有效性,可靠性,可理解性,可维护性,可重用性,可适应性,可移植性和可追踪性等概念的含义,并指明这些概念的重要性 可修改性(modifiabili ...
- 软件设计应该遵循的基本原则有哪些?
1.1)高内聚.低耦合 一个软件系统要有一个稳定的架构,不会随着需要的改变在发生巨大的变动.因此,高内聚.低耦合是一个软件系统设计中必须遵循的基本原则. 所谓高内聚,是指一个软件模块内各个元素彼此结合 ...
最新文章
- Javascript(JS)中的大括号{}和中括号[]详解
- .Net Core中利用TPL(任务并行库)构建Pipeline处理Dataflow
- Java集合:ArrayList和LinkedList区别?
- 去除C++中string前面和后面的空白符
- 转:实例学习PHP程序对用户身份认证实现两种方法
- 小话设计模式三:发布/订阅模式
- 报名|腾讯技术开放日·5G技术专场
- win2008 mysql端口_Win7系统下SqlServer 2008修改IP端口的方法
- SQL创建数据库– PostgreSQL,MySQL,SQL Server
- Struts2+Spring4+Hibernate4项目整合
- Delphi版本下载合集更新至10.4.1
- python模拟gps定位_python 模拟 GPS, $GPRMC $GPRMC
- 利用FGSM实现对抗样本攻击
- 有人喜欢有人嫉妒,竟然因为这上了互联网热搜
- 吴裕雄--天生自然 诗经:临江仙·滚滚长江东逝水
- 模拟游戏在设计上是如何处理对仿真性的追求的?
- LOE是什么?如何加入?
- SQL SERVER 2016安装部署
- java muti实现图片上传_MutiFileUpload.java 多文件上传
- Python实现计算圆周率π的值到任意位的方法示例
热门文章
- Head First 设计模式 —— 策略设计模式
- 使用 matlab 数字图像处理(十)—— 维纳滤波复原
- hadoop 2.6 伪分布式的安装
- python抛出异常 后如何接住,Python 异常的捕获、异常的传递与主动抛出异常操作示例...
- python画简便的图-python如何画出漂亮的地图?
- 基于python的在线考试系统-基于Django的在线考试系统
- 简明python教程-Python简明教程
- 2018年python工作好找吗-2018年涨工资了吗?Python 工程师薪资最新出炉
- 用python画简单的图案-使用 Python Turtle 设计简单而又美丽的图形
- Android 轻松实现语音识别详解及实例代码