当前位置: 首页 > article >正文

【软件工程】一篇入门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.kler.cn/a/396949.html

相关文章:

  • 云计算复习文档
  • 恒流数显驱动数显LED驱动芯片VK16D32
  • 4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
  • MFC程序崩溃时生成dmp文件
  • 二叉树遍历的非递归实现和复杂度分析
  • H.265流媒体播放器EasyPlayer.js H.264/H.265播放器chrome无法访问更私有的地址是什么原因
  • C++11标准模板(STL)- 常用数学函数 - 宏常量 - 求值得到float类型的安静NaN(NAN)
  • 硬件---4电感---基本概念与特性
  • Aria2-CVE-2023-39141漏洞分析
  • 使用 Caffeine 缓存并在业务方法上通过注解实现每3到5秒更新缓存
  • Python学习笔记(2)正则表达式
  • 《Java核心技术 卷I》用户界面AWT事件继承层次
  • 【网络】什么是交换机?switch
  • IDC机房服务器托管的费用组成
  • 【MyBatis操作数据库】XML配置
  • 自然语言处理(NLP)的开源生态系统:Hugging Face 原理和使用
  • [241115] Debian 12.8 发布 | Mistral AI 推出批量 API,成本降低 50%
  • “嵌入”在大语言模型中是解决把句子转换成向量表示的技术
  • Servlet⽣生命周期超级细(笔记)
  • 区间和 离散化 模板题
  • CentOS 升级 gcc 版本
  • 项目风险管理的3大要素
  • 如何基于Tesseract实现图片的文本识别
  • Redis 持久化机制 RDB 和 AOF 区别
  • 图像重建之深度学习重建
  • 安全见闻5