类与类之间的关系图(Class Diagram,UML图)

2023-11-11

一、简介

二、类的构成

三、类之间的关系(Relationship

1、单向关联

2、双向关联

3、自身关联

4、多维关联(N-ary Association)

5、泛化(Generalization)

6、依赖(Dependency)

7、聚合(Aggregation)

8、组合(Composite

四、总结

一、简介

类是对象的集合,展示了对象的结构以及与系统的交互行为。类主要有属性(Attribute)和方法(Method)构成,属性代表对象的状态,如果属性被保存到数据库,此称之为“持久化”;方法代表对象的操作行为,类具有继承关系,可以继承于父类,也可以与其他的Class进行交互。

       类图展示了系统的逻辑结构,类和接口的关系。

、类的构成

类主要有属性和方法构成。比如商品属性有:名称、价格、高度、宽度等;商品的方法有:计算税率,获得商品的评价等等。如下图

 

三、类之间的关系(Relationship

关联(Association)

两个相对独立的对象,当一个对象的实例与另外一个对象的特定实例存在固定关系时,这两个对象之间就存在关联关系。

1、单向关联

A1->A2: 表示A1认识A2A1知道A2的存在,A1可以调用A2中的方法和属性

场景:订单和商品,订单中包括商品,但是商品并不了解订单的存在。

类与类之间的单向关联图:

C#代码:

Public class Order

{

       Public List<Product> order;

Public void AddOrder(Product product )

       {

              order.Add(product);

}            

}

Public Class Product

{

}

代码表现为:Order(A1)中有Product(A2)的变量或者引用

 

2、双向关联

B1-B2: 表示B1认识B2B1知道B2的存在,B1可以调用B2中的方法和属性;同样B2也知道B1的存在,B2也可以调用B1的方法和属性。

场景:订单和客户,订单属于客户,客户拥有一些特定的订单

类与类之间的双向关联图

C#代码

Public class User

{

       Public List<Order> GetOrder()

       {

}      return new List<Order>();

}

Public Class Order

{

       Public User GetUserByOrderID(string OrderId )

       {

              Return new User();

}

}

 

3、自身关联

同一个类对象之间的关联

类与类之间自身关联图

4、多维关联(N-ary Association)

多个对象之间存在关联

场景:公司雇用员工,同时公司需要支付工资给员工

类与类之间的多维关联图:

 

5泛化(Generalization)

类与类的继承关系,类与接口的实现关系。

场景:父与子、动物与人、植物与树、系统使用者与B2C会员和B2E会员的关系

类与类之间的泛化图:

系统的使用者包括:B2C会员、B2B会员和B2E会员。

接口的实现,动物都有吃的行为,而人是动物的一个具体实例,实现具体Eat的动作

 

6、依赖(Dependency)

A要完成某个功能必须引用类B,则AB存在依赖关系,依赖关系是弱的关联关系。C#不建议双相依赖,也就是相互引用

场景:本来人与电脑没有关系的,但由于偶然的机会,人需要用电脑写程序,这时候人就依赖于电脑。

类与类的依赖关系图

在程序中一般为 using 引用。

 

7、聚合(Aggregation)

当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚合关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。

场景:商品和他的规格、样式就是聚合关系。

类与类的聚合关系图

 

 

8、组合(Composite

       对象A包含对象B,对象B离开对象A没有实际意义。是一种更强的关联关系。人包含手,手离开人的躯体就失去了它应有的作用。

场景: Window窗体由滑动条slider、头部Header 和工作区Panel组合而成。

类与类的组合关系图

 

四、总结

   本文针对类之间常用的关系进行了简单的描述,主要有:关联关系、泛化、依赖、聚合和组合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类与类之间的关系图(Class Diagram,UML图) 的相关文章

  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • Open3D Ransac拟合分割多个平面(方法二)

    目录 一 算法原理 二 代码实现 三 结果展示 四 测试数据 一 算法原理 算法的核心原理还是RANSAC拟合平面 具体理论可参考 Open3D 使用RANSAC分割平面 只是对代码稍加修改使其适用于分割点云数据中的多个平面 二 代码实现
  • SSM实现网上商城 有聊天功能

    1 项目介绍 实现一个网上商城 商品信息展示 购物车 订单管理 个人中心 商品评价 商品搜索 地址管理 聊天 后台管理 商品增删改查 分类管理 活动管理 客服聊天回复 2 开发环境 开发环境 IDEA eclipse Tomcat8 5 数
  • centos6.5破解,没成功

    安装aircrack ng make make install 新建crack文件夹下操作以下步骤 方便 监听wlan0 iwconfig eth0有线网卡 wlan0无线网卡 sudo airmon ng start wlan0 启动 s
  • Anaconda bug

    报错如下 DEBUG urllib3 connectionpool Starting new HTTPS connection 1 repo anaconda com 443 DEBUG urllib3 connectionpool Sta
  • C语言中的快速排序库函数

    前言 由于自己的记性一直不好 总是记不住c语言中的快速排序函数 于是自己写下博客来记录一下 快速排序库函数 c语言中的快速排序库函数如下 注意 库函数是在stdlib h头文件中 qsort arr length size t cmp 其中
  • python爬虫,爬取表格数据

    python爬虫 爬取全国空气质量指数 编程环境 Jupyter Notebook 所要爬取的网页数据内容如下图 python爬虫代码及含义详细说明 全国城市 import time import requests from bs4 imp
  • 虚拟磁盘工具vmkfstools的使用

    一 虚拟磁盘类型 厚置备延迟置零 默认选项创建过程中为虚拟磁盘分配所需空间 创建时不会擦除物理设备上保留的任何数据 但是以后从虚拟机首次执行写操作时会按需要将其置零 2 厚置备置零 创建支持群集功能的厚磁盘 在创建时为虚拟磁盘分配所需的空间
  • 学习笔记之——Jacobian matrix(雅可比矩阵)

    在 斯坦福大学公开课 机器人学 视频课程中一开始就提到了Jacobian matrix的重要性 为此写下本学习笔记介绍雅可比矩阵 本博客的内容来自于网络的各种资料的总结 已经给出参考引用 本文仅作本人学习记录用 目录 定义 机器人关节 Jo
  • ubuntu系统matlab2021a安装及设置matlab快捷方式

    一 matlab安装 1 matlab2021a下载 迅雷下载地址 magnet xt urn btih EB1C3A0864431D21A342F09CC75831879CB0E374 tr http 3A 2F 2Fbt4 t ru o
  • diy手工制作泡沫小球_【手工】泡沫和彩纸就能diy超多款创意花球,孩子的毕业典礼正好用上!...

    原标题 手工 泡沫和彩纸就能diy超多款创意花球 孩子的毕业典礼正好用上 毕业季来啦 孩子即将毕业 当父母的你们去和孩子一起拍毕业照的时候准备了什么礼物呢 遥想当年还是学生的小爱老师 虽然毕业前就老吐槽说不要收花 真到毕业了还是忍不住俗气地
  • docker registry 搭建流程(含CA认证)

    docker registry 搭建 含CA认证 环境说明 终端 操作系统 其他 服务端 Centos7 IP 10 192 3 230 客户端A boot2docker IP 192 168 99 100 服务端配置 安装docker y
  • ttl计算机,如何利用生存时间值(TTL)来判断操作系统

    一 什么是TTL TTL Time To Live 生存时间 是IP协议包中的一个值 当我们使用Ping命令进行网络连通测试或者是测试网速的时候 本地计算机会向目的主机发送数据包 但是有 的数据包会因为一些特殊的原因不能正常传送到目的主机
  • nginx服务器搭建好但是浏览器却无法访问原因排查

    问题 1 查看ip地址 2 xshell中访问nginx服务器 curl 服务器地址 curl 172 17 199 190 出现如下界面说明服务器搭建完成 3 在浏览器输入该网址 但是却无法打开 问题一 nginx监听的端口是否被占用 查
  • Kbuild系统源码分析(四)—./scripts/Makefile.build

    版权声明 本文为CSDN博主 ashimida 的原创文章 遵循CC 4 0 BY SA版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net lidan113lidan article details
  • Machine Learning Park--EM(最大期望算法)

    9 EM算法 最大期望算法 在前面聚类的博客当中 我们简单的讲解过使用EM算法求解GMM模型的过程 这里我们对EM算法深入进行探讨 本文Github仓库已经同步文章与代码https github com Gary code Machine
  • android缓存面试,Android面试——Glide 的缓存原理

    Glide 内部是使用 LruCache 弱引用和硬盘缓存实现的 Glide 主要将缓存分为两块内存缓存和硬盘缓存 两种缓存的结合 构成了 Glide 缓存机制的核心 内存缓存skipMemoryCache true 默认是开始缓存的 如果
  • 【数据结构】二叉树、堆多图详解(TopK、堆排序)

    和光同尘 我的个人主页 应该在肩膀上长着自己的脑袋 弗拉基米尔 伊里奇 列宁 二叉树 堆的概念及应用 前言 1 数的概念及结构 1 1 树的概念 1 2 树的相关概念 1 3 数的表示 2 二叉树概念及结构 2 1 概念 2 2 特殊二叉树
  • keil_lic.exe注册机使用

    第一步 以管理员身份运行keil5 第二步 打开File中的License Management 第三步 复制CID 第四步 选择对应的Target为ARM 粘贴CID 复制生成的注册码 第五步 将注册码粘贴到这 就ok了
  • Android实现折叠式Toolbar:CollapsingToolbarLayout 使用教程与解析

    简介 在各种不同的应用中 大家可能会经常见到这样一个效果 Toolbar是透明的 有着一个背景图片以及大标题 随着页面向上滑动 其标题逐渐缩放到Toolbar上 而背景图片则在滑动到一定程度后变成了Toolbar的颜色 这种效果也即是折叠式
  • 类与类之间的关系图(Class Diagram,UML图)

    一 简介 二 类的构成 三 类之间的关系 Relationship 1 单向关联 2 双向关联 3 自身关联 4 多维关联 N ary Association 5 泛化 Generalization 6 依赖 Dependency 7 聚合