版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1Software School of Xiamen University第三部分第三部分 细化迭代细化迭代1 基础(基础(2)2Software School of Xiamen University主要内容主要内容w第 12 章 从需求到设计-迭代进化w第 13 章 逻辑架构和UML包图w第 14 章 迈向对象设计w第 15 章 UML交互图w第 16 章 UML类图3Software School of Xiamen University第第 12 章章 从需求到设计从需求到设计迭代进化迭代进化4Software School of Xiamen University12.1 以迭代方式
2、做正确的事,正确地做事以迭代方式做正确的事,正确地做事Do the right thingsDo the things rightWhatHow分析分析-做正确的事做正确的事设计设计-正确地做事正确地做事5Software School of Xiamen University12.2 尽早引发变更尽早引发变更w 在设计和实现工作中,特别是在早期迭代中在设计和实现工作中,特别是在早期迭代中 发现和变更一些需求。发现和变更一些需求。w 在早期迭代中引发某些在早期迭代中引发某些“不可避免的变更不可避免的变更”。w 尽早编程、测试和演示有助于尽早引发不可避免的尽早编程、测试和演示有助于尽早引发不可避
3、免的变更。变更。w 在细化阶段结束时,大约可靠定义了在细化阶段结束时,大约可靠定义了80%的需求的需求6Software School of Xiamen University第第 13 章章 逻辑架构和逻辑架构和UML包图包图7Software School of Xiamen University13.1 示例示例8Software School of Xiamen University13.2 什么是逻辑架构和层什么是逻辑架构和层w 逻辑架构逻辑架构是软件类的宏观组织结构,它将软件类组是软件类的宏观组织结构,它将软件类组织成织成包,子系统和层包,子系统和层等等w 层层:对类、包或子系统的
4、粗粒度的分组,具有对系对类、包或子系统的粗粒度的分组,具有对系统主要方面加以内聚的职责。较高的层可以调用较统主要方面加以内聚的职责。较高的层可以调用较低的层,反之则不然。常见的层:低的层,反之则不然。常见的层:用户界面用户界面应用逻辑和领域对象应用逻辑和领域对象技术服务:技术服务:数据库接口、错误日志,独立于应用,数据库接口、错误日志,独立于应用,可在多个系统中复用可在多个系统中复用。9Software School of Xiamen UniversityUML包图所表示的层包图所表示的层宽松的分层宽松的分层架构架构:较高:较高层可以调用层可以调用其下任何层其下任何层的服务的服务对其他层的对
5、其他层的设计探讨主设计探讨主要着重于该要着重于该层与应用逻层与应用逻辑层的接口辑层的接口。10Software School of Xiamen University13.4 什么是什么是 软件架构软件架构w 架构架构是一组重要决策,其中涉及是一组重要决策,其中涉及软件系统的软件系统的组织组织,对结构元素及其组成系统的,对结构元素及其组成系统的接口的选接口的选择择,这些元素特定于其,这些元素特定于其相互协作的行为相互协作的行为,这,这些结构和行为元素到规模更大的子系统的组些结构和行为元素到规模更大的子系统的组成,以及指导该组织结构(这些元素及其接成,以及指导该组织结构(这些元素及其接口,协作和
6、组成)的架构风格口,协作和组成)的架构风格 11Software School of Xiamen University13.5 应用应用UML:包图:包图w 包包UML包图通常用于描述系统的逻辑架构包图通常用于描述系统的逻辑架构层、层、子系统、包等。层可以建模为子系统、包等。层可以建模为UML包。包。包是一种对模型元素(类、接口、组件、节点、包是一种对模型元素(类、接口、组件、节点、协同。协同。Use Case图,甚至其它包)进行图,甚至其它包)进行成组组成组组织织的通用机制。的通用机制。包用于定义一个名字空间或容器。包用于定义一个名字空间或容器。可以有可视性标识可以有可视性标识 +/-/#
7、12Software School of Xiamen University拥有的对拥有的对象类象类简单名字简单名字路径名字路径名字UI是是Web所属的包所属的包包的表示包的表示13Software School of Xiamen University包的表示包的表示嵌套包的不同表示法嵌套包的不同表示法 依赖依赖14Software School of Xiamen University包间的关系包间的关系w 主要有两种:依赖泛化图图 订票系统的包结构图订票系统的包结构图 15Software School of Xiamen University包间的关系包间的关系依赖依赖w 依赖依赖:一
8、个元素的定义的改变会引起另一个元素发:一个元素的定义的改变会引起另一个元素发生相应改变生相应改变w 包之间的依赖关系概述了包中元素的依赖关系,即包之间的依赖关系概述了包中元素的依赖关系,即包间的依赖关系可从独立元素间的依赖关系导出。包间的依赖关系可从独立元素间的依赖关系导出。 w 包的依赖关系可以加上许多构造型规定它的语义,包的依赖关系可以加上许多构造型规定它的语义,其中最常见的是输入依赖其中最常见的是输入依赖 输入依赖输入依赖(Import Dependency)是包与包之间的一种存是包与包之间的一种存取取(Access)依赖关系。输入依赖关系。输入(importing)允许一个包中的允许一
9、个包中的元素存取另一个包中的元素元素存取另一个包中的元素 输入依赖是单向的。输入依赖是单向的。16Software School of Xiamen University包间的关系包间的关系泛化泛化w 与类的泛化关系一样:表示一般与特殊的关系与类的泛化关系一样:表示一般与特殊的关系w 两个包之间存在泛化关系,指其中的特殊性包必须两个包之间存在泛化关系,指其中的特殊性包必须遵循一般性包的遵循一般性包的接口接口。w 与类的继承相同,特殊包一般继承其所包含的公共与类的继承相同,特殊包一般继承其所包含的公共类,并且可以重载和添加自己的类。类,并且可以重载和添加自己的类。17Software Schoo
10、l of Xiamen UniversityUML工具:从代码逆向工程产生包图工具:从代码逆向工程产生包图w 开发过程早期:开发过程早期:画出画出UML包图的草图,根据这些草图组织代码包图的草图,根据这些草图组织代码w 开发过程后期:开发过程后期:用用UML CASE工具对源代码进行逆向工程,从而工具对源代码进行逆向工程,从而自动生成包图自动生成包图18Software School of Xiamen University13.6 使用层进行设计使用层进行设计w 系统的大型逻辑结构组织为独立的,职责相关的离系统的大型逻辑结构组织为独立的,职责相关的离散层,具有散层,具有清晰、内聚清晰、内聚的
11、的关注分离关注分离。较低的层是低较低的层是低级别和一般性服务,较高的层则是与应用相关。级别和一般性服务,较高的层则是与应用相关。w 协作与耦合是从协作与耦合是从较高层到较低层较高层到较低层进行,避免从较低进行,避免从较低层到较高层的耦合层到较高层的耦合19Software School of Xiamen University使用层的好处使用层的好处w 总的来说,使用层可以做到关系分离、高级服务与低总的来说,使用层可以做到关系分离、高级服务与低级服务分离、特定于应用的服务与一般性服务分离;级服务分离、特定于应用的服务与一般性服务分离;w 层可以减少耦合和依赖性、增强内聚性、提高潜在的层可以减少
12、耦合和依赖性、增强内聚性、提高潜在的复用性并且使概念更加清晰。复用性并且使概念更加清晰。w 封装和分解了相关的复杂性。封装和分解了相关的复杂性。w 某些层能够用新的实现替换。某些层能够用新的实现替换。w 较低层包含可复用功能。较低层包含可复用功能。w 某些层可以是分布式的。某些层可以是分布式的。w 通过逻辑划分,有助于团队开发。通过逻辑划分,有助于团队开发。20Software School of Xiamen University准则:内聚职责;使关系分离准则:内聚职责;使关系分离同一层内的对同一层内的对象在职责上应象在职责上应该具有紧密联该具有紧密联系,不同层中系,不同层中对象的职责不对象
13、的职责不应该混淆。应该混淆。信息架构中常用的层信息架构中常用的层21Software School of Xiamen University领域层和领域模型之间的关系领域层和领域模型之间的关系获得实现世界和软件设计之间的获得实现世界和软件设计之间的低表示差异低表示差异22Software School of Xiamen University定义:领域层与应用逻辑层;领域对象定义:领域层与应用逻辑层;领域对象w 典型的软件系统都有典型的软件系统都有UI逻辑和应用逻辑,我们如何使逻辑和应用逻辑,我们如何使用对象设计应用逻辑用对象设计应用逻辑w “全能类全能类”?但?但OO思想提倡创建思想提倡创建
14、软件对象软件对象!如:!如:pos系统具有销售与支付功能,系统具有销售与支付功能,Sale类与类与Payment类类w 从真实世界出发设计对象,分配应用逻辑职责,称为从真实世界出发设计对象,分配应用逻辑职责,称为领域对象,因此领域对象,因此应用逻辑层应用逻辑层被称为被称为领域层领域层w 领域层和领域模型的关系:领域模型可以给我们领域领域层和领域模型的关系:领域模型可以给我们领域层命名的灵感层命名的灵感23Software School of Xiamen University定义:层、层和分区定义:层、层和分区w 层(层(tier)最初表示逻辑层,现表示物理进程节点最初表示逻辑层,现表示物理进
15、程节点w 层(层(layer)表示对系统在垂直方面的分区表示对系统在垂直方面的分区w 分区(分区(partition)表示对层在水平方向进行划分,表示对层在水平方向进行划分,形成相对平行的子系统形成相对平行的子系统PersistenceSecurityLoggingTechnical ServicesPOSInventoryTaxDomainVertical LayersHorizontal Partitions24Software School of Xiamen University准则:不要把外部资源表示为最低层准则:不要把外部资源表示为最低层大部分系统依赖于外部资源或服务,例如大部分系
16、统依赖于外部资源或服务,例如MySQL库存数据库。这些是库存数据库。这些是物理实现构件物理实现构件,而,而不是逻辑结构中的层不是逻辑结构中的层就逻辑架构和层而言,对某个持久数据集合的就逻辑架构和层而言,对某个持久数据集合的访问可以看作领域层中的子领域访问可以看作领域层中的子领域-库存子领域。库存子领域。而提供数据库访问的一般性服务则可以视为技而提供数据库访问的一般性服务则可以视为技术服务分区术服务分区-持久性服务持久性服务。25Software School of Xiamen University26Software School of Xiamen University13.7 准则:模型
17、准则:模型-视图分离原则视图分离原则w 模型:领域层对象同义词模型:领域层对象同义词w 视图:视图:UI对象同义词对象同义词w 模型模型-视图分离原则:视图分离原则: 不要将非不要将非UI对象直接与对象直接与UI对象连接或耦合。因为窗口与对象连接或耦合。因为窗口与某个应用相关,非窗口对象可以重用某个应用相关,非窗口对象可以重用 例如:不要让例如:不要让Sale引用引用JFrame窗口对象;窗口对象; 不要在不要在UI对象方法中加入应用逻辑对象方法中加入应用逻辑 例如:例如:JFrame窗口不应该拥有计算税金的方法。窗口不应该拥有计算税金的方法。观察者模式观察者模式是对该原则的合理扩充,即领域对
18、象只能通过是对该原则的合理扩充,即领域对象只能通过PropertyListener的接口向视图的的接口向视图的UI对象发送消息对象发送消息27Software School of Xiamen University13.8 SSD,系统操作和层之间联系系统操作和层之间联系w SSD描述了系统操作,隐藏了特定的描述了系统操作,隐藏了特定的UI对象,实际对象,实际上,上,UI对象捕获系统操作请求,并向领域层转发请对象捕获系统操作请求,并向领域层转发请求求w 从从UI层发送到领域层的消息将是层发送到领域层的消息将是SSD中所描述的消中所描述的消息,例如息,例如enterItem.28Software
19、 School of Xiamen UniversityDomainUISwingProcessSaleFrame.RegistermakeNewSale()enterItem().: CashiermakeNewSale()enterItem()endSale()makeNewSale()enterItem()endSale()enterItem(id, quantity):System: CashierendSale()description, totalmakeNewSale()the system operations handled by the system in an SSD r
20、epresent the operation calls on the Application or Domain layer from the UI layer29Software School of Xiamen University13.9 示例:示例: NextGen的逻辑架构和包图的逻辑架构和包图Dom ainUISwingnot the Java Swing libraries, but our GUI classes based on SwingW ebSalesPaym entsTaxesTechnical ServicesPersistenceLoggingRulesEngi
21、ne30Software School of Xiamen University第第 14 章章 迈向对象设计迈向对象设计31Software School of Xiamen University14.1 如何开始设计如何开始设计w 不同的方式不同的方式编码编码 编码的同时进行设计,根据想象的模型直编码的同时进行设计,根据想象的模型直接编码接编码绘图,然后编码绘图,然后编码只绘图,不编码只绘图,不编码32Software School of Xiamen University14.1-3 敏捷建模和轻量级敏捷建模和轻量级UMLw 敏捷建模的目标是减少常用图形,建模的目敏捷建模的目标是减少常用
22、图形,建模的目的是为了理解和沟通,而不是创建文档的是为了理解和沟通,而不是创建文档w 可以使用白板等手段来画草图可以使用白板等手段来画草图w 敏捷建模的实践敏捷建模的实践与他人一起建模与他人一起建模并行创建若干模型(例如交互图与类图并行)并行创建若干模型(例如交互图与类图并行)迭代开始时花费几个小时或者一天的事件,迭代开始时花费几个小时或者一天的事件,对有难度和创造性的部分绘制对有难度和创造性的部分绘制UML草图以得草图以得到其详细的对象设计到其详细的对象设计33Software School of Xiamen University14.4 设计对象:什么是静态和动态建模设计对象:什么是静态
23、和动态建模w 静态和动态建模静态和动态建模静态模型静态模型:有助于设计包,类,属性和方法特征:有助于设计包,类,属性和方法特征标记的定义,例如类图,包图,部署图标记的定义,例如类图,包图,部署图动态模型动态模型:有助于设计逻辑,代码行为或方法体:有助于设计逻辑,代码行为或方法体w 初学者的认识:类图是我所想要的初学者的认识:类图是我所想要的实际上,实际上,交互图交互图更重要更重要应该把时间花费在交互图(顺序图或通信图),应该把时间花费在交互图(顺序图或通信图),而不仅是类图上而不仅是类图上交替进行交替进行34Software School of Xiamen University14.5 对象
24、设计技能比对象设计技能比UML表示法技能更重要表示法技能更重要w 绘制绘制UML反映了对设计作出的决策反映了对设计作出的决策w 对象设计技术并不一定要了解如何绘制对象设计技术并不一定要了解如何绘制UMLw 基本的对象设计需要了解的是:基本的对象设计需要了解的是:职责分配原则职责分配原则设计模式设计模式35Software School of Xiamen University14.6 其他对象设计技术:其他对象设计技术:CRC卡卡w 类职责协助(类职责协助(CRC)卡是流行的面向文本建)卡是流行的面向文本建模技术;模技术;w CRC卡是纸质的索引卡片,其中记录了类的卡是纸质的索引卡片,其中记录
25、了类的职责和协作,每张卡片表示一个类。职责和协作,每张卡片表示一个类。w 考虑对象必须做什么,以及必须与哪些对象考虑对象必须做什么,以及必须与哪些对象协作。协作。36Software School of Xiamen University37Software School of Xiamen University第第 15 章章 UML交互图交互图38Software School of Xiamen University15.1 顺序图和通信图顺序图和通信图w 交互图(交互图(interaction diagram)UML使用交互图来描述对象间通过消息的交互。使用交互图来描述对象间通过消息的
26、交互。w 交互图分类交互图分类顺序图(顺序图(sequence diagram) 强调消息的时间顺序强调消息的时间顺序 展示了对象的生命线展示了对象的生命线通信图通信图 (communication diagram)/协作图协作图 强调结构组织强调结构组织 对复杂的交互表达更容易对复杂的交互表达更容易39Software School of Xiamen University顺序图用栅栏格式展示交互关系顺序图用栅栏格式展示交互关系w 在代码中的表示:在代码中的表示:public class A private B myB = new B(); public void doOne() myB.d
27、oTwo(); myB.doThree(); /: Am yB : Bd o T w od o O n ed o T h re e对象对象时间时间40Software School of Xiamen University通信图以图或网络形式描述对象交互,其中对通信图以图或网络形式描述对象交互,其中对象可以位于图中的任何位置象可以位于图中的任何位置: AmyB : B1: doTwo2: doThreedoOne41Software School of Xiamen University顺序图和通信图的优缺点顺序图和通信图的优缺点类型类型优势优势劣势劣势顺序图顺序图 能够清晰表示消息的顺序能够
28、清晰表示消息的顺序和时间排序和时间排序大量详细表示法选项大量详细表示法选项强调在右侧增加强调在右侧增加新对象;消耗水新对象;消耗水平空间平空间通信图通信图 空间效用空间效用能够在二维空能够在二维空间内灵活地增加新对象间内灵活地增加新对象不易查阅消息的不易查阅消息的顺序顺序表示法选项较少表示法选项较少42Software School of Xiamen University: R egister: S alem akeP aym ent(cashT endered)m akeP aym ent(cashT endered) : P aym entcreate(cashT endered)pub
29、lic class Sale private Payment payment; public void makePayment( Money cashTendered) payment = new Payment( cashTendered); / /43Software School of Xiamen UniversityUML 演示演示public class HelloWorldpublic static void main(String args)Greeting hello=new Greeting();hello.greet(“hello World”);class Greeti
30、ngpublic void greet(String s)System.out.println(s); 44Software School of Xiamen University1: m akePaym ent(cashTendered)1.1: create(cashTendered):Register:Sale:Paym entm akePaym ent(cashTendered) direction of m essage通信图与之前的顺序图含义相同通信图与之前的顺序图含义相同45Software School of Xiamen University15.2 UML建模初学者没有对交
31、互图给予足够重视!建模初学者没有对交互图给予足够重视!w 准则:准则:应该花费时间使用交互图进行动态对象建模,而应该花费时间使用交互图进行动态对象建模,而不仅是使用类图进行静态对象建模。不仅是使用类图进行静态对象建模。w 原因:原因:考虑真正的考虑真正的OO设计细节时,就必须要设计细节时,就必须要“落实落实”发送哪些消息、发送给谁、以何种顺序发送等具发送哪些消息、发送给谁、以何种顺序发送等具体信息。体信息。46Software School of Xiamen University15.3 常用的常用的UML交互图表示法交互图表示法w 使用生命线框图表示参与者使用生命线框图表示参与者47Sof
32、tware School of Xiamen Universityreturn = message (parameter : parameterType): returnType没有参数时,可以省略括号没有参数时,可以省略括号如果很显然或者不重要,可以不包含类型信息如果很显然或者不重要,可以不包含类型信息举例:举例: initialize(code) initialize d=getProductSpect(id): d=getProductSpect(id: ItemID): d=getProductSpect(id: ItemID): ProductSpecification注:为了自动代
33、码生成,要全部写完整注:为了自动代码生成,要全部写完整消息表达式的基本语法48Software School of Xiamen University单实例类对象单实例类对象w 单实例类模式:对类进行实例化时,只能存在一个实例, 而绝不能是两个。49Software School of Xiamen University15.4 顺序图的基本表示法顺序图的基本表示法1. 生命框图和生命线生命框图和生命线顺序图中的生命线框图包括框图之下的垂直延顺序图中的生命线框图包括框图之下的垂直延伸线伸线UML 2规范中定义的生命线可以是实线也可以规范中定义的生命线可以是实线也可以是虚线是虚线50Softwa
34、re School of Xiamen University消息消息创始消息表示没有特定发送者、发送者不明确创始消息表示没有特定发送者、发送者不明确或消息源众多的消息。或消息源众多的消息。51Software School of Xiamen University控制期和执行规格条控制期和执行规格条w 顺序图中使用顺序图中使用执行规格执行规格条(活动条条(活动条/活动)活动)来来表示控制器,该条可选。表示控制器,该条可选。w 准则:通常在使用准则:通常在使用UML CASE工具时会工具时会经常绘制执行规格条经常绘制执行规格条(自动),在墙上绘制(自动),在墙上绘制草图时往往不绘制。草图时往往不
35、绘制。52Software School of Xiamen University表示应答或返回表示应答或返回w可以用两种方式表示消息的返回结果:可以用两种方式表示消息的返回结果:使用消息语法使用消息语法 returnVar = message(parameter).在活动条末端使用应答(或返回)消息线在活动条末端使用应答(或返回)消息线: Register: Saled1 = getDategetDatedoXaDate53Software School of Xiamen University发送给发送给“自身自身”的消息的消息: RegisterdoXclear嵌套的活动条表示对象发送给
36、自身的消息嵌套的活动条表示对象发送给自身的消息54Software School of Xiamen University实例的创建实例的创建创建对象:虚线创建对象:虚线同步消息:实心箭头同步消息:实心箭头异步消息:开放箭头异步消息:开放箭头55Software School of Xiamen University对象生命线和对象的销毁对象生命线和对象的销毁56Software School of Xiamen University图框图框图框操作符图框操作符含义含义alt选择性的片段,用于表示保护信息所表达的互斥条件逻辑选择性的片段,用于表示保护信息所表达的互斥条件逻辑loop用于表示保护
37、信息为真的循环片段。也可以写为用于表示保护信息为真的循环片段。也可以写为loop(n)以指以指明循环的次数,例如明循环的次数,例如loop(i,1,10) 。opt当保护信息为真时执行的可选片段当保护信息为真时执行的可选片段par并行执行的并行片段并行执行的并行片段region只能执行一个线程的临界片段只能执行一个线程的临界片段57Software School of Xiamen Universitycalculate: Baryyxx color = red opt: Foo: B: AcalculatedoX: Ccalculate x 10 alt else 58Software Sc
38、hool of Xiamen University隐含地表示对集合的迭代隐含地表示对集合的迭代对集合的迭代对集合的迭代st = getSubtotallineItemsi :SalesLineItemt = getTotalloop: Sale59Software School of Xiamen University隐含地表示对集合的迭代隐含地表示对集合的迭代public class Sale private List lineItems = new ArrayList();public Money getTotal() Money total = new Money(); Money su
39、btotal = null;for ( SalesLineItem lineItem : lineItems ) subtotal = lineItem.getSubtotal(); total.add( subtotal ); return total; / 60Software School of Xiamen Universitycalculate: Barxx color = red opt: Fooloop(n)图框的嵌套图框的嵌套图框的嵌套图框的嵌套61Software School of Xiamen University如何关联交互图如何关联交互图62Software Scho
40、ol of Xiamen University对类调用静态(或类)方法的消息对类调用静态(或类)方法的消息在代码中,可能的实现是:在代码中,可能的实现是:public class Foo public void doX() /调用调用Calandar类的静态方法类的静态方法 Locale locales = Calendar.getAvailableLocals();63Software School of Xiamen University多态消息和案例多态消息和案例64Software School of Xiamen University异步和同步调用异步和同步调用刺形箭头在刺形箭头在U
41、ML中表示异步调用;实心箭头表示为同步调用中表示异步调用;实心箭头表示为同步调用异步的异步的start调用通常会请求调用通常会请求Runnable(Clock)对象的)对象的run方法,可以忽略方法,可以忽略Trread对象和对象和start消息。消息。Clock也称为主动对象(也称为主动对象(active object),即在自),即在自己的执行线程中运行或者控制自己的执行线程的实例。己的执行线程中运行或者控制自己的执行线程的实例。65Software School of Xiamen Universitypublic class ClockStarter public void start
42、Clock() Thread t = new Thread( new Clock() ); t.start();/ 异步调用异步调用clock对象上的对象上的run方法方法System.runFinalization(); / / clock对象应该实现对象应该实现Runnable接口接口 public class Clock implements Runnable public void run() while ( true ) / 在其线程中永远循环在其线程中永远循环 / / 注意注意UML图中没有包含代码中的图中没有包含代码中的Thread对象对象66Software School of
43、 Xiamen University15.5 通信图的基本表示法通信图的基本表示法w Link (连接连接/链链) 连接两个对象的路径,它指明了对象间某种可能的导航连接两个对象的路径,它指明了对象间某种可能的导航和可见性和可见性1: makePayment(cashTendered)2: foo2.1: bar: Register:Salelink line67Software School of Xiamen University消息消息w 对象间的每个消息都可以使用消息表达式和指明对象间的每个消息都可以使用消息表达式和指明消息方向的小箭头来表示。消息方向的小箭头来表示。 w 可以增加顺序编
44、号以表示当前控制线程中消息的可以增加顺序编号以表示当前控制线程中消息的次序。次序。不要为起始消息编号不要为起始消息编号1: msg22: msg33: msg43.1: msg5: Register:Saleall messages flow on the same linkmsg168Software School of Xiamen University“自身自身”传递的消息传递的消息: Registermsg11: clear69Software School of Xiamen University返回值返回值w 返回值变量的名字和赋值符号:= 在消息前70Software Schoo
45、l of Xiamen University实例的创建:实例的创建: 约定使用名为约定使用名为create的消息的消息71Software School of Xiamen University消息的顺序编号消息的顺序编号: Amsg1: B1: msg2: C1.1: msg3not numberedlegal numbering1) 不为第一个消息使用顺序编号不为第一个消息使用顺序编号2)使用合法编号方案来表示后续消息的顺序和嵌套如:)使用合法编号方案来表示后续消息的顺序和嵌套如:1.172Software School of Xiamen University: Amsg1: B1: m
46、sg2: C1.1: msg32.1: msg52: msg4: D2.2: msg6firstsecondfourthsixthfifththird73Software School of Xiamen University有条件消息有条件消息1 color = red : calculate: Foo: Barmessage1conditional message, with test带方括号的条件子句来表示有条件消息带方括号的条件子句来表示有条件消息只有在子句为真时,才发送该消息。只有在子句为真时,才发送该消息。74Software School of Xiamen University
47、互斥的有条件路径互斥的有条件路径必须使用条件路径字母修改顺序编号:必须使用条件路径字母修改顺序编号: 在在msg后可能执行后可能执行1a 或或 1b75Software School of Xiamen University迭代或循环迭代或循环如果迭代子句对建模者而言并不重要,则可以使用如果迭代子句对建模者而言并不重要,则可以使用“*” 对其对其简化简化76Software School of Xiamen University集合的迭代集合的迭代77Software School of Xiamen University对类调用静态(类)方法的消息对类调用静态(类)方法的消息78Softwa
48、re School of Xiamen University多态消息和案例多态消息和案例:RegisterauthorizedoX:Payment abstractpolymorphic messageobject in role of abstract superclass:DebitPaymentauthorize:Foostop at this point dont show any further details for this messageseparate diagrams for each polymorphic concrete casedoAdoB:CreditPaymen
49、tauthorize:BardoX可以使用多个通信图来表示每种具体的多态案例可以使用多个通信图来表示每种具体的多态案例79Software School of Xiamen University异步和同步消息异步和同步消息3: runFinalization:ClockStarterSystem : ClassstartClock:Clock1: create2: runasynchronous messageactive object刺形箭头在刺形箭头在UML中表示异步调用;实心箭头表示为同步调用中表示异步调用;实心箭头表示为同步调用80Software School of Xiamen U
50、niversity总结:总结:UML三种消息三种消息w 调用(调用(Procedure Call):):发送者把消息发送后,发送者把消息发送后,等待直到接收者饭还有控制,可以表示同步;等待直到接收者饭还有控制,可以表示同步;w 异步(异步(Asynchronous):):消息发送后,发送者继消息发送后,发送者继续操作,不等待,常用于并发;续操作,不等待,常用于并发;81Software School of Xiamen University总结:总结:UML三种消息三种消息w 返回(返回(Return):):表示消息的返回,一般同步表示消息的返回,一般同步(过程调用)的返回不需要画出,直接画出
51、,而异(过程调用)的返回不需要画出,直接画出,而异步返回则可用它。步返回则可用它。w Rose 扩充 阻止(Balking)超时(Time-out)82Software School of Xiamen University83Software School of Xiamen Universityw 其中其中Simple和和Asynchronous同义同义Synchronous和和Procedure Call 同义同义Return 不变不变新增:新增:阻止(阻止(Balking):):接收者如果无法立即接收,则接收者如果无法立即接收,则发送者放弃消息;发送者放弃消息;超时(超时(Time-o
52、ut):):如果接收者无法在指定时间内如果接收者无法在指定时间内接收,则发送者放弃消息;接收,则发送者放弃消息;84Software School of Xiamen Universityw 例1: 客户通过银行柜台人员进行成功存款操作w 例2:管理员通过课程管理器打印课程UML的信息w 例3:管理员通过课程管理器打印所有课程的信息85Software School of Xiamen University例例1: 客户通过银行柜台人员进行存款操作客户通过银行柜台人员进行存款操作86Software School of Xiamen University例例2:管理员通过课程管理器打印课程:管
53、理员通过课程管理器打印课程UML的信息的信息87Software School of Xiamen University例例3:管理员通过课程管理器打印所有课程的信息:管理员通过课程管理器打印所有课程的信息Rose 中如何发布?88Software School of Xiamen UniversityRose 如何发布?如何发布?点击点击Tools-Web Publisher89Software School of Xiamen University第十六章第十六章 UML类图类图90Software School of Xiamen University类图类图w UML用类图(Class
54、 Diagram)表示类、接口及其关联w 用于静态对象建模91Software School of Xiamen University16.1 应用应用UML:常见类图表示法:常见类图表示法92Software School of Xiamen University16.2 定义:设计类图定义:设计类图两种透视图中的两种透视图中的UML类图类图93Software School of Xiamen University16.3 类元类元w 类元类元(classifier)描述行为和结构特性的模型元素描述行为和结构特性的模型元素包括包括类、接口类、接口、用例和参与者、用例和参与者w 类的命名类的
55、命名 类的名字是每个类所必有的构成,用于和其它类相区分类的名字是每个类所必有的构成,用于和其它类相区分 类的名字可分为类的名字可分为简单名字简单名字:简单名字是一个不包含冒号的字串:简单名字是一个不包含冒号的字串复杂名字复杂名字(路径名字路径名字):路径名是简单名字前面:路径名是简单名字前面加上一个包含此类的所在的模型包的名字,这加上一个包含此类的所在的模型包的名字,这两个名字之间用两冒号隔开两个名字之间用两冒号隔开 94Software School of Xiamen University16.4 表示表示UML属性的方式:属性文本和关联线属性的方式:属性文本和关联线w 属性表示法:属性表
56、示法: 属性文本表示法属性文本表示法 Visibility name : type multiplicity = default property-string 如果没有给出可见性,则通常假设属性是私有的如果没有给出可见性,则通常假设属性是私有的 关联线表示法关联线表示法 导航线箭头由源对象指向目标对象,表示源对象的一导航线箭头由源对象指向目标对象,表示源对象的一个属性是目标对象个属性是目标对象 多重性放在目标一端而不是源的一端。多重性放在目标一端而不是源的一端。 角色名只放在目标一端,用以表示属性名称角色名只放在目标一端,用以表示属性名称 不需要关联名称不需要关联名称 两者兼有两者兼有95S
57、oftware School of Xiamen University96Software School of Xiamen University准则:领域模型中注意不要用导航线箭头准则:领域模型中注意不要用导航线箭头97Software School of Xiamen University准则:何时使用属性文本,何时使用关联线准则:何时使用属性文本,何时使用关联线准则:对数据类型对象使用属性文本表示法,对其他对象使用关联准则:对数据类型对象使用属性文本表示法,对其他对象使用关联线,线,但是关联线能够在视觉上强调图中对象的类之间的连接。但是关联线能够在视觉上强调图中对象的类之间的连接。数据类
58、型对象:布尔、日期(或日期时间)、数字、字符、字符串数据类型对象:布尔、日期(或日期时间)、数字、字符、字符串、时间、地址、颜色、几何形状、电话号码、社会安全号、统一产、时间、地址、颜色、几何形状、电话号码、社会安全号、统一产品代码、邮政编码、枚举类型等。品代码、邮政编码、枚举类型等。98Software School of Xiamen University代码中归结为同一个事物:代码中归结为同一个事物:public class Register private int id; private Sale currentSale; private Store location; / 99Sof
59、tware School of Xiamen University如何使用属性文本和关联线表示集合属性如何使用属性文本和关联线表示集合属性w 假设假设Sale的软件对象持有包含了的软件对象持有包含了SalesLineItem对象的对象的List(一种集合的接口一种集合的接口)public class Sale private List lineItems = new ArrayList(); / 100Software School of Xiamen University如何使用属性文本和关联线表示集合属性如何使用属性文本和关联线表示集合属性101Software School of Xia
60、men University16.5 注解符号:注解、注释、约束和方法体注解符号:注解、注释、约束和方法体w 符号表示:符号表示:w 注解符号可以表示多种事物:注解符号可以表示多种事物:UML注解(注解(note)或注释()或注释(comment)UML约束约束(constraint),必须使用,必须使用“”将它括将它括起来起来方法体方法体(method body)102Software School of Xiamen University16.6 操作和方法操作和方法w 完整、正式的操作语法:完整、正式的操作语法:visibility name (parameter-list) prope
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025北京市个体工商户雇工劳动合同书范文
- 2025年度按摩店合伙人市场分析与竞争策略协议3篇
- 2025年度农村墓地建设项目投资合作协议书
- 二零二五年度养老公寓入住与休闲娱乐服务合同3篇
- 二零二五年度公司企业间新能源车辆购置借款合同3篇
- 2025年度工伤赔偿争议解决机制协议书3篇
- 二零二五年度养老机构兼职校医照护服务合同3篇
- 二零二五年度养殖场专业技术人员聘用合同3篇
- 二零二五年度地下停车场开发与运营管理合同3篇
- 二零二五年度智能电网设备采购合同风险识别与防范3篇
- TSG 51-2023 起重机械安全技术规程 含2024年第1号修改单
- 《正态分布理论及其应用研究》4200字(论文)
- GB/T 45086.1-2024车载定位系统技术要求及试验方法第1部分:卫星定位
- 浙江省杭州市钱塘区2023-2024学年四年级上学期英语期末试卷
- 1古诗文理解性默写(教师卷)
- 广东省广州市越秀区2021-2022学年九年级上学期期末道德与法治试题(含答案)
- 2024-2025学年六上科学期末综合检测卷(含答案)
- 在线教育平台合作合同助力教育公平
- 工地钢板短期出租合同模板
- 女排精神课件教学课件
- 2024年湖南省公务员考试《行测》真题及答案解析
评论
0/150
提交评论