UML之类与类图
在所有项目中,类都是最常见的UML模型元素(当然,不可否认,很多项目还没画出类图就直接进入编码实现的阶段了)。类是UML模型与具体实现代码之间的桥梁,随着对UML建模的深入了解,我们也会发现,类(确切说是分析类)其实也是一些模型之间的桥梁。
在真实世界中不同对象通过协同工作完成相关业务。而从软件系统实现层面来说,是系统中的不同对象通过协同工作完成业务系统的相关功能。系统中的对象往往是真实世界中对象的映射。在面向对象的分析、设计(OOAD)与编程(OOPL)中,系统中的对象是类的实例,而类是对现实世界中对象的抽象,它代表了现实世界中被抽象对象的集合。
类对对象的抽象是通过抽取其与业务需求实现相关联的特征而完成的,定义完成的类,可以看作是产生对象实例的工厂或模板。
真实世界中有两类对象:一类是看得见的摸得着的实实在在的实体对象,这些对象比较容易发现,我们可以给予它们名称,可以轻易了解它的一些属性,比如:图书、人、汽车等;另一类是看不见摸不着的抽象的概念,比如:购物网站的订单、日期、时间等。
不同的类拥有不同的特性和行为,类的特性称为属性,类的行为称为操作。
对于图书而言,它的特性由书名、作者、出版年份、ISBN号、印刷批次等组成,而这里的每一项是一个类的属性。我们可以通过这些属性识别出“这是谁写的哪本书”,而如果是在图书馆中的图书则还会有借阅号、借阅状态等属性,这些属性则可以识别出“这是放在哪个书架上的哪本书”。
对于图书而言,它本身不会有主动的行为,如果是在图书馆中的图书,它的行为(即操作)则可能包括借书、还书等。
UML中用类图来描述类,类图通常由三部分组成:类名、属性列表和操作列表,如下图所示。在使用时,类名是必须给出的,而属性列表与操作列表在不同视图中则可以根据需要省略其中的一个或者两者都省略,但如果两者都出现的话,则必须保证属性列表在上操作列表在下。

类名应该是一个名词,通常其首字母要大写。对于图书,我们可以将它的类名定义为Book。
属性名应该是一个名词,通常其首字母要小写,属性类型可以是基本数据类型、自定义的数据类型或者类。类Book的属性一般会包含有书名、作者、出版年份等信息,而如果类Book是为图书馆的借阅系统建立的,则类Book还应包含索书号等信息。添加了这些属性的类Book的类图如下所示:

在上图中,我们可以看到属性以“属性名:类型”的形式展现。在建模阶段,我们也可以先不考虑属性的类型,即“:类型”部分可以省略,省略属性类型的类图如下所示。

观察以下两个表示类Book的类图,可以发现这两个类图都省略了属性accessionNo,第一个类图在最后通过添加省略号(…)表示还有未显示出来的属性,如果在类图的属性区域出现省略号,则表示至少有一个属性在类图中没有被展示出来。


通常我们会通过工具来描绘UML中的各种图形,对于类图,工具通常支持按照属性的可见性进行筛选展示,例如你可以只展示public的属性而隐藏剩余的其它属性。
类图展示属性的区域,如果你愿意,还可以明确表明这个区域是描述类属性的区域,其具体做法是在类图属性区域的顶端标明“attributes”,但是要注意的是它是小写居中的复数形式。

操作是类实例可以被要求执行、承受、启动的相关行为,或者是可以在对象上被执行的相关行为。如果一个类不是一个活动类,它的实例不会自己主动做任何事情,这些操作将由其它对象进行触发。操作名应该是一个动词,通常其首字母要小写,并且其后要跟随一对小括号“()”。
依然以借阅系统中的代表图书的类Book为例,它应当具备的操作有借书、还书、预订等。添加了这些操作的类Book的类图如下图所示:

与属性类似,类图中的操作也可以在展示时省略,省略号表示至少有一个操作被隐藏。而展示操作的区域,也类似可以在顶端标明“operations”,它同样也是小写居中的复数形式。

操作可能会需要参数,添加了操作参数名称的类图如下所示:
为操作添加参数时,也可以明确说明各参数的类型,这可以通过在参数名后添加“:类型”来实现。类似地,如果建模者要说明操作的返回值类型,可以在跟随操作参数列表右侧的“)”后添加“:类型”来进行说明。为类Book的操作添加参数类型与返回类型的类图如下图所示:

需要补充说明的是,这里提及的“操作”在类的实例外是可见的,它可能会由一系列“方法”具体实现,这些“方法”在类的实例外是不可见的。通常,我们并不会刻意用“操作”与“方法”来区分这种差别,而是都称为“方法”,然后再通过可见性的约束来实现上述目的。
最后,再次提醒,如果在类图中要同时展示属性与操作,必须属性在上而操作在下。

