类图 顺序图 活动图 状态图 用法和比较

使用电梯仿真系统来解释下列各种图的关系

类图

为什么要使用用类图:

我们在开发系统的时候是不是经常采用 分而治之  的思想 即将其分解为较为简单的子系统。

而使用类图道理也是一样,目的就是为了简化逻辑,让我们的思维可以站在类级别的去考虑问题从而避免一开始就陷入细节


如电梯仿真系统中先识别出了以下类,所以我们就可以站在面向对象的角度考虑该仿真电梯的楼梯了


顺序图

用法:箭头开始处是调用该方法的对象,箭头指向处是拥有该方法的对象(当然有时候也可以表示简单的过程)

为什么要使用顺序图:因为顺序图可以直观的反应程序执行的过程,特别 在表示各个对象间的调用顺序,那么顺序图是一个很好的选择


如电梯仿真系统的运行全过程

li

流程图

用法:每一个圆角框表示一个活动即(主谓宾 或 谓宾结构)

为什么要用流程图:流程图可以清楚的表示完成某件事情中的各个活动过程,让我们可以站在人的思维去考虑代码而不是站在实现代码的角度去考虑程序


如电梯调度器运行过程


对应的代码

public void start() {
getElevator().start();     
}

private Elevator getElevator() {
int type = compare.getType(); //获得电梯运行类型
switch(type){
case 0:
return null;                //没有合适的
case 1:                         //两部电梯都静止
return closeElevator();
case 2:                          //有一部电梯静止,另一部运行
return staticElevator();
case 3:                           //两部电梯都运行
return compare.compareTwo();
}
return null;
}

状态图

类中的状态比较多样才有必要使用


如电梯运行的三种状态




总  结

其实程序设计应该是这样考虑的:大系统 分解成  小系统  ,小系统 分解成  各种类, 类 再分解成  各种函数。

之所以这样考虑其实就是将一个复杂的问题 通过一步一步的转化为较可实现的函数级别。

这样假设吧。叫你去做一个系统,假设你没有分解 那么是不是一开始就陷入细节了你会发现你不知道从那边开始入手

那么程序设计对于的分析设计顺序应该是。。先类图-->顺序图-->流程图  当然这不是固定的


类图和顺序图的关系:你可以试试看没有画类图去画一下顺序图 肯定不知道怎么画是吧。

一般情况下在分析程序的总体流程时用顺序图比较好:因为总体分析是站在类的角度去考虑的。类的关系一般都比较简单(高内聚低耦合)顺序图适用于简单的过程


顺序图和流程图的关系:想想要是一个方法里面有很多分支语句,那用顺序图肯定是很不好画了

一般情况下分析程序中的方法用流程图更好,因为流程图可以很好的反应各种复杂的逻辑。


综上:站在类的角度分析用顺序图较好,站在函数级别的用流程图比较合适


  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
以下是GeniusPen的绘图分析,包括了用况图、活动图类图顺序图和组件图的完整表达: 1. 用况图 用况图是用来描述系统的功能和用户之间的关系的模型。GeniusPen的用况图如下: ![GeniusPen用况图](https://i.imgur.com/5vBtASV.png) 从用况图可以看出,GeniusPen主要包括了四个用况:创建绘图、编辑绘图、保存绘图和分享绘图。用户可以通过这些用况来完成绘图的整个过程。 2. 活动图 活动图是用来描述系统中活动的流程和处理过程的模型。GeniusPen的活动图如下: ![GeniusPen活动图](https://i.imgur.com/2B7LzqT.png) 从活动图可以看出,用户可以在GeniusPen中进行绘图,并且可以对绘图进行编辑、保存和分享操作。GeniusPen还包括了一些其他的活动,如选择画笔、设置画笔颜色和大小等。 3. 类图 类图是用来描述系统中的类及其属性和方法之间的关系的模型。GeniusPen的类图如下: ![GeniusPen类图](https://i.imgur.com/4LbYv7R.png) 从类图可以看出,GeniusPen主要包括了三个类:Canvas、Pen和Shape。Canvas类表示画布,包含了一些属性和方法用来描述画布的状态和操作;Pen类表示画笔,包含了一些属性和方法用来描述画笔的状态和操作;Shape类表示图形,包含了一些属性和方法用来描述图形的状态和操作。 4. 顺序图 顺序图是用来描述系统中对象之间消息传递的模型。GeniusPen的顺序图如下: ![GeniusPen顺序图](https://i.imgur.com/qkzgoQh.png) 从顺序图可以看出,用户可以在GeniusPen中进行绘图,并且可以对绘图进行编辑、保存和分享操作。这些操作涉及到Canvas、Pen和Shape三个类之间的消息传递。 5. 组件图 组件图是用来描述系统中组件及其之间的依赖关系的模型。GeniusPen的组件图如下: ![GeniusPen组件图](https://i.imgur.com/Je0w0Ty.png) 从组件图可以看出,GeniusPen主要包括了两个组件:Client和Server。Client组件表示客户端,包含了一些功能模块用来处理用户的请求;Server组件表示服务器,包含了一些功能模块用来处理客户端的请求和提供服务。这些组件之间存在依赖关系和通信关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值