【UML用户指南】-05-对基本结构建模-类

在UML中,所有的事物都被建模为类。类是对词汇表中一些事物的抽象。类不是个体对象,而是描述一些对象的一个完整集合。

强调抽象的最重要的部分:名称、属性和操作

类 (class)是对一组具有相同属性、操作、关系和语义的对象的描述。在图形上,把类画成一个矩形。

1、名称(name)

名称 (name)是一个文字串。单独的名称叫做简单名 (simple name),

用类所在的包的名称作为前缀的类名叫做限定名 (qualified name)。

要求类名的第一个字母通常要大写

2、属性 (attribute)

属性 (attribute)是已命名的类的特性,它描述了该特性的实例可以取值的范围。类可以有任意数目的属性,也可以没有属性。属性描述了正被建模的事物的一些特性,这些特性为类的所有对象所共有。

属性与聚合的语义有关

属性可以有默认值,可以只读、或者本类的所有对象共享

3、操作(operation)

操作 (operation)是一个服务的实现,该服务可以由任何类的对象来请求以影响其行为。

类可以有任意数目的操作,也可以没有操作。

特征标记包含所有参数的名称、类型和默认值,如果是函数,还要包括返回类型

可以把操作标记为多态的、不变的或描述它的可见性

4、对属性和操作的组织

4.1、衍型

为了更好地组织属性和操作的长列表,可以利用衍型在每一组属性和操作之前加一个描述其种类的前缀

衍型又称构造型或者版型,用<<>>表示

4.2、职责 (responsibility)

是类的合约或责任。当创建一个类时,就声明了这个类的所有对象具有相同种类的状态和相同种类的行为。在较高的抽象层次上,这些相应的属性和操作正是要完成类的职责的特征

职责是一个已定义的衍型的例子

对类建模的一个好的起点是详述词汇表中的事物的职责。

职责是自由形式的文本。

要把这些职责转换成能很好地完成这些职责的一组属性和操作。
 

职责是一个已定义的衍型的例子

4.3、其他特征

  • 单个属性和操作的可见性;
  • 与特定语言相关的操作特征,例如多态的或静态的;
  • 甚至类的对象可能产生或操纵的异常事件。
  • 把类的实现与规约相分离【接口】
  • 设计类的实现时,需要将其内部结构建模为一组连接起来的部件。
  • 建立复杂的模型,主动类(进程和线程)、制品(物理软件构件)和节点(硬件)
  • 类之间的交互、协作【类图】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2024年5月备考新增】】 考前篇(25)《必备资料(8) - 论文串讲-成本管理》

过程定义输入工具技术输出实际应用规划 成本 管理确定如何估算 预算、管理、 监督和控制项 目成本1、项目章程2、项目管理计划.进度管理计划.风险管理计划3、事业环境因素4、组织过程资产1、专家判断2、数据分析.备选方案分析3、会议1、成本管理计划1、创建成本管理计划,为估算…

【transformers】pytorch基础

传送门&#xff1a;https://transformers.run/c2/2021-12-14-transformers-note-3/ pytorch基础知识 tensor &#xff1a; 张量。 需要知道的内容&#xff1a; 张量构建张量计算自动微分形状调整广播机制索引与切片升降维度 Tensor 张量&#xff1a;理解成高纬度的向量就完…

flink Transformation算子(更新中)

flink Transformation算子部分 Transformation算子 map 该方法是将一个DataStream调用map方法返回一个新的DataStream。本质是将该DataStream中对应的每一条数据依次迭代出来&#xff0c;应用map方法传入的计算逻辑&#xff0c;返回一个新的DataStream。原来的DataStream中对…

短视频毫无营养:四川京之华锦信息技术公司

短视频毫无营养&#xff1a;现象背后的深度剖析 在数字时代&#xff0c;短视频以其短小精悍、易于传播的特点迅速崛起&#xff0c;成为社交媒体上的热门内容。然而&#xff0c;随着短视频的泛滥&#xff0c;关于其内容质量参差不齐、缺乏营养价值的争议也日益加剧。四川京之华…

SELF-RAG: Learning to Retrieve, Generate, and Critique Through Self-reflection

更多文章&#xff0c;请关注微信公众号&#xff1a;NLP分享汇 原文链接&#xff1a;ICLR2024&#xff1a;能够自我反思的SELF-RAG 下面介绍的这篇论文是最近被ICLR 2024 accepted oral&#xff0c;作者来自University of Washington & Allen Institute for AI & IBM R…

leetcode:最近的请求次数

class RecentCounter { public:RecentCounter() {cou 0;}int ping(int t) {q.push(t);while(!q.empty()){auto Front q.front();if(t-Front>3000)q.pop();else break;}return q.size();} private:int cou;queue<int> q; }; 仅个人做法&#xff0c;非最优解

