热门标签 | 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写注释。


推荐阅读
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
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社区 版权所有