软件模型设计基础-行为事物

原创 2004年07月30日 14:03:00

 

1.2行为事物

1.2.1交互(Interaction)

  交互是协作中的一个消息集合,这些消息被类元角色通过关联角色交换。当协作在运行时,受类元角色约束的对象通过受关联角色约束的连接交换消息实例。交互作用可对操作的执行、用例或其他行为实体建模。

  消息是两个对象之间的单路通信,从发送者到接收者的控制流。消息具有用于在对象间传值的参数。

  消息序列从不同方向去理解可得两种图:顺序图(谁先谁后)和协作图(谁和谁交互信息)。

  如上的消息序列表示出来是很重要的,主要由顺序图和协作图来关联编写源码。

  如何理解交互,作为行为事物,交互是一组对象之间为了完成一项任务(如操作)而进行通讯的一系列消息交换的行为。首先交互在一组对象之间进行;其次,交换是为了完成一项任务;最后,交互进行一系列消息交换。

  比如,农场主想计算羊的一年的产崽量,他首先知道找那些人询问;其次,他也知道问什么;最后,他问(一些饲养人员)了一些问题。当这个交互过程结束后,他计算出来羊的数量(可能该计算已经在消息的交互过程中进行了)。

  从生活上理解,交互一个信息来往的过程,而在UML中,交互是这些信息交换过程(行为方面)的集合。

  交互的表示在顺序图、协作图和活动图中。

1.2.2状态机(state machine)

  状态机是一个状态和转换的图,描述了类元实例对事件接收的响应。状态机可以附属于某个类元(类或用例),还可以附属于协作和方法,状态机附于的元素被称为状态机的主机。

  状态机的执行:状态机在某个时刻处理某个事件而在处理另外的事件之前必须完成这个事件的结果。

  执行的语义描述(较生涩):在任何时候都存在一个或者多个状态机的活动的状态。如果一个状态是活动的,那么离开这个状态的转换(是转换被激发)可能会激发,引起一个动作的执行,并使得另一个状态或位于初始状态位置的状态激活(下一个状态处于初始状态)。

  状态机的子状态(也生涩):状态机的结构和状态机的转换可以对并发活动的状态施加约束。即如果一个顺序状态,则只有一个直接的互斥子状态必须处于活动;而一个并发组成状态处于活动,则每个直接子状态都必须处于活动。

  关于状态机的语义,我先生涩地说明如下,但其如何理解?

  状态机它是说明它(状态机)的对象在它(对象)的生命期中事件的所经历的状态序列以及它们对那些事件的响应。
解释一下几个名词:

  1.状态(state):是指在对象的生命期中的一个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。

  2.事件(event)是对一个在时间和空间上占有一定位置的有意义的事情的规格说明。在状态机中,一个事件是一次激发的产生,激发可以触发一个状态转换。

  3.转换(transition)是两个状态之间的一种关系,它指明对象在第一个状态中执行的一定的动作,并当特定事件或特定条件满足时进入第二个状态。

  一个活动(activity)是状态机中进行的非原子执行。

  一个动作(action)是一个引起模型状态改变或值的返回的可执行的原子计算。

  下面来说明这几个概念:

  状态机说白了很简单,说一个最常见的例子,我们下班回家这件事,人(假如是我error.cao)就是一个对象,我们来考察一下几个状态:

  1.到下班时间了,收拾东西准备回家(不考虑加班)。
  2.开始等电梯。
  3.到了楼下。(发现没带家里钥匙,上楼拿。)
  4.上楼。
  4.去公交等车。
  5.乘公共汽车去菜场。
  6.买菜
  7.回到家

  那么事件呢?
  1.下班时间到了(准备下班)。
  2.电梯到(上电梯)
  3.电梯到楼下(下电梯)
  3.发现没有家里钥匙(去拿钥匙)。
  4.自己要乘公共汽车到了(上车)。
  5.公共汽车到站(下车)。
  6.忽然想起家里没菜(去买菜)。

  那么何为转换:有个事件(发现没有家里钥匙),状态一(到楼下)转换到状态二(上楼),当然这个转换是对象(error.cao)的行为。此时再提一下初态和终态的概念:初态和终态并不针对转换,而是针对对象,该状态一(到楼下)不是初态,初态是到了下班时间;终态自然也不是状态二(上楼),而是回到家。那么该转换的状态一是什么呢?是该转换的源状态(source state),状态二呢?是该转换目标状态(target state)。

  关于非触发转换我不太赞成这个说法,仅仅可以说是它被隐式地被触发了,比如,以上的事件二,我们可以不表述它是个事件,但从状态二(开始等电梯)到状态三(到了楼下)就是个隐式地被触发,它有没有事件,当然有,仅仅是我们没有考虑(这些事件可以忽略)。

  在转换中还有个术语,叫监护条件,何谓监护条件?看一下事件一(下班时间到了),我们必须定义一个时间,然后由时钟告诉你(是你拿时钟上的时间和下班时间比较)时间到了,好了,时间到该下班了(事件产生了),事件产生了,对象就发生状态的转换。

