【软件工程】一篇入门UML建模图(类图)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

1. 前言

2. 什么是UML

3. 为什么要用UML

4.  UML图有哪些​编辑

4.1 类图

4.1.1 类图层次

4.1.2 对象层

4.1.3 特征层  

4.1.4 关系层

泛化(Generalization)

实现(Realization)

关联(Association)

聚合(Aggregation)

组合(Composition)

依赖(Dependency)

总结  


1. 前言

来理一理我们前面走过的【软件工程】学习之旅,来帮助大家更好的搞清楚软件工程学习思路。

  1. 软件工程是什么

    • 首先定义软件工程的概念,解释其重要性和目标。
  2. 要通过系统化(系统定界方法)、工程化方法(引入软件开发过程)来解决软件工程问题

    • 说明软件工程面临的挑战,并引入系统化和工程化方法作为解决方案。
    • 因为软件工程的定义以及其目标和重要性,要求我们必须要引入工程化(分步骤、有序)、系统化(系统定界法///活动、实体、边界三要素)方法来处理软件工程问题
  3. 软件开发过程模型

    • 在工程化的要求下,有序、有步骤来进行软件工程开发。介绍软件开发过程模型,解释其在软件工程中的角色。
  4. 过程模型建模方法(介绍了两种)

    • 详细描述两种建模方法来建立软件开发过程模型,如何应用于软件开发过程模型的构建。(静态建模法动态建模法
  5. 计划和管理项目包括:​​​​​​

    • 了解软件开发过程后,就需要在这个工程化思想指导下(按照软件开发过程)来计划和管理软件开发项目:

    • 计划项目:项目活动图、项目工作时间、项目工作量
      • 解释如何使用项目活动图和时间、工作量规划来有效计划项目。
    • 管理项目:风险管理、人员管理
      • 讨论项目管理的关键要素,包括如何管理风险和团队人员。
  6. 需求与更多建模方法

    • 这一部分开始详细讲解前面提到的软件开发过程的各个部分,第一部分就是需求分析
    • 接续前面提到的过程模型建模方法(静态动态建模),详细介绍了ER图、UML图等静态建模方法

理清前面软件工程学习的整个思路后,我们就来进入今天的学习:UML图 

2. 什么是UML

UML是Unified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。

统一建模语言:一个语言,打尽所有建模方法

3. 为什么要用UML

通过使用UML使得在软件开发之前, 对整个软件设计有更好的可读性,可理解性,从而降低开发风险。同时,也能方便各个开发人员之间的交流。

通过UML对软件过程进行建模,从而让软件开发过程可以直观的为大家所交流、理解

4.  UML图有哪些

UML包括静态图(结构行为图)、动态图( 动态行为图)

4.1 类图

4.1.1 类图层次

类图分为三个层次:

1.对象层 (确定有哪些类)

2.特征层 (确定每个类的具体属性和操作)

3.关系层(确定这些类之间的关系)

类图的三个层次表示: 类图所应该表现信息的多少(层次越高表示信息越多)

4.1.2 对象层

类的类型有三个:

1.边界类(系统边界):用户界面、系统接口、硬件接口

2.实体类(系统信息):系统存储的信息及相关行为

3.控制类(协调用例行为):封装用例所持有的控制行为

边界类是一种用于对系统外部环境与其内部运作之间的交互进行建模的类。

控制类用于对一个或几个用例所特有的控制行为进行建模。

实体类是用于对必须存储的信息和相关行为建模的类。

边界类,控制类,实体类很像MVC中的V层,C层,M层!!!

view层(用来和外界用户交互)、C层(方法层,交互的方法)、M层(数据库的操作对象以及表实体,数据持久层)  

   一个小例子: 

4.1.3 特征层  

就是这个系统中的类的属性和操作

类属性:所有对象的共同特征,一个类的所有对象实例,属性值相同,类属性名称有下划线。(static)

类操作: 类操作是用来操纵类属性的操作,带下划线。  

4.1.4 关系层

类图的关系层:类之间的关系(泛化、实现、关联、聚合、组合、依赖):

泛化(Generalization)

  • 【泛化关系】是一种继承关系,表示子类继承父类的所有特征和行为。
  • 【箭头指向】带三角箭头的实线,箭头指向父类。  

实现(Realization)

  • 【实现关系】是一种类与接口的关系,表示类是接口所有特征和行为的实现。
  • 【箭头指向】带三角箭头的虚线,箭头指向接口。  

  

关联(Association)

  • 【关联关系】是一种拥有关系,它使得一个类知道另一个类的属性和方法。
  • 【代码体现】成员变量
  • 【箭头指向】带普通箭头的实线,指向被拥有者。双向的关联可以有两个箭头,或者没有箭头。单向的关联有一个箭头。

聚合(Aggregation)

  • 【聚合关系】是一种整体与部分的关系。且部分可以离开整体而单独存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
  • 【代码体现】成员变量
  • 【箭头指向】带空心菱形的实线,空心菱形指向整体。  

组合(Composition)

  • 【组合关系】是一种整体与部分的关系。但部分不能离开整体而单独存在,组合关系是关联关系的一种,是比聚合关系还要强的关系。
  • 【代码体现】成员变量
  • 【箭头指向】带实心菱形和普通箭头的实线,实心菱形指向整体。

依赖(Dependency)

  • 【依赖关系】是一种使用关系,即一个类的实现需要另一个类的协助。
  • 【箭头指向】带普通箭头的虚线,普通箭头指向被使用者。  

一张总图:   

5. 总结  

如果觉得对你有帮助,友友们可以点个赞,收个藏呀~

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

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

相关文章

AWTK-WIDGET-WEB-VIEW 实现笔记 (3) - MacOS

MacOS 上实现 AWTK-WIDGET-WEB-VIEW 有点麻烦,主要原因是没有一个简单的办法将一个 WebView 嵌入到一个窗口中。所以,我们只能通过创建一个独立的窗口来实现。 1. 创建窗口 我对 Object-C 不熟悉,也不熟悉 Cocoa 框架,在 ChatGPT…

QT仿QQ聊天项目,第三节,实现聊天界面

一,界面控件示意图 界面主要由按钮QPushButton,标签QLabel,列表QListWidget 要注意的是QListWidget既是实现好友列表的控件,也是实现聊天气泡的控件 二,控件样式 QPushButton#btn_name {border:none;}QPushButton#btn_close {border:1px;bac…

微信小程序自定义顶部导航栏(适配各种机型)

效果图 1.pages.js,需要自定义导航栏的页面设置"navigationStyle": "custom" 2.App.vue,获取设备高度及胶囊位置 onLaunch: function () {// 系统信息const systemInfo uni.getSystemInfoSync()// 胶囊按钮位置信息const menuButtonInfo uni.…

Android Studio开发学习(五)———LinearLayout(线性布局)

一、布局 认识了解一下Android中的布局,分别是: LinearLayout(线性布局),RelativeLayout(相对布局),TableLayout(表格布局), FrameLayout(帧布局),AbsoluteLayout(绝对布局),GridLayout(网格布局) 等。 二、…

C++:哈希拓展-位图

目录 一.问题导入 二.什么是位图? 2.1如何确定目标数在哪个比特位? 2.2如何存放高低位 2.3位图模拟代码实现 2.3.1如何标记一个数 2.3.2如何重置标记 2.3.3如何检查一个数是否被标记 整体代码实现 标准库的Bitset 库中的bitset的缺陷 简单应用 一.问题导入 这道…

实用教程:如何无损修改MP4视频时长

如何在UltraEdit中搜索MP4文件中的“mvhd”关键字 引言 在视频编辑和分析领域,有时我们需要深入到视频文件的底层结构中去。UltraEdit(UE)和UEStudio作为强大的文本编辑器,允许我们以十六进制模式打开和搜索MP4文件。本文将指导…

Spring Boot 接口防重复提交解决方案

文章目录 前言使用Token机制实现步骤1.生成Token2.传递Token3.验证Token 使用Redis实现步骤1.引入Redis依赖2.生成Token3.传递Token4.验证Token 使用Spring AOP实现步骤1.定义注解2.创建切面3.使用注解 总结 前言 在Web开发中,防止用户重复提交表单是一个常见的需求…

Linux性能优化之火焰图简介

Linux 火焰图(Flame Graph)是一种可视化工具,用于分析程序性能问题,尤其是 CPU 使用情况。它展示了程序中函数调用的层次结构和各个调用栈占用的时间比例。 以下是详细介绍,包括火焰图的工作原理、生成步骤和实际使用中…

笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像

很简单的起因,我的东西最终需要跑在amd64上,但是因为mac的架构师arm64,所以直接构建好的代码是没办法跨平台运行的。直接在arm64上pull下来的docker镜像也都是arm64架构。 检查镜像架构: docker inspect 8135f475e221 | grep Arc…

【JavaWeb】JavaWeb入门之XML详解

目录 1.XML介绍 1.1.XML概述 1.1.1.什么是XML 1.1.2.XML的作用 1.1.3.XML与HTML的比较 1.1.4.XML和properties(属性文件)比较 1.1.5.W3C组织 1.2.XML语法概述 1.2.1.XML文档展示 1.2.2.XML文档的组成部分 1.3.XML文档声明 1.3.1.什么是XML文…

spring源码02-spring容器启动(容器初始化+bean实例化)源码解读【常见面试题】

文章目录 【README】【1】spring容器初始化及bean实例化步骤列表【2】spring容器初始化源码【2.1】容器初始化主要步骤总结:【2.2】容器初始化详细步骤源码分析 【3】bean实例化源码【3.1】bean实例化主要步骤总结(非常重要)【3.1.1】 bean生…

Python中的正则表达式教程

一、 正则表达式基础 1。1。概念介绍 正则表达式是用于处理字符串的强大工具,它并不是Python的一部分。 其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同。 它拥有自己独特的语法以及一个独立的处理引擎,在提供了正则表达式…

【Python库安装】Python环境安装景观模式分析常用库PyLandStats

【Python库安装】Python环境安装景观模式分析常用库PyLandStats PyLandStats 简介景观分割景观指标 PyLandStats 安装参考 PyLandStats 简介 PyLandStats 是一个用于景观模式分析的 Python 库。它允许用户计算景观格局的各种统计量和指标,广泛应用于生态学、地理信…

Visual Studio 2022 安装

下载链接 https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?skuCommunity&channelRelease&versionVS2022&sourceVSLandingPage&cid2030&passivefalse 安装 以c为例,列出需要勾选的项目,有3个&a…

Spark 共享变量:广播变量与累加器解析

Spark 的介绍与搭建:从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交:本地与集群模式全解析-CSDN博客 Spark on YARN:Spark集群模式…

Golang | Leetcode Golang题解之第565题数组嵌套

题目&#xff1a; 题解&#xff1a; func arrayNesting(nums []int) (ans int) {n : len(nums)for i : range nums {cnt : 0for nums[i] < n {i, nums[i] nums[i], ncnt}if cnt > ans {ans cnt}}return }

Git 搭建远程仓库、在 IDEA 工具中的配置和使用

Git的概念、安装、操作与分支管理和图形化界面TortoiseGit&#xff08;小乌龟 &#xff09;的安装与使用-CSDN博客 目录 一、远程仓库 1&#xff09;在github上创建仓库 2&#xff09;在gitee上创建项目 3&#xff09;如何将远程的项目clone 到本地 4&#xff09;公司自己…

无人机检测车辆——多目标检测

目录 YOLOv3&#xff08;You Only Look Once version 3&#xff09;简介 YOLOv3 的主要特点 YOLOv3 的结构 1. 特征提取网络&#xff08;Backbone&#xff09; 2. 检测头&#xff08;Head&#xff09; 3. 输出层 YOLOv3 损失函数 YOLOv3 的优势 YOLOv3 的应用 YOLOv3…

Java | Leetcode Java题解之第564题寻找最近的回文数

题目&#xff1a; 题解&#xff1a; class Solution {public String nearestPalindromic(String n) {long selfNumber Long.parseLong(n), ans -1;List<Long> candidates getCandidates(n);for (long candidate : candidates) {if (candidate ! selfNumber) {if (ans…

字节青训-小C的外卖超时判断、小C的排列询问

目录 一、小C的外卖超时判断 问题描述 测试样例 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、小C的排列询问 问题描述 测试样例 最终代码&#xff1a; 运行结果&#xff1a; ​编辑 一、小C的外卖超时判断…