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

news2024/11/23 22:47:26

目录

1、概述

2、引入

3、过程

4、常用建模技术

4.1、对简单协作建模

4.2、对逻辑数据库模式建模

4.3、正向工程


1、概述

类图是面向对象系统建模中最常见的图。

类图显示一组类、接口、协作以及它们之间的关系

类图用于对系统静态设计视图建模。其大多数涉及到对系统的词汇、协作或模式的建模。

类图是构件图和部署图的基础,只是它们分别包含构件和结点,而不是类

类图不仅对结构模型的可视化、详述和文档化很重要,而且对于通过正向工程与逆向工程构造可执行的系统也很重要。
 

2、引入

当建造房屋时,要从包括基本构造块(如墙、楼板、门、窗、天花板和托梁)的词汇开始。这些事物主要是结构性的(墙有高度、宽度和厚度),但也具有一些行为性(不同种类的墙支撑不同的负重,门能开关,对无支撑的楼板跨度有一些约束)。事实上,不能孤立地考虑结构特征和行为特征,而必须在建造房屋时考虑它们如何相互作用。建造房屋的过程中需要以所要求的独特和合意的方式装配这些事物,以满足所有的功能和非功能的需求。所创建的用来可视化房屋并向承包商详述细节的蓝图,实际上是对这些事物以及它们之间的关系的图形描述。构造软件也有许多与此相同的特点,

所不同的只是由于软件是“软”的,所以能够从草图定义自己的基本构造块。可以用UML的类图对这些构造块的静态方面和它们之间的关系进行可视化,并描述其构造细节

3、过程

类图主要支持系统的功能需求,即系统要提供给最终用户的服务。

3.1、对系统的词汇建模

哪些抽象是考虑中的系统的一部分

哪些抽象处于系统边界之外

用类图详述这些抽象和它们的职责。

3.2、对简单协作建模

协作是一些共同工作的类、接口和其他元素的群体,它们提供的一些合作行为大于所有这些

元素的行为之和。例如,在对分布式系统中的事务语义建模时,不能仅仅盯着一个单独的类

来推断要发生什么,而要由相互协作的一组类来实现这些语义。用类图对这组类以及它们之

间的关系进行可视化和详述。

3.3、对逻辑数据库模式建模

将模式看成数据库的概念设计的蓝图。在很多领域中,要在关系数据库或面向对象数据库中

存储持久信息。可以用类图对这些数据库的模式建模。
 

4、常用建模技术

4.1、对简单协作建模

例如,下图展示了一组取自一个自主机器人实现的类。该图关注使机器人沿着一条路径移

动的机制所涉及的类。

图中有一个抽象类(Motor),它有两个泛化的具体子类,分别是SteeringMotor和MainMotor。

这两个类都继承父类Motor的5个操作。而这两个类又被显示为另一个类Driver的部分组合

类PathAgent与Driver有一对一的关联,与CollisionSensor有一对多的关联。

虽然PathAgent被给定了系统职责,但此处没显示出它的任何属性和操作。

在这个系统中还包含更多的类,但图只关注那些被直接包含在移动机器人中的抽象。在

其他的图中会看到一些同样的类。例如,尽管此图中没有显示,但类 PathAgent 至少和另外

的两个类(Environment和GoalAgent)在更高层次机制上相互协作,用于管理机器人在特

定时刻可能有冲突的目标。类似地,尽管此图也没有显示,但类CollisionSensor和Driver

(以及它的部分)与另一个类(FaultAgent)在某种机制中协作,该机制负责持续地检查机

器人的硬件故障。通过在不同的图中关注每一个这样的协作,就从几个角度提供了可理解的

系统视图。


4.2、对逻辑数据库模式建模

下图显示了一组取自某学校的信息系统的类。本图所显示的这些类的细节足以构造一个物理数据库。

从图的左下部开始,有3个名为Student、Course和Instructor的类。

Student和Course之间有一个说明学生所听课程的关联。

此外,每个学生可以听的课程门数不限,听每门课程的学生人数也不限。显示了这5个类的属性。

注意,所有的属性都是简单类型的。

当对模式建模时,一般要用显式的关联而不是用属性对任何非简单类型的关系建模。

4.3、正向工程

通过到实现语言的映射而把模型转换为代码的过程。