mxsj_53.gif


  当然各个状态本身包含如下内容:(括号表示该状态可以没有)

  名称:就是名字,状态的名字。

  进入/退出动作:对象本身的一个操作,比如在电梯里是一个状态的话,哪我们进电梯和出电梯就是状态---在电梯里---的进入/退出动作。

  内部转换:比如我们在去等电梯的时候发现钥匙没带,此时我们不用在等电梯的以后状态是再有事件触发,在准备下班的状态上我们就去拿钥匙了,对于对象本身,前后两次的根本状态不一样,一个是有钥匙,一个是没有钥匙。

  (子状态) :如果我们描述该对象在电梯里说话,抽烟(一般电梯不许)等状态时,该状态就是该对象状态---在电梯里---状态的子状态。

  (延迟事件) :现在不立即产生的事件,该事件是在一段时间以后才产生的事件。

  说了半天,何谓状态机?对象从初态向终态过度的过程中,响应一系列的事件而经历的状态,同时包括对该事件的响应。首先,它不是这个过程,但它描述这个过程,是该对象在这一系列过程中的行为。

  以上描述的就是我们每天下班的所做的事,这不是一个用例,但可以说是一个对象多个用例表示(一个用例可能描述不完如此只多的状态及其响应)。

  若我们说到UML图的关系时大家会豁然开朗,因为我们的目标很明确,就是开发出我们客户需求的软件,我们采用UML来对系统进行建模,UML的最终结果是一个采用各种图的形式来把各个类元间的关系表达出来,通过表达出来的类元关系,我们来编制软件代码。

1. 3分组事物

1.3.1包(package)

  包的定义:用于把元素组织成组的通用机制。

  包在理解上和构件(component)有协同之处,构件是组成事物的元素,我们定义的包是一个构件的抽象化的概念,是把类元按照一定的规则分成组(也可以称为模块)。我原先的最初想法是package =component(s),后发现没有如此简单,package =component(s)+规则,这个规则不是条文,是构架在组件之上的思想抽象,而这个抽象恰恰是我们包的定义。

  包主要是包含其他元素,如类、接口、构件、节点、协作、用例和图,当然也可以包含其他的包。

Spring的7种事务传播行为类型

1、PROPAGATION_REQUIRED :如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。 2、PROPAGATION_SUPPORTS:支持当前事务,...
  • hsgao_water
  • hsgao_water
  • 2016年10月19日 16:50
  • 3921

23种设计模式分析(5):行为型模式

1.1.13 Observer观察者模式   Observer(观察者)模式又被称作发布-订阅(Publish-Subscribe)模式,是一种对象的行为型模式。《设计模式》一书对Observer...
  • zhoudaxia
  • zhoudaxia
  • 2014年04月06日 23:21
  • 4862

说服式设计(persuasive design)的行为模型

一 模型简介 BJ Fogg提出了一个新的理解人类行为的模型,他称之为Fogg behavior model (FBM),在这个模型中,他认为一个行为包含以下三个维度,动机,能力和促发点(trigg...
  • roslei
  • roslei
  • 2016年11月03日 08:46
  • 818

基于社会力模型的人群异常行为检测

由于看到的是英文,翻译自CSDN某篇文章文章出处。http://blog.csdn.net/longzaitianya1989/article/details/9193783       Abn...
  • q339659207
  • q339659207
  • 2014年05月05日 21:56
  • 6732

几款软件界面模型设计工具

出自:http://www.cnblogs.com/XACOOL/p/5665385.html 一:GUI Design Studio 界面模型设计中很实用的一个工具GUI Design Stud...
  • chenya866
  • chenya866
  • 2017年05月04日 10:38
  • 1115

异常行为分析模型设计

本文针对异常访问现状及问题进行简要描述,在此基础上提出基于一元线性回归的最小二乘法异常访问分析模型,通过该模型解决了异常访问中时间与访问间相关性问题。 异常访问是指网络行为偏离正常范围的访问情况...
  • oanqoanq
  • oanqoanq
  • 2016年04月14日 13:46
  • 1496

设计模式---可复用面向对象软件的基础 阅读笔记(一)

设计模式---可复用面向对象软件的基础 阅读笔记(一)            扯些淡:为什么会读这本书,有什么样的意义。目的是为了站在更高层次上去看编码,而且在做的也是产品,对于不想只做个简单的、无...
  • u013793732
  • u013793732
  • 2016年09月03日 16:03
  • 446

软件模型设计基础

软件模型设计基础   2008-06-03 作者:Error.cao 来源:51CMM   第一节 UML 一.UML...
  • legend_x
  • legend_x
  • 2013年12月27日 23:51
  • 657

设计模式-可复用面向对象软件的基础 [读书笔记]

1.将软件与设计模式比拟为城市与建筑模式,那么在面向对象的解决方案里,我们将对象和接口看成墙壁和门窗,模式的核心在于提供了相关问题的解决方案。   在软件设计中可能会遇到很多类似的问题,在每次遇到类似...
  • AnnaLoad
  • AnnaLoad
  • 2016年04月17日 10:26
  • 1501

Java经典设计模式之十一种行为型模式(附实例和详解)

Java经典设计模式共有21中,分为三大类:创建型模式(5种)、结构型模式(7种)和行为型模式(11种)。本文主要讲行为型模式,创建型模式和结构型模式可以看博主的另外两篇文章:Java经典设计模式之五...
  • u013142781
  • u013142781
  • 2016年03月08日 20:06
  • 7041
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件模型设计基础-行为事物
举报原因:
原因补充:

(最多只允许输入30个字)