热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

002.UML图

1.前言软件开发里,设计先行的理念非常重要,我自己也很菜,这也是听大佬们说的,实测确实可以提高效率,所以在正

1.前言

软件开发里,设计先行的理念非常重要,我自己也很菜,这也是听大佬们说的,实测确实可以提高效率,所以在正式进入Java之前,先学学UML图,至少把类图画清楚。本文肯定不可能详细,不懂的位置请自行百度。


2.概述

UML目前是2.0版本,总共13种图,其中包图也许可以被忽略,另外三个新增模型是啥玩意我也不知道,结合实际开发,类图和时序图相对来说比较重要。结合书本,后期会补画7个图。

13种图分为静态图动态图。

静态图包括:类图,对象图,用例图,组件图,部署图,包图,复合结构图

动态图包括:时序图(顺序图),通信图(协作图),状态机图,活动图,定时图,交互概观图

工具是Enterprise Architect,自行百度破解版和教程(比较新一点版本的教程很少)


3.画图

--------------------------------------------静态图---------------------------------------------


3.1 用例图

用例图描述系统(完整程序)的各个功能,每个用例代表一个功能模块。主要目的就是帮助开发人员以一种可视化的方式理解系统的需求功能,对具体实现不做任何说明。

组成:用例,角色,角色-用例关系,用例-用例关系。

图:


3.2 类图

类图表示系统中应该包含哪些实体,各实体之间的关系。其中关系主要是三种:关联(组合,聚合),泛化(继承),依赖。

组成:实体(属性,方法),实体-实体关系

图:


3.3 组件图

组件图提供系统的物理视图,目的是显示系统中软件对其他软件组件(如各种库函数)的依赖关系。

组成:组件,接口,端口。组件图中无法描述形状的就是组件,实心圆就是接口,边界上的矩形就是端口(Port)


3.4 部署图

部署图用于描述软件系统如何部署到硬件环境中,用途是显示软件系统不同的组件在何处物理运行,以及它们之间的通信。

组成:组件图组成部分,节点。三维立方体表示节点。

节点是各种计算机资源的通用名称,主要包括处理器(具有计算能力,能够执行程序)和设备(不具有计算能力)两类。

--------------------------------------------动态图---------------------------------------------


3.5 时序图

时序图表示不同对象之间的调用关系,同时还可以显示对不用对象的不同调用。描述了对象之间的交互,重点在于描述“消息”及其时间顺序。

垂直维度和水平维度

总结:绘制时序图主要是帮助开发者对某个用例的内部执行清晰化,当需要考察某个用例内部对象行为时,使用时序图。时序图擅长表现出对象之间的协作顺序,不擅长表现行为的精准定义。(摘自《疯狂JAVA》)(具体看图,暂无)


3.6 活动图

用于描述用例内部的活动或者方法的流程,如果去掉活动图中的并行活动描述(并发),它就变成流程图。

活动图和状态机图都被称为演化图,演化图有5个要素(重要组成部分):


  1. 状态 2.事件 3.动作 4.活动 5.条件

对于引起状态改变的事件主要有两类:内部事件,调用;外部事件,键鼠操作。

圆角矩形表示活动,带箭头实线表示事件,菱形框表示条件

总结:以活动为中心,只有一个开始活动,可以有多个结束活动。具体看图(暂无)


3.7 状态机图

状态机表示某个对象所处的不同状态和该类的状态信息转换信息。只有在系统活动期间具有三个以上的潜在状态的某个对象才需要考虑使用状态机图进行描述。

结合演化图,具体有5个基本元素(元素要素别深究,没意义,都是代表组成部分)


  1. 初始状态  实心圆
  2. 状态之间的转换 带箭头的线段
  3. 状态 圆角矩形
  4. 判断点 空心圆
  5. 一个或多个终止点 包含实心圆的圆

总结:只描述单个对象,只有一个初始状态,可以有多个终结状态。状态要表示对象的关键快照(快照意思就是比较稳定的一个瞬间记录),有重要意义。事件方法要明确。状态机图擅长表现单个对象的跨用例行为。


4.总结

图片暂无,学会用EA,有项目,再来补图。003写注释。


推荐阅读
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • 在深入掌握Spring框架的事务管理之前,了解其背后的数据库事务基础至关重要。Spring的事务管理功能虽然强大且灵活,但其核心依赖于数据库自身的事务处理机制。因此,熟悉数据库事务的基本概念和特性是必不可少的。这包括事务的ACID属性、隔离级别以及常见的事务管理策略等。通过这些基础知识的学习,可以更好地理解和应用Spring中的事务管理配置。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • MySQL数据库安装图文教程
    本文详细介绍了MySQL数据库的安装步骤。首先,用户需要打开已下载的MySQL安装文件,例如 `mysql-5.5.40-win32.msi`,并双击运行。接下来,在安装向导中选择安装类型,通常推荐选择“典型”安装选项,以确保大多数常用功能都能被正确安装。此外,文章还提供了详细的图文说明,帮助用户顺利完成整个安装过程,确保数据库系统能够稳定运行。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 实现Nginx对ThinkPHP URL重写及PATHINFO支持的详细方法解析【PHP开发】
    在PHP后端开发中,实现Nginx对ThinkPHP的URL重写及PATHINFO支持是一项常见的需求。本文详细解析了经过多次尝试和研究,最终找到的一种有效配置方法,能够确保URL_MODERewrite功能正常运行,并提供稳定的服务。此外,文章还探讨了相关配置项的具体作用及其优化建议,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • 在计算机领域,锁机制的作用类似于现实生活中的锁,用于保护共享资源免受并发访问冲突的影响。对于Java开发人员而言,深入了解数据库锁定机制至关重要,因为这不仅能够确保数据的一致性和完整性,还能有效提升系统的性能和稳定性。常见的锁机制包括Java中的`Lock`和`synchronized`关键字,它们在多线程环境中发挥着关键作用,帮助开发人员更好地管理和控制资源访问。 ... [详细]
  • PHP开发人员薪资水平分析:工程师平均工资概况
    PHP开发人员薪资水平分析:工程师平均工资概况 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
author-avatar
mobiledu2402851377
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有