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

news/2024/12/22 11:26:18/

目录

1、类之间关系

1.1、关联

1.1.1、关联的多重性

1.1.2、三元关联

1.1.3、一元关联

1.1.4、关联类

2、组合与聚合层次

2.1、组合

2.2、聚合

3、泛化/特化层次

4、约束

UML-toc" style="margin-left:0px;">5、静态建模UML

5.1、问题域的静态建模

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

UML%E6%9E%84%E9%80%A0%E5%9E%8B%E5%AF%B9%E7%B1%BB%E5%88%86%E7%B1%BB-toc" style="margin-left:0px;">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)关联链接的约束

UML">5、静态建模UML

5.1、问题域的静态建模

1)物理类

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

2)实体类

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

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

1)系统上下文图

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

2)软件系统上下文图

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

UML%E6%9E%84%E9%80%A0%E5%9E%8B%E5%AF%B9%E7%B1%BB%E5%88%86%E7%B1%BB">7、使用UML构造型对类分类

软件系统:

1)实体类 《实体entity》

2)边界类  《边界boundary》

外部环境:

外部类

1)《外部系统 external system》

2)《外部用户 external user》

8、外部类建模

1)外部设备

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

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

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

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

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


http://www.ppmy.cn/news/1503587.html

相关文章

PostgreSQL——查询扫描介绍

顺序扫描 概述 顺序扫描(Sequential Scan)是PostgreSQL中一种基本的数据检索方式,它通过按顺序读取表中的所有页面来查找满足查询条件的记录。这种方式不依赖于索引,因此在某些情况下可能是唯一的选择,尤其是当表没有…

轻松入门Linux—CentOS,直接拿捏 —/— <5>

一、Linux常用工具 1、tar打包命令详解 当 tar 命令用于打包操作时,该命令的基本格式为: tar [选项] 源文件或目录 常用选项: 1.1 打包文件 例如,我有几个文件,将他们打包成一个文件,以tar结尾的后缀名 …

C++ 列式内存布局数据存储格式 Arrow

Apache Arrow 优点 : 高性能数据处理: Arrow 使用列式内存布局,这特别适合于数据分析和查询操作,因为它允许对数据进行高效批量处理,减少CPU缓存未命中,从而提升处理速度。 零拷贝数据共享: Arrow …

Java中的BIO,NIO与操作系统IO模型的区分

Java中的IO模型 Java中的BIO,NIO,AIO概念可以是针对输入输出流,文件,和网络编程等其他IO操作的。 但是主要还是在网络编程通信过程中比较重要,因为很多情况网络编程需要它们来提供更好的性能。 所以本篇文章偏向于网络…

java~反射

反射 使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码) 原理图 加载完类后,在堆中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对…

Kotlin中的Any 类详解

Kotlin 中的 ANY 类详解 在 Kotlin 中,Any 类是 Kotlin 类继承层次结构的根。每个 Kotlin 类都继承自 Any。它等同于 Java 中的 Object,但有一些关键差异和额外的功能。 Kotlin 中 Any 的关键点 继承: Kotlin 中的每个类都直接或间接地继承自…

嵌入式C++、ROS 、OpenCV、SLAM 算法和路径规划算法:自主导航的移动机器人流程设计(代码示例)

在当今科技迅速发展的背景下,嵌入式自主移动机器人以其广泛的应用前景和技术挑战吸引了越来越多的研究者和开发者。本文将详细介绍一个嵌入式自主移动机器人项目,涵盖其硬件与软件系统设计、代码实现及项目总结,并提供相关参考文献。 项目概…

Android 10.0 Launcher 启动流程

在前面SystemUI启动流程中说到,在SystemServer中会去启动各种系统服务,这里的launcher也是启动的其中一个服务ActivityManagerService去启动的。在android10之前,系统四大组件的启动都是在ActivityManagerService中,在android10中…