【软件建模与设计】-07-静态建模

目录

1、类之间关系

1.1、关联

1.1.1、关联的多重性

1.1.2、三元关联

1.1.3、一元关联

1.1.4、关联类

2、组合与聚合层次

2.1、组合

2.2、聚合

3、泛化/特化层次

4、约束

5、静态建模和UML

5.1、问题域的静态建模

6、系统上下文的静态建模

7、使用UML构造型对类分类

8、外部类建模


静态建模展示了问题的静态结构图,定义了系统中的类、类的属性、操作,以及类之间的关系,采用UML类图表示。

1、类之间关系

1.1、关联

关联定义了两个或多个类之间的关系

链接是类实例(对象)之间的连接,表示类之间的关联的实例。

组成结构:连线、名称、方向、多重性、约束

1.1.1、关联的多重性

1)一对一

2)一对多:用1..* 表示

3)规定数值关联:如一辆汽车有2,4个门组成。

4)可选关联:一个人可以拥有0个或任意多个的银行卡,用0..* 表示

5)多对多:课程与学生,双向箭头,用 *  1..*  表示

1.1.2、三元关联

在类之间的三个方向的关联。比如买方、卖方、中介Agent

1.1.3、一元关联

自身关联,是一个类的一个对象与同一个类的另一个对象之间的关联。

如 一个人是另一个人的孩子(is child of)

1.1.4、关联类

对两个或多个类之间的关联进行建模的类

关联类的属性属于该关联的属性,不属于任何原始的类

如项目、雇员提取关联类(小时数类),存在属性工作小时数

这个属性既不属于项目,也不属于雇员

2、组合与聚合层次

部分和整体间的关系是一个【 Is part of

2.1、组合

比聚合更强的关系,整体与部分存在相同的生命周期

部分对象的创建、存在和消亡都和整体是一起的。

部分对象只能属于一个整体

如一个ATM机有一个键盘显示器、读卡器、吐钞机、凭条打印机。

2.2、聚合

在一个聚合中,部分实例能添加到聚合的整体,也能从聚合整体中移除。

概念类建模,而非物理类

3、泛化/特化层次

共同的属性被抽象到一个泛化类,称作超类。  

子类与超类之间存在【Is a】 的关系

泛化的表示形式:子类指向父类的空心箭头

如:

“储蓄账户” Is a “账户”

“活期账户” Is a “账户”

4、约束

 规定了条件为真的限制

表示形式:{  "余额" >= 0  }

1)对象属性约束

2)关联链接的约束

5、静态建模和UML

5.1、问题域的静态建模

1)物理类

具有物理特性,包括物理设备、用户、外部系统、计时器

2)实体类

数据密集型,持久化存储的对象

6、系统上下文的静态建模

1)系统上下文图

展示作为黑盒对待的系统(硬件和软件)与外部环境间边界的图

2)软件系统上下文图

展示作为黑盒对待的软件系统与外部环境(包含硬件)间的边界的图

7、使用UML构造型对类分类

软件系统:

1)实体类 《实体entity》

2)边界类  《边界boundary》

外部环境:

外部类

1)《外部系统 external system》

2)《外部用户 external user》

8、外部类建模

1)外部设备

  • 外部输入设备:仅提供输入,如传感器
  • 外部输出设备:仅提供输出,如执行器
  • 外部输入/输出设备:如ATM读卡器

键盘、鼠标等并不是感兴趣的内容,因此无需建模

2)从外部类开发软件系统上下文类图

3)参与者与外部类的交互

4)从参与者开发软件系统上下文类图

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

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

相关文章

【Python学习手册(第四版)】学习笔记12-if语句(and、or、三元表达式)详解

个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文较简单,对if语句的格式、示例、多路做了示例,以及真值测试(and、or等)介绍,最后介绍了三三元表达式…

8G内存的Mac够用吗 ?苹果电脑内存满了怎么清理?可以有效地管理和优化你的Mac电脑内存,确保设备运行流畅

嘿,朋友们,让咱们聊聊怎么让我们的Mac小伙伴时刻保持巅峰状态吧!想象一下,每一次点击、每一次滑动,都如同初见时那般丝滑顺畅,是不是超级心动?为了这份持久的畅快体验,我强烈推荐大家…

注册中心--Eureka

🎥 个人主页:Dikz12🔥个人专栏:Spring Cloud实战📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 目录 1.项目问题 2.解决URL问题 2.1解决思路 2.2注册中心 2.3 CAP理…

2024.8.1 作业