postgressql——事务提交会通过delayChkpt阻塞checkpoint(9)

事务提交会通过delayChkpt阻塞checkpoint Postgresql事务在事务提交时&#xff08;执行commit的最后阶段&#xff09;会通过加锁阻塞checkpoint的执行&#xff0c;尽管时间非常短&#xff0c;分析为什么需要这样做&#xff1a; 首先看提交堆栈 #1 0x0000000000539175 in Co…

VueRoute url参数

版本 4.x 获取query参数 使用$router.query&#xff0c;可以获取参数对应的json对象。 获取url参数 需要在路由配置中定义。使用$router.param获取。

Django表单革命:打造安全、高效、用户友好的Web应用

Django表单处理&#xff0c;听起来是不是有点枯燥&#xff1f;别急&#xff0c;阿佑将带你领略Django表单的艺术之美。我们将以轻松幽默的语言&#xff0c;一步步引导你从表单的创建到管理&#xff0c;再到验证和自定义&#xff0c;让你在不知不觉中掌握Django表单的精髓。文章…

stm32寄存器开发

在stm32开发中&#xff0c;利用寄存器和标准库一起使用会比较方便。 有些寄存器在使用前要先清零以GPIO控制器配置为例PA8 GPIOA->CRH & ~(15<<0);//清零 15的2进制是1111 相当于把1111从最右边开始左移了0位 作用是把GPIOA的CRH寄存器的最后4位置零 GPIOA-&…

支付宝支付(沙盒支付)

后端页面代码 Controller RequestMapping("/pay") public class PayController {private String orderId;Autowiredprivate OrdersService ordersService;Value("${appId}")private String appId;Value("${privateKey}")private String private…

奇安信 网神SecGate 3600防火墙 (相关问题整理)

本文所有问题&#xff0c;基于实际项目中出的问题&#xff0c;设备&#xff1a;网神SecGate 3600防火墙 会话记录 数据中心>会话>会话监控&#xff0c;终端发起SYN请求&#xff0c;就能看到记录&#xff0c;无需完全建立TCP连接 默认安全策略 防火墙的安全策略中&…

CAD二次开发(7)- 实现Ribbon选项卡,面板,功能按钮的添加

1. 创建工程 2. 需要引入的依赖 如图&#xff0c;去掉依赖复制到本地 3. 代码实现 RibbonTool.cs 实现添加Ribbon选项卡&#xff0c;添加面板&#xff0c;以及给面板添加下拉组合按钮。 using Autodesk.Windows; using System; using System.Collections.Generic; using S…

Ubuntu18.04安装pwntools报错解决方案

报错1&#xff1a;ModuleNotFoundError: No module named ‘setuptools_rust’ 报错信息显示ModuleNotFoundError: No module named setuptools_rust&#xff0c;如下图所示 解决方案&#xff1a;pip install setuptools_rust 报错2&#xff1a;pip版本低 解决方案&#xff…

天气数据集-Jena Climate dataset

天气数据集-Jena Climate dataset 1.数据集基本信息 Dataset Name: mpi_saale_2021b.csv Size: 26495 rows; 1 year (2021), 10 min 气象学、农业、环境科学 开源机构: Max Planck Institute for Biogeochemistry 2.数据特征 2.1 特征简介 数据共有31个特征&#xff0c;…

LabVIEW与欧陆温控表通讯的实现与应用:厂商软件与自主开发的优缺点

本文探讨了LabVIEW与欧陆温控表通讯的具体实现方法&#xff0c;并对比了使用厂商提供的软件与自行开发LabVIEW程序的优缺点。通过综合分析&#xff0c;帮助用户在实际应用中选择最适合的方案&#xff0c;实现高效、灵活的温控系统。 LabVIEW与欧陆温控表通讯的实现与应用&#…

Linux项目编程必备武器!

本文目录 一、更换源服务器二、下载man开发手册(一般都自带&#xff0c;没有的话使用下面方法下载) 一、更换源服务器 我们使用apt-get等下载命令下载的软件都是从源服务器上获取的&#xff0c;有些软件包在某个服务器上存在&#xff0c;而另一个服务器不存在。所以我们可以添加…

力扣 20. 有效的括号

给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的…

Typescript高级: 深入理解in与in keyof

概述 in 和 keyof 是两个非常重要的操作符&#xff0c;它们允许开发者对对象的键&#xff08;key&#xff09;进行更精细化的操作和约束in 关键词 in关键词则在TypeScript的类型上下文中有特定的用途&#xff0c;它用于映射类型和类型查询当与keyof一起使用时&#xff0c;in可…

派生类中调用基类的__init__()方法

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在派生类中定义__init__()方法时&#xff0c;不会自动调用基类的__init__()方法。例如&#xff0c;定义一个Fruit类&#xff0c;在__init__()方法中创…