第6章包图6.1什么是包包在UML中被视为文件夹6.1什么是包包的作用包像一个容器,通常用来组织用例图和类图,当然,包图的用途不仅限于这些UML元素;语义上相关的元素进行分组;定义模型中的“语义边界”;提供封装的命名空间,其中所有名称必须唯一。6.1什么是包包的表示法名称:每个包都必须有一个与其它包相区别的名称简单名、路径名拥有的元素:在包中可以拥有各种其它元素,包括类、接口、构件、节点、协作、用例,甚至是其它包或图对包中的元素也可以进行可见性的控制。公有元素,任何导入此包的包中,都可以引用公有元素保护元素,只有此包的子包才可以引用保护元素私有元素,只有在此包中才可以引用私有元素,对外一律不可见。6.2包的版型system表示正在建模的整个系统subsystem表示正在建模的系统中某个独立的部分facade虚包,只是某个其它包的视图,主要用于为其它一些复杂的包提供简略视图stub是一个代理包,通常应用于分布式系统的建模中framework用来表示一个主要由模式组成的包,框架是一个领域内的应用系统提供可扩充模板的体系结构模式最流行的三种分布式结构CORBA、RMI和DCOM6.2包的版型6.3包的关系引入依赖关系Import是默认的关系说明提供者包的命名空间将被添加到客户包的命名空间中,客户包中的元素也能够访问提供者包的所有公共元素源包可以存取目的包中内容,并且引用目的包时无需包名,直接用元素名称就可。依赖不传递客户包提供者包6.3包的关系也可以在包和接口之间建立实现关系6.4包图UML2.0正式图形订单表示层数据层业务逻辑层6.5设计类包的原则复用等价原则把类放入包时,应把包作为可复用的单元,方便版本更替共用闭包原则把需要同时改变的类放在一个包中一个类改变要求另一个类随之改变删除了一个类后,另一个类多余两个类之间有大量消息发送共用使用原则不会一起使用的类不要放在一个包中,避免无辜影响如果元素A依赖于包P中的某个元素B,则表示A会依赖于P中的所有元素,如果包P中任何一个元素做了修改,A都要重新审视自己是否还能使用包P非循环依赖原则包之间的依赖关系不要形成循环,如果确实有此类情况出现,不妨将几个循环依赖的包中全部放到一个更大的包中第7章状态图7.1概述状态机用于描述一个对象在其生存期间的动态行为,表现对象响应事件所经历的状态序列以及伴随的动作。状态机是用于描述状态与状态转换的。状态图用来显示状态机的图,一个状态机可以用多张状态图描述。状态图与交互图的区别交互图不显示对象所有可能的动态行为,只显示特定交互场景(一个具体的用例)中对象的行为。状态图可以显示对象所有的动态行为。笔完整折断两种状态,是由谁折断?只能由交互图看出状态图与活动图的区别状态图只建模一个对象的行为,活动图可以建模多个对象的活动活动图中也允许建模特定活动中对象的某个状态7.2基本组成状态state转换/迁移transition事件event事件发生,执行某动作后,状态1转换为状态2记账接到订单7.2.1状态什么是状态(state)状态是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。万事俱备,只欠东风学生正在上课网络购物,订单等待处理理解对象在任何时候都会处于某种状态中,所有对象都有状态对象所处的状态决定了它如何响应所检测到的事件或所接收的消息。清醒-(被批评)-生气醉酒-(被批评)-无反应通常,事件使对象从一个状态转向另一个状态(即状态的转换)CDPlayer需要stop状态吗?7.2.1状态几种类型初态终态中间状态组合状态历史状态1.初态和终态初态startstate显示状态图中状态机执行(execution)的开始一个状态机只能有一个初态,因为每一个执行都是从相同的地方开始的。如果一个状态机用多张状态图描述,则多张图用一个初态。嵌套状态中可以使用新的初态终态endstate表示最后的或者终端状态;终态数目可以不确定,也可以没有。电扇坏了/没坏,但拆下闲置2.中间状态中间状态的组成(除初态终态外,最常见的状态)状态名(name)是可以把该状态和其他状态区分开的字符串;状态也可能是匿名的,即没有名称。入口/出口动作(entry/exitaction)内部转换(internaltransition)不导致状态改变的转换,不会执行entry和exit动作内部转换和自转换的区别:前门-入口,后门-出口不出去,只在内部发生的转换-内部转换从后门出去,又从前门进来-自转换,自转换会引起entry和exit动作的执行子状态(substate)嵌套在另外一个状态中的状态空调:停止、运行状态,运行状态中可嵌套制冷、制热、除湿等子状态延迟事件(deferredevent)是指在该状态下暂不处理,但将推迟到该对象的另一个状态下排队处理的事件Lightingentry/turnOndo/blinkFivetimeseventpoweroff/powerSupplySelfexit/turnOffeventselfTest/defer名字域转换域,可选当转入该状态时,做开灯动作当转出该状态时,做关灯动作当处于该状态时,灯闪烁5次当电源关闭事件发生时,用自备电源当selfTest事件发生时,对象将延迟响应,到别的状态中再处理,用defer这个特定动作表示延迟内部转换do活动是只在状态内出现的活动,不能附加到转换上。3.组合/嵌套状态含有子状态的状态被称为组合或嵌套状态为何不在组合中加初态、终态?可以将任一子状态作初态去掉运行这个大的状态行吗?行,但效果不好隐藏子状态,简化模型复杂度,增强清晰性组合状态可以使用“与”关系分解为并发子状态,或者通过“或”关系分解为互相排斥的顺序子状态。组合状态的一个入转换代表对其嵌套子状态区域内的初始状态的入转换。两种表示方法顺序子状态如果一个组成状态的子状态对应的对象在其生命期内的任何时刻都只能处于一个子状态,即多个子状态之间是互斥的,不能同时存在,这种子状态称为顺序子状态。并发子状态有时组合状态有两个或者多个并发的子状态机,此时称组成状态的子状态为并发子状态。顺序子状态与并发子状态的区别在于后者在同一层次给出两个或多个顺序子状态,对象处于同一层次中来自每个并发子状态的一个时序状态中。4.历史状态Historystate使用历史状态,可以存储目前退出组合状态时所处的子状态,则返回组合状态时可以直接回到相应的子状态。CDPlayer,running状态被打断到poweron状态,再转回到running状态时,希望直接进入历史状态7.2.2转换Transition转换是两个状态间的一种关系,表示对象将在当前状态中执行动作,并在某个特定事件发生或某个特定的条件满足时进入后继状态。每个转换只允许有一个事件触发,一个事件只允许有一个动作转换的五要素(注意格式)源状态目标状态触发事件如果箭头上不带任何事件名,表示是一个自动转换,当与源状态相关的活动完成时就会自动触发。监护条件动作动作动作可执行的原子计算不可中断,其执行时间可忽略不计当转换被引发时,它对应的动作被执行。它一般是一个简短的处理过程。两种特殊动作(只要进入或离开该状态一定会执行该动作)入口动作(entry)进入状态时执行的动作退出动作(exit)退出状态时执行的动作转换类型Lightingentry/turnOndo/blinkFivetimeseventpoweroff/powerSupplySelfexit/turnOffeventselfTest/defer名字域转换域,可选当转入该状态时,做开灯动作当转出该状态时,做关灯动作当处于该状态时,灯闪烁5次当电源关闭事件发生时,用自备电源当selfTest事件发生时,对象将延迟响应,到别的状态中再处理,用defer这个特定动作表示延迟内部转换do活动是只在状态内出现的活动,不能附加到转换上。外部转换,自转换也是外部转换外部转换7.2.3事件Event是对一个时间和空间上占有一定位置的有意义的事情的规格说明。事件触发状态的转换四类主要事件信号事件调用事件变化事件时间事件信号signer事件所谓信号,是指由一个对象异步地发送,并由另外一个对象接收的一个已命名的对象。信号事件表示对象接收到某个信号。信号间可以有泛化,信号可以是其他信号的子信号,它们继承父信号的属性,并可以触发包含信号类型的转换。接收到input信号这一事件发生调用call事件表示一个操作的调度。请求调用另一个对象的操作信号是一个异步事件,而调用事件一般是同步的。也就是说,当对象调用另一对象的操作时,控制就从发送者传送到接收者,该事件触发转换,完成操后,接收者转换到一个新的状态,控制返还给发送者。变化change事件用关键字When,后面跟布尔表达式When(temperature120)/alerm()变化事件的意图是要频繁测试表达式,只要表达式由假变为真,事件就会发生。时间(time)事件时间事件是指在绝对时间或在某个时间间隔内发生的事情所引起的事件。例如到达某一时间或经过了某一时间段。用关键字When或After表示。7.3状态图建模步骤寻找主要的状态确定状态之间的转换细化状态内的活动与转换用组合/嵌套状态来展开细节7.3状态图建模细化状态内的活动与转换使用复合状态7.1.3状态图订单处理系统7.1.3状态图练习电水壶:on和off两个状态,初态off,烧坏则转换到终态。trunOn事件发生时,判断水壶是否有水,若没有水,则仍处于off状态,若有水,则turnOn事件引起烧水活动,使状态从off转入on,水开,则从on转入off状态练习进程就绪运行阻塞三个状态初态就绪;程序运行结束后终态就绪状态获得CPU时间片转为运行态;运行态时间片用完转为就绪态;运行态不满足所需资源转为阻塞态,阻塞态若资源满足则回到就绪态练习图书馆管理系统中的还书业务还书业务的动态行为是由:空闲(idle)、图书查找(finding)、还书(reversion)、失败(Failure)、归还成功(Success)5种状态及激活相互转换的事件。请根据分析运用UML绘制还书的状态图。图书馆管理系统机房收费系统电梯管理系统小结事件(Event),是指对一个在时间和空间上占据一定位置的有意义的事情的规格说明。事件包括信号、调用、时间和变化事件。状态(State)是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。转换是两个状态间的一种关系,表示对象将在当前状态中执行动作,并在某个特定事件发生而某个特定的条件满足时进入后继状态。小结状态图显示了状态机。活动图和状态图是对一个对象的生命周期进行建模,是描述对象随时间变化的动态行为。活动图显示的是从活动到活动的控制流,状态图则显示的是从状态到状态的控制流。