使用两个线程完成两个文件的拷贝,分支线程1拷贝前一半,分支线程2拷贝后一半,主线程回收两个分支线程的资源 代码: /*******************************************/ 文件名:threadwork.c /************************…

06.java集合

1.集合框架体系 集合主要分为两组:单列集合(collection),双列集合(map) 单列集合(collection接口) 双列集合(map接口) 2.Collection接口 (1).常见的方法 */ public class arraylist_ {public static void main(String[] args) {//常用方法&#xff0…

Day81 代码随想录打卡|贪心算法篇---跳跃游戏 II

题目&#xff08;leecode T45&#xff09;&#xff1a;给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j…

【Linux】(26) 详解磁盘与文件系统:从物理结构到inode机制

目录 1.认识磁盘、 1.1 理论 1.2 磁盘的物理结构 CHS 寻址 1.3 磁盘的逻辑抽象结构 2. inode 结构 1.Boot Block 启动块 2.Super Block&#xff08;超级块&#xff09; 3.Group Descriptor Block&#xff08;块组描述符&#xff09; 4.Data Blocks (数据块) 5.Inode…

【C++】巧用缺省参数与函数重载:提升编程效率的秘密武器

C语法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;命名空间 本章将分享缺省参数与函数重载相关知识&#xff0c;为了更加深入学习C打下了坚实的基础。本章重点在于缺省参数与函数重载使用前提与注意事项 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1…

[C++]多态与虚函数

一、多态的概念 顾名思义&#xff0c;多态的意思就是一个事物有多种形态&#xff0c;在完成某个行为的时候&#xff0c;当不同的对象去完成时会产生不同的状态。在面向对象方法中一般是这样表示多态的&#xff1a;向不同的对象发送同一条消息&#xff0c;不同的对象在接收时会产…

jetbrain插件市场无法下载插件/idea插件install无效

最近把电脑重装了一次系统&#xff0c;发现idea插件市场可以搜到插件&#xff0c;但是不显示overview之类的信息&#xff0c;点install也没反应。 于是打算直接到插件市场的官网plugins.jetbrains.com下载插件安装。 结果发现同样可以搜索到插件&#xff0c;但是无法下载。 在…

中国工商银行长春分行开展“工驿幸福 健康财富”长辈客群康养活动

中国工商银行长春分行作为国有大行&#xff0c;持续完善有温度、专业化、安全稳健的养老场景服务&#xff0c;以工行驿站为依托、以长辈客群养老需求为中心&#xff0c;积极对接社区构建敬老、康养的“金融泛金融”工行驿站服务生态&#xff0c;进一步提升长辈客群的到店体验。…

第十九天培训笔记

上午 1 、构建 vue 发行版本 [rootserver eleme_web]# nohup npm run serve& // 运行 vue 项目 [rootserver eleme_web]# mkdir /eleme [rootserver eleme_web]# cp -r /root/eleme_web/dist/* /eleme/ // 将项目整体 移动到 /eleme 目录下 [rootserver eleme_web]# …

Opencv threshold函数、adaptiveThreshold函数详解和示例

1.threshold函数 double cv::threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type ) src&#xff1a;待二值化的图像&#xff0c;图像只能是 CV_8U 和 CV_32F 两种数据类型。对于图像通道数目的要求与选择的二值化方法相关。dst&#xff1a;…

TypeScript 定义不同的类型(详细示例)

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

Vulnhub - JANGOW: 1.0.1 靶标实战

靶场地址&#xff1a;https://www.vulnhub.com/entry/jangow-101,754/ 靶场IP&#xff1a;192.168.56.118 信息收集 使用御剑对目标进行扫描 该靶标开启了21、80两个端口&#xff0c;21端口运行服务为ftp&#xff0c;其版本为 vsftpd 3.0.3 &#xff0c;80端口运行服务为Apa…

vscode+platformio开发小技巧

使用vscodeplatformio开发&#xff0c;具体安装配置文章很多&#xff0c;这里分享一些方便使用的小技巧&#xff0c;让使用体验在不增加学习成本的情况下更加丝滑。 1、配置依赖库 在使用vscode开发前&#xff0c;arduino环境遗留了一些库文件&#xff0c;这些第三方库可以通…

arasan CAN2.0 CAN FD user guide详解

1. 引言 1.1 概览 Arasan 的 Controller Area Network - Flexible Data (CAN-FD) 控制器 IP 实现了 CAN 2.0A、CAN 2.0B 以及高性能 CAN-FD (Flexible Data Rate) 协议。它符合非 ISO CAN-FD 由 Bosch 提出的标准以及 ISO11898-1:2015 DIS 标准。它可以集成到需要 CAN 连接性…

2024年有哪些开放式耳机值得入手?精选五大高分品牌

近几年兴起的开放式蓝牙耳机&#xff0c;具有佩戴舒适稳固、不影响使用者判断外界环境等优点&#xff0c;十分适合在户外环境下使用&#xff0c;因此受到了众多健身人士的喜爱。那么该如何挑选到一款适合自己的开放式耳机呢&#xff1f;2024年有哪些开放式耳机值得入手&#xf…

SpringCloud Alibaba 微服务(四):Sentinel

目录 前言 一、什么是Sentinel&#xff1f; Sentinel 的主要特性 Sentinel 的开源生态 二、Sentinel的核心功能 三、Sentinel 的主要优势与特性 1、丰富的流控规则 2、完善的熔断降级机制 3、实时监控和控制台 4、多数据源支持 5、扩展性强 四、Sentinel 与 Hystrix …

Axure Web端元件库:构建高效互动网页的基石

在快速迭代的互联网时代&#xff0c;Web设计与开发不仅追求视觉上的美感&#xff0c;更注重用户体验的流畅与功能的强大。Axure RP&#xff0c;作为一款专业的原型设计工具&#xff0c;凭借其强大的交互设计能力和丰富的元件库&#xff0c;成为了众多UI/UX设计师、产品经理及前…