【uml】之类图中的关系

2024-08-26 04:18
文章标签 关系 uml 图中

本文主要是介绍【uml】之类图中的关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

          uml早就画完了图,但是自己迟迟没有总结,因为总觉的自己把握的不到位,虽然现在也还是不到位,废话少说,上篇博客总结了用例图中的几种关系,这篇就讨论一下类图中的几种关系。


          在uml的所有图中,就我目前的水平,我觉得用例图和类图是最重要的,用例图上次已经介绍过了,这篇主要介绍类图,想要画好类图,就要先学会抽象类!之前我一直纠结于类图该如何抽象,问了几个人之后发现各有各的想法,不过对于十一期来说,大家主要是从两个方面来抽象类的,一部分人是从角色来抽象,另一部分人是从功能来抽象,一种看起来简单,一种看起来复杂,但是师姐告诉我:“不用纠结于到底该如何抽象,每个人都有自己抽象的方法,但是抽象,就是抽象出系统中的名词。”(大致是这么个意思)。

             要介绍类图中的关系,咱们先搞清楚几个概念:


             接口:对于接口,我查了一些资料,找到了最贴切的一种比喻:一个类可以实现多个接口,一个接口也可以被多个类实现。使用形象一点的比拟方法,可以把类当成一个人,接口则当做一个身份。一个人可能有多个身份(一个类可以有多个接口),他可能是军人(军人接口定义军人的属性和行为),作家(作家接口定义作家的属性和行为)等,不同的身份使得他有不同的能力和属性。


             一个身份(接口)也能够被多个人使用(一个接口可以被多个类实现)。比如一个军人身份可以给很多人,但是这些人完全可以用不同的能力和属性实现这个身份,他们可能是空军军官,也可能是海军列兵。身份只定义了一个人是什么,却不会告诉别人在这个身份下该这么做。怎么做是这个人本身的事情(接口仅仅定义相关的方法和属性而不实现她们)。



              类中大致有以下几种关系:泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

泛化和继承:师哥的博客是这么说的:继承关系是泛化关系的反关系,也就是说子类是从父类继承的,而父类则是子类的泛化。

              实现:实现是接口和类之间的关系,类可以实现接口的功能。


              关联:关联可以分为单向和双向,关联表示一个类知道另一个类。


              依赖:只能是单向的,是一种使用关系,被使用事物的改变可能会影响依赖他的事物。


              聚合:弱于组合,部分离开整体仍可存在


              组合:强于聚合,部分存在即整体存在,整体存在才有部分存在。

这篇关于【uml】之类图中的关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107519

相关文章

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

【408DS算法题】039进阶-判断图中路径是否存在

Index 题目分析实现总结 题目 对于给定的图G,设计函数实现判断G中是否含有从start结点到stop结点的路径。 分析实现 对于图的路径的存在性判断,有两种做法:(本文的实现均基于邻接矩阵存储方式的图) 1.图的BFS BFS的思路相对比较直观——从起始结点出发进行层次遍历,遍历过程中遇到结点i就表示存在路径start->i,故只需判断每个结点i是否就是stop

UML- 统一建模语言(Unified Modeling Language)创建项目的序列图及类图

陈科肇 ============= 1.主要模型 在UML系统开发中有三个主要的模型: 功能模型:从用户的角度展示系统的功能,包括用例图。 对象模型:采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图。 动态模型:展现系统的内部行为。 包括序列图、活动图、状态图。 因为要创建个人空间项目并不是一个很大的项目,我这里只须关注两种图的创建就可以了,而在开始创建UML图

读软件设计的要素04概念的关系

1. 概念的关系 1.1. 概念是独立的,彼此间无须相互依赖 1.1.1. 一个概念是应该独立地被理解、设计和实现的 1.1.2. 独立性是概念的简单性和可重用性的关键 1.2. 软件存在依赖性 1.2.1. 不是说一个概念需要依赖另一个概念才能正确运行 1.2.2. 只有当一个概念存在时,包含另一个概念才有意义 1.3. 概念依赖关系图简要概括了软件的概念和概念存在的理

数据依赖基础入门:函数依赖与数据库设计的关系

在数据库设计中,数据依赖 是一个重要的概念,它直接影响到数据库的结构和性能。函数依赖 作为数据依赖的一种,是规范化理论的基础,对数据库设计起着至关重要的作用。如果你是一名数据库设计的初学者,这篇文章将帮助你理解函数依赖及其在数据库设计中的应用。 什么是数据依赖? 数据依赖 是指同一关系中属性间的相互依赖和制约关系,它是数据库设计中语义的体现。在现实世界中,数据之间往往存在某种依赖关系,而这

c++ 和C语言的兼容性关系

C++ 和 C 语言有很高的兼容性,但也存在一些差异和限制。下面是它们的兼容性关系的详细介绍: 兼容性 C++ 是 C 的超集: C++ 语言设计为兼容 C 语言的语法和功能,大部分 C 代码可以在 C++ 编译器中编译运行。 标准库兼容性: C++ 标准库包含了 C 标准库的内容,如 stdio.h、stdlib.h、string.h 等头文件,但 C++ 的标准库也提供了额外的功能,如

七、Maven继承和聚合关系、及Maven的仓库及查找顺序

1.继承   2.聚合   3.Maven的仓库及查找顺序

file-max与ulimit的关系与差别

http://zhangxugg-163-com.iteye.com/blog/1108402 http://ilikedo.iteye.com/blog/1554822

【编程底层原理】方法区、永久代和元空间之间的关系

Java虚拟机(JVM)中的内存布局经历了几个版本的变更,其中方法区、永久代和元空间是这些变更中的关键概念。以下是它们之间的关系: 一、方法区: 1、方法区是JVM规范中定义的一个概念,它用于存储类信息、常量、静态变量、即时编译器编译后的代码等数据。 3、它是JVM运行时数据区的一部分,与堆内存一样,是所有线程共享的内存区域。 二、永久代(PermGen): 1、在Java SE 7之前,