【UML图】实践出真知

2024-08-26 02:32
文章标签 实践 uml 真知

本文主要是介绍【UML图】实践出真知,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        关于UML,视频、课本都看了一遍,总结也总了,博客也博了,提起UML的时候,自我感觉也能说上那么一两句,本以为画个图就能say goodbye了,结果就是图让我又把视频笔记找了找,课本翻了翻,博客瞅了又瞅。下面是我画图时候的一些问题和感受。

一、知识补充

  1、用例图中的关系:关联、泛化、包含、扩展

包含(include):使用包含用例来疯长一组跨越多个用例的相似动作(行为片                                断),以便多个基用例复用。基用例控制与包含用例的关系,以及被                        包含用例的事件流是否会插入到用例的事件流中。基用例可以依赖包                        含用例执行的结果,但是双方都不能访问对方的属性。简单来说,所                        谓包含是指当一个用例的实现需要以另一个用例的实现为前提时,这                        两个用例间的关系就是包含。

                       (由基本用例指向被包含用例)

扩展(extend):将基用例中一段相对独立并且可选的动作,用扩展用例加以封                                    装,再让它从基用例中声明的扩展点上进行扩展,从而使基用例                              行为更简练。简单说就是,扩展指的是当一个用例执行时出现某                             种特定条件时,激活另一个用例,这里的一定条件称为扩展点,                                 被激活的用例称为扩展用例。                           

                          (由扩展用例指向基础用例)

  2、泛化和继承

         好多人都说泛化即继承,查师哥师姐的博客也都是直接用继承代表继承,但是还是感觉泛化跟继承不一样,虽然继承和泛化都是表示子类可以使用父类的属性和方法,都是为了实现多态

泛化:泛化关系是类元的一般描述和具体描述之间的关系,具体描述建立在一般             描述的基础之上,并对其进行了扩展。具体描述完全拥有一般描述的特             性、成员和关系,并且包含补充的信息。

继承:继承是一种机制,通过该机制类的对象的描述从类及其祖先的声明部分聚            集起来。

       说白了就是,香蕉继承水果,水果泛化香蕉,泛化是从子到父的抽象过程,继承是从父到子的过程。

3、对象图和类图

          对象图是类的实例,几乎使用与类图完全相同的标识,区别在于对象图显示类的多个对象实例,而不是实际的类,对象图存在生命周期,所以对象图表示某一时间类的实例。


4、图和文档

     UML图和文档不是一一对应的,除了几个核心图,例如用例图,类图,其它图都是可以酌情在任何文档中出现的.

     需求分析阶段,主要是用例图来填充,是面向程序员、分析员和用户的;

     设计阶段是UML图的主要载体,即概要设计和详细设计说明书,用到类图、活动               图、状态图、顺序图等,面向分析人员和编程人员;

     实现阶段用到部署图和组件图。

     其他没有特殊要求,整图或者部分图,酌情处理。知道每个图是干什么的给谁看的,知道每个文档是干什么的给谁看的,一一对应就好。


二、小结

开始画图的时候,仅仅知道用例图很重要,类图很重要,包图很重要,时序图很重要,嗯,然后就开始画了。但是开画的时候,感觉满脑子的机房系统和UML理论,就是死活画不出来啊,于是乎,死的书,活得人,博客、笔记各种交流借鉴,貌似有那么点儿意思了,对错不说,师傅验了再说吧。光说不练假把式,像高中老师说的,有些知识你会了不一顶能说出来,能说出来不一定能做对题,做对题不一定能得高分。UML图,能说又会画才是硬道理。


这篇关于【UML图】实践出真知的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107291

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J