【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

相关文章

MyBatis分页插件PageHelper深度解析与实践指南

《MyBatis分页插件PageHelper深度解析与实践指南》在数据库操作中,分页查询是最常见的需求之一,传统的分页方式通常有两种内存分页和SQL分页,MyBatis作为优秀的ORM框架,本身并未提... 目录1. 为什么需要分页插件?2. PageHelper简介3. PageHelper集成与配置3.

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot 常用注解详解与使用最佳实践建议

《SpringBoot常用注解详解与使用最佳实践建议》:本文主要介绍SpringBoot常用注解详解与使用最佳实践建议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、核心启动注解1. @SpringBootApplication2. @EnableAutoConfi

Redis实现分布式锁全解析之从原理到实践过程

《Redis实现分布式锁全解析之从原理到实践过程》:本文主要介绍Redis实现分布式锁全解析之从原理到实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景介绍二、解决方案(一)使用 SETNX 命令(二)设置锁的过期时间(三)解决锁的误删问题(四)Re

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行