UML之类与类图的更多相关文章
- UML简单介绍—类图详解
类图详解 阅读本文前请先阅读:UML简单介绍—类图这么看就懂了 1.泛化关系 一个动物类: /** * 动物类 */ public class Animal { public String name; ...
- 3.UML中的类图及类图之间的关系
统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...
- GOF 的23种JAVA常用设计模式总结 02 UML中的类图与类图之间的关系
统一建模语言UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际 ...
- UML中的类图及类图之间的关系
统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...
- UML精粹3 - 类图,序列图,CRC
类图Class diagram 类图描述系统中的对象类型,以及它们之间的各种静态关系.类图也展示类的性质和操作,以及应用于对象连接方式的约束.UML中的特性feature,涵盖了性质property和 ...
- 软件工程 #02# Entity Relationship Diagram VS. 用 UML 中的类图表示 E-R 图
不同的老师叫我们画 E-R 图居然是不一样的,于是我仔细研究了一番.. 通常所说的 E-R 图(外文全称 Entity Relationship Diagram,简称 ERD)长这个样子: 而有时候它 ...
- UML简单介绍—类图这么看就懂了
如何看懂类图 1.类图简介 描述类的内部结构和类与类之间的关系,是一种静态结构图. 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关 ...
- 【UML 建模】类图介绍
1.类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础.类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静态模型. 2.类的关系有泛化(Generalization). ...
- UML静态视图——类图、对象图、包图
绘画类的最重要的图是抽象类.让我们回顾一下类的基本内容. 一.分类 1.类的概念: 面向对象编程的类是一个基本概念.类是具有相同特性的.办法.集合语义和一组对象的关系. 2.类分类: 实体类:保存要放 ...
- 使用UML工具分析类图与类的关系-bouml(java和C++)
在分析类之间的关系时可以借助工具来实现. bouml是一个UML分析工具,最新的版本是收费的,但是之前的版本是免费的. 这里使用的是4.23版. Bouml安装: 安装软件就按照流程走就行了.但是第一 ...
随机推荐
- log4j2配置自定义filter报错Unable to invoke factory method in class
报错Unable to invoke factory method in class com....log4j.ScheduleLoggerFilter 2020-05-13 16:32:35,613 ...
- 云原生周刊:6 项 K8s 成本控制策略 | 2023.7.17
开源项目推荐 Base Image Finder 当使用容器扫描工具来识别已知漏洞(CVE,或常见漏洞和暴露)时,可能很难理解漏洞在容器中的位置,以及如何缓解这些漏洞.通常,最简单.最有效的缓解方法是 ...
- OpenFunction 0.6.0 发布: FaaS 可观测性、HTTP 同步函数能力增强及更多特性
OpenFunction 是一个开源的云原生 FaaS(Function as a Service,函数即服务)平台,旨在帮助开发者专注于业务逻辑的研发.在过去的几个月里,OpenFunction 社 ...
- 初探AI之got-ocr2.0大模型本地部署与遇到的各种坑处理
一.环境搭建 1.安装cuda,本人使用的是12.1版本,下载地址:https://developer.nvidia.com/cuda-12-1-1-download-archive 2.安装cond ...
- PHP实现csv导出(多种方法对比及原理解析)
前言 导出文件时,如果不需要任何复杂的Excel功能,请使用CSV 工作中最初遇到导出Excel的需求,都是使用的PHPExcel,它的功能非常强大,可以覆盖到绝大多数的定制化导出需求.也就一直用着了 ...
- C# 利用epplus导出excel,自动求和
/// <summary> /// 生成xlsx /// </summary> /// <param name="dvLine">数据视图< ...
- 增强 vw/rem 移动端适配,适配宽屏、桌面端、三折屏
vw 和 rem 是两个神奇的 CSS 长度单位,认识它们之前,我一度认为招聘广告上的"像素级还原"是一种超能力,我想具备这种能力的人,一定专业过硬.有一双高分辨率的深邃大眼睛. ...
- Manjaro/Arch用怎么安装天翼云电脑(Ctyun-cloud-desk)?感谢信创,感谢国家
最近微信出了linux版,用vmware装linux不过瘾,把一台闲置的笔记本装上了Manjaro KDE Plasma,经过一段时间的发展,Linux桌面可用性大大提高. Kindle->Ki ...
- atcoder ABC237-E Skiing
atcoder ABC237-E Skiing 传送门 这题把一个点到另外一个点的开心值变为这条边的权值,就可以化为求最大路.因为有负边权,所以要用\(SPFA\),但\(SPFA\)这玄学的时间复杂 ...
- The 2024 ICPC Asia East Continent Online Contest (I) G
Link: The Median of the Median of the Median 考虑二分答案,对中位数进行二分,每次去判断是否比中位数大即可. 我们钦定了一个中位数 \(x\),对于 \(\ ...