由于用UML描述的模型在语义上比当前的任何面向对象编程语言都要丰富,所以正向工程将

导致一些信息丢失。

下图是一个简单的类图,它描述了一个职责模式链的例子。这个特殊的实例化包含3个类

:Client、EventHandler 和 GUIEventHandler。

Client 和 EventHandler 为抽象类,而GUIEventHandler 是具体类。

EventHandler 有这个模式(handleRequest)所期望的通常操作,但是在这个例子中增加了两个私有属性。

对类EventHandler进行正向工程将产生如下代码

public abstract class EventHandler {

        EventHandler successor;

        private Integer currentEventID;

        private String source;

        EventHandler() {}

        public void handleRequest() {}

}
 

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

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

相关文章

完整指南:远程管理 Linux 服务器的 Xshell6 和 Xftp6 使用方法(Xshell无法启动:要继续使用此程序........,的解决方法)

😀前言 在当今软件开发领域,远程管理 Linux 服务器已成为日常工作的重要组成部分。随着团队成员分布在不同的地理位置,远程登录工具的使用变得至关重要,它们为开发人员提供了访问和管理服务器的便捷方式。本文将介绍两款功能强大的…

深度学习框架-----Tensorflow2基础

一、基础概念 1、深度学习框架基础概念 深度学习框架的出现降低了入的槛。我们不在需要丛从复杂的神经网络和反向传播算法开始编代码,可以依据需要,使用已有的模型配置参数,而模型的参数自动训练得到。我们也可以在已有模型的基础上增加自定…

[word] word怎样转换成pdf #职场发展#经验分享#职场发展

word怎样转换成pdf word怎样转换成pdf?word格式是办公中常会用到的格式,word格式编辑好了要想转换成pdf格式再来传输的话需要怎么操作呢?小编这就给大家分享下操作方法,一起来学习下吧! 1、安装得力PDF转换器&#x…

vmware将物理机|虚拟机转化为vmware虚机

有时,我们需要从不同的云平台迁移虚拟机、上下云、或者需要将不再受支持的老旧的物理服务器转化为虚拟机,这时,我们可以用一款虚拟机转化工具:vmware vcenter converter standalone,我用的是6.6的版本,当然…

【Linux取经路】信号的发送与保存

文章目录 一、重新理解发送信号二、信号的保存、阻塞信号的概念三、信号集操作函数3.1 sigprocmask3.2 sigpending 四、阻塞信号代码验证五、结语 一、重新理解发送信号 进程通过位图来实现对普通信号(1-31号信号)的保存,该位图保存在进程的…

DSP28335模块配置模板系列——ADC配置模板

一、配置步骤 1.使能并配置高速时钟HSPCLK、ADC校验 EALLOW;SysCtrlRegs.PCLKCR0.bit.ADCENCLK 1; EDIS;EALLOW;SysCtrlRegs.HISPCP.all ADC_MODCLK; // HSPCLK SYSCLKOUT/(2*ADC_MODCLK)ADC_cal();EDIS; 这里ADC_MODCLK3,所以HSPCLK时钟为150/625Mhz 2.配…

C语言基础——数组(2)

ʕ • ᴥ • ʔ づ♡ど 🎉 欢迎点赞支持🎉 个人主页:励志不掉头发的内向程序员; 专栏主页:C语言基础; 文章目录 前言 一、二维数组的创建 1.1 二维数组的概念 1.2二维数组的创建 二、二维数组…

javascript导入excel文件

导入文件用到一个 xlsx.core.js 的包。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><script type"tex…

晶振时钟外设总线

如果芯片只有一个时钟信号脚怎么接晶振&#xff1f; 答&#xff1a;如果芯片只有一个时钟信号引脚&#xff0c;说明这是一个时钟输入脚&#xff08;OSC IN&#xff09;&#xff0c;为有源晶振&#xff08;晶体振荡器&#xff09;应用方案&#xff0c;请选择有源晶振并连接其时…

AMD显卡和英伟达显卡哪个好?

显卡是计算机中负责处理图形和视频输出的硬件设备&#xff0c;主要分为两种类型&#xff1a;AMD的A卡和NVIDIA的N卡。那么AMD显卡和英伟达显卡哪个好&#xff1f;怎么选&#xff1f; 答&#xff1a;不能一概而论地说哪个好&#xff0c;因为它们各有优势&#xff0c;选择应基于…

