建立对象模型即使用UML画类图

2023-05-16

UML类图画法及其之间的几种关系

最近复习软件工程的考试,大题需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,

上百度进行搜索,发现了一篇学习笔记,整理总结的不错哦

自我总结:

看见建立对象模型的题目首先想到就是使用UML画类图,有一定的步骤

1抽象出类

2找属性

3确定关系

啊啊啊,忘啦

文章目录如下:

类图画法

类之间的几种关系:泛化(Generalization)、实现(Realization)、关联(Association)(又分一般关联、聚合(Aggregation)、组合(Composition))、依赖(Dependency)

一、类图画法


1、 类图的概念

A、显示出类、接口以及它们之间的静态结构和关系

B、用于描述系统的结构化设计

2、 类图的元素

类、接口、协作、关系,我们只简单介绍一下这四种元素。

同其他的图一样,类图也可以包含注解和限制

类图中也可以包含包和子系统,这两者用来将元素分组

有时候你也可以将类的实例放到类图中。

3、 类

A、 类是对一组具有相同属性、操作、关系和语义的对象的抽象,它是面向对象系统组织结构的核心,包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation),见下图。

这里写图片描述

B、 类属性的语法为:

[可见性] 属性名 [:类型] [=初始值] [{属性字符串}]

可见性:公有(Public)“+”、私有(Private)“-”、受保护(Protected)“#”

类操作的语法为:

[可见性] 操作名 [(参数表)] [:返回类型] [{属性字符串}]

可见性:公有(Public)“+”、私有(Private)“-”、受保护(Protected)“#”、包内公有(Package)“~”

参数表:

定义方式:“名称:类型”;若存在多个参数,将各个参数用逗号隔开;参数可以具有默认值;

属性字符串:

在操作的定义中加入一些除了预定义元素之外的信息。

4、 接口

在没有给出对象的实现和状态的情况下对对象行为的描述。

一个类可以实现一个或多个接口。

使用两层矩形框表示,与类图的区别主要是顶端有<>显示: 
这里写图片描述 
也可以用一个空心圆表示: 
这里写图片描述

5、 协作

协作是指一些类、接口和其他的元素一起工作提供一些合作的行为,这些行为不是简单地将元素加能得到的。例如:当你为一个分布式的系统中的事务处理过程建模型时,你不可能只通过一个类来明白事务是怎样进行的,事实上这个过程的执行涉及到一系列的类的协同工作。使用类图来可视化这些类和他们的关系。

6、 关系

这篇文章的重点,详见第二部分。

二、类之间的几种关系


1、 泛化(Generalization)

A、 是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为,描述了一种“is a kind of” 的关系。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

B、 用带空心箭头的实线表示,箭头指向父类,如下图:

这里写图片描述

2、 实现(Realization)

A、 是一种类与接口的关系,表示类是接口所有特征和行为的实现。

B、 用带空心箭头的虚线表示,箭头指向接口,如下图:

这里写图片描述

3、 关联(Association)

A、 一般关联

a、 关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法,指明了事物的对象之间的联系,如:老师与学生、丈夫与妻子。关联可以是双向的,也可以是单向的,还有自身关联。

b、 用带普通箭头的实心线表示。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头,如下图:

这里写图片描述

B、 聚合(Aggregation)

a、 它是整体与部分(整体 has a 部分)的关系,且部分可以离开整体而单独存在,如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。飞机场离开飞机也可以存在。聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

b、 用带空心菱形的实线表示,菱形指向整体,如下图:

这里写图片描述

C、 组合(Composition)

a、 它是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

b、 用带实心菱形的实线表示,菱形指向整体,如下图:

这里写图片描述

聚集:就像机场和飞机的关系,机场可以没有飞机,飞机也不一定在机场;

 

组成:就像汽车和轮胎,汽车必须有轮胎,轮胎离开汽车也没有意义。

聚集:就像机场和飞机的关系,机场可以没有飞机,飞机也不一定在机场;

 

组成:就像汽车和轮胎,汽车必须有轮胎,轮胎离开汽车也没有意义。

聚集:就像机场和飞机的关系,机场可以没有飞机,飞机也不一定在机场;

 

组成:就像汽车和轮胎,汽车必须有轮胎,轮胎离开汽车也没有意义。


4、 依赖(Dependency)

A、 元素A的变化会影响元素B,那么B和A的关系是依赖关系,B依赖A。要避免双向依赖,一般来说,不应该存在双向依赖。关联、实现、泛化都是依赖关系。

B、 用带箭头的虚线表示,箭头指向被依赖元素。

这里写图片描述

5、 总结


各种关系的强弱顺序如下:

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

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

这里写图片描述

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

建立对象模型即使用UML画类图 的相关文章