echaerts图例自动滚动并隐藏翻页按钮

效果图 代码 legend: {itemHeight: 14,itemWidth: 14,height: "300", //决定显示多少个// 通过 CSS 完全隐藏翻页按钮pageButtonItemGap: 0,pageButtonPosition: end,pageIconColor: transparent, // 隐藏翻页按钮pageIconInactiveColor: transparent, // 隐藏翻页按…

2024050501-重学 Java 设计模式《实战命令模式》

重学 Java 设计模式&#xff1a;实战命令模式「模拟高档餐厅八大菜系&#xff0c;小二点单厨师烹饪场景」 一、前言 持之以恒的重要性 初学编程往往都很懵&#xff0c;几乎在学习的过程中会遇到各种各样的问题&#xff0c;哪怕别人那运行好好的代码&#xff0c;但你照着写完…

【计算机网络基础知识】

首先举一个生活化的例子&#xff0c;当你和朋友打电话时&#xff0c;你可能会使用三次握手和四次挥手的过程进行类比&#xff1a; 三次握手&#xff08;Three-Way Handshake&#xff09;&#xff1a; 你打电话给朋友&#xff1a;你首先拨打你朋友的电话号码并等待他接听。这就…

LeetCode刷题之HOT100之组合总和

2024/6/3 周一&#xff0c;工作日的第一天。昨晚梦到被导师说去实验室不积极哈哈哈&#xff0c;风扇开到二级&#xff0c;早上被吹醒。买的书马上快要到了。上午刚来准备刷题&#xff0c;结果去搞了一下数据库sql&#xff0c;做的差不多了&#xff0c;还差点格式转换就差不多出…

【WP】猿人学_13_入门级cookie

https://match.yuanrenxue.cn/match/13 抓包分析 抓包分析发现加密参数是cookie中有一个yuanrenxue_cookie 当cookie过期的时候&#xff0c;就会重新给match/13发包&#xff0c;这个包返回一段js代码&#xff0c;应该是生成cookie的 <script>document.cookie(y)(u)(a…

【Text2SQL】评估 LLM 的 Text2SQL 能力

论文&#xff1a;Evaluating the Text-to-SQL Capabilities of Large Language Models ⭐⭐⭐⭐ arXiv:2204.00498 一、论文速读 本论文尝试了多种 prompt 结构&#xff0c;并且评估了他们在 Codex 和 GPT-3 上的表现。下面介绍这些 prompt 结构&#xff1a; 二、不同的 prom…

VsQt单元测试目录的管理方式

正常项目的文件管理方式 正常项目的目录&#xff0c;是由文件系统中实际的文件夹进行分类管理的。 但是如果单元测试用实际文件夹管理的话&#xff0c;会出现问题&#xff0c;就是被测类太多了&#xff0c;用文件系统管理的话&#xff0c;不太方面查看&#xff0c;如下图所示。…

AI数字人本地算力直播怎么做?青否数字人教您快速搭建直播间!

一、青否数字人直播分为两种&#xff0c;一种是云端渲染另外一种就是本地渲染 使用本地算力来进行直播间互动&#xff0c;本地算力能够使商家拥有更低成本运营 在独立部署数字人SaaS系统后&#xff0c;其他的数字人厂商是【云服务器】【算力服务器】相结合的方式&#xff0c;以…

31|HTTP3:甩掉TCP、TLS 的包袱,构建高效网络

前面两篇文章我们分析了HTTP/1和HTTP/2&#xff0c;在HTTP/2出现之前&#xff0c;开发者需要采取很多变通的方式来解决HTTP/1所存在的问题&#xff0c;不过HTTP/2在2018年就开始得到了大规模的应用&#xff0c;HTTP/1中存在的一大堆缺陷都得到了解决。 HTTP/2的一个核心特性是…

App Inventor 2 复制屏幕功能,界面设计更便捷,避免误删组件

“复制屏幕”功能全新上线&#xff0c;中文网独有&#xff08;MIT没有此功能&#xff09;&#xff0c;可以复制屏幕中的普通组件、图片、附件、拓展、代码块。更多升级详情可查看发布日志。 下面演示一下屏幕的复制效果&#xff1a; 1、Screen1屏幕上有若干组件、及一个SQLit…