随机推荐

  • soft-nms(softnms)(pytorch实现)& softer nms

    softnms和softer nms是nms的两个改进算法 传统nms存在的问题 传统的NMS方法是基于分类分数的 xff0c 只有最高分数的预测框能留下来 xff0c 但是大多数情况下IoU和分类分数不是强相关 xff0c 很多分类标签置
  • 树莓派相关知识

    1 树莓派RS与E14版本的区别 树莓派分RS和E14版本 xff0c 由不同的代工厂生产 xff0c 除了外包装不一样 xff0c 硬件电路和功能一模一样 2 普通的计算机主板都是依靠硬盘来存储数据 xff0c 但是Raspberry P
  • CAS server6.x配置与部署笔记

    由于最近将公司的springboot升级到了springboot2 xff0c 而5 x的cas server使用的是springboot1 xff0c 因此为了更方便的开发cas server xff0c 将cas server升级为6
  • SQLyog复制数据库时,报错 “Unknown collation:’utf8mb4_0900_ai_ci'"

    原因为被复制的数据库的Collation为utf8mb4 0900 ai ci 为8 0版本 xff09 xff0c 而目标数据库为5 7版本 xff0c 不支持utf8mb4 0900 ai ci 解决方法 xff1a 将目标数据库更新为
  • 微信小程序背景图虚化

    微信小程序背景图虚化 filter blur 10rpx
  • 判断两个IP是否属于同一子网

    题目描述 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据 子网掩码与IP地址结构相同 xff0c 是32位二进制数 xff0c 其中网络号部分全为 1 和主机号部分全为 0 利用子网掩码可以判断两台主机是否中同一子网中
  • 状态模式

    状态模式允许对象在内部状态改变时改变它的行为 xff0c 对象看起来好像修改了它的类 它将一群行为封装在状态对象中 xff0c context的行为随时可委托到那些状态对象中的一个 随着时间的流逝 xff0c 当前状态在状态对象中游走改变
  • openstack cinder 双ceph后端之间的卷迁移操作

    1 前置条件 已为cinder配置好双ceph后端 xff0c 配置过程见openstack cinder对接两个ceph后端配置 2 卷类型相同的卷迁移 页面上的卷迁移 xff0c 走的是migrate volume接口 入口在cinde
  • KEIL软件的Error: Flash Download failed - Could not load file ‘...axf‘解决思路

    在下载程序的时候出现Error Flash Download failed Could not load file 39 的错误 xff0c 我的原因是之前勾选了下面这里的软件组件 xff0c 全部取消后就可以了
  • C# WinForm系列-创建Windows项目

    本系列实例适合初学者 xff0c 老手请直接Pass吧 Visual Studio从2003版本到现在的2022版本 xff0c 我也一版一版的使用 xff0c 体验了微软这个IDE开发工具的强大 唉 xff0c 我想多说点或上网多找点资料
  • vscode远程无密码登录

    1 安装插件 xff1a remote development 2 免密码登陆 xff1a vscode远程开发及公钥配置 xff08 告别密码登录 xff09 星轨 CSDN博客 vscode 公钥 当你完成全部设置 xff0c 并以密钥
  • Jetson Nano B01 从零入门笔记系列(二)python环境构建-pycharm安装-pytorch安装

    Jetson Nano B01 从零入门笔记系列 xff08 二 xff09 python环境构建 pycharm安装 pytorch安装Bug与报错 1 前言 时隔N年我居然又回来搞这个了 xff0c 真是命运弄人 为了应付万恶甲方的BT
  • 树莓派只能网线连接无法连接WiFi的解决方法

    最近几天树莓派好端端地突然连不上WiFi xff0c 右上角WiFi图标也显示异常 xff0c 无法看到周围可连接WiFi列表 xff0c 但却能连上wpa supplicant conf中配置好的另一个WiFi xff0c 插网线也无效
  • js时间转化格式及UCC、HIBC条码解析

    就记录下 xff0c 条形码解析写的很糟糕 xff0c 好多地方可以封装函数的 xff0c 所以有点乱 xff0c 直接复制过去还能用的 xff0c UCC条码只能解析包装代码 xff0c 通过包装代码获取型号是调后台接口 xff0c 然后
  • 在ubuntu16.04下搭建samba,实现linux与windows之间的资源共享

    1 先在 ubuntu 下安装好 samba 安装 samba xff1a sudo apt get install samba 安装 smbclient xff1a sudo apt get install smbclient 2 在虚拟
  • TypeScript学习笔记(一)

    TS学习笔记 文章目录 TS学习笔记一 环境搭建二 基本类型1 类型声明2 基本类型 三 编译选项四 Webpack 43 TS xff08 一 xff09 基础配置1 配置依赖2 webpack config js3 tsconfig j
  • ROS学习笔记(四): publisher的编程实现

    四 publisher的编程实现 1 在工作区创建功能包 目的 xff1a 创建一个使小乌龟画圆的publisher 打开工作区 cd catkin ws src 创建工作包 xff0c 不要使用大写字母命名 xff0c 会编译不成功 ca
  • unity用按钮跳转场景代码

    首先创建场景scene 0 xff0c 在上面创建一个按钮 xff0c 保存scene 0 然后创建场景scene 1 xff0c 保存scene 1 然后分别运行其场景 xff0c 在运行的过程中 xff0c 点击 File gt Bui
  • Unity给游戏添加倒计时和分数

    总觉得敲代码可难可难 xff0c 昨天做了一天 xff0c 游戏雏形出来了 xff0c 涉及到逻辑一块却很棘手 xff0c 网上百度了 xff0c 版本太多 xff0c 实现的效果也不近人意 问室友 xff0c 分分钟就解决了 xff0c
  • 建立对象模型即使用UML画类图

    UML类图画法及其之间的几种关系 最近复习软件工程的考试 xff0c 大题需要画一下类图 xff0c 发现类图的画法及其之间的几种关系已经淡忘了很多 xff0c 上百度进行搜索 xff0c 发现了一篇学习笔记 xff0c 整理总结的不错哦