您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象方法_第六讲
面向对象方法第6讲:uml简介主讲:朱宏飞2010—11内容提纲一、UML的产生和成长二、什么是UML三、UML与面向对象的软件分析与设计(OOA&D)四、UML的应用领域●本讲小结UML简介UML(统一建模语言UnifiedModelingLanguage)是一种建模语言是第三代用来为面向对象开发系统的产品进行说明可视化和编制文档的方法它是由信息系统ISInformationSystem和面向对象领域的三位著名的方法学家GradyBoochJamesRumbaugh和IvarJacobson称为三个好朋友theThreeAmigos提出的这种建模语言得到了UML伙伴联盟的应用与反馈并得ManagementGroup采纳作为业界标准目前OMG已经把UML作为公共可得到的规格说明PubliclyAvailableSpecificationPAS提交给国际标准化组织ISO进行国际标准化预计PAS进程将在今年完成使UML最终正式成为信息技术的国际标准.一、UML的产生和成长面向对象建模●模型定义——事物的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图示符号和组织这些符号的规则组成。●建模目的——是组织面对大量模糊的、涉及众多专业领域的、错综复杂的信息、不能直接理解的复杂系统的一种有效机制。建模的目标是从问题域中提炼出对具体应用有价值的概念。快速准确地抓住问题的实质,削减复杂化,建立期望的系统。一、面向对象建模●建模步骤◈抽象目标系统特性◈构造系统模型◈验证模型是否满足用户目标需求◈修订模型◈程序实现模型一、面向对象建模●三种模型◈描述系统数据结构的对象模型◈描述系统控制结构的动态模型◈描述系统功能的功能模型。●建模特征:◈都涉及到数据、控制和操作等共同的概念。这3种模型密切相关,它们各自从不同侧面反映了系统的实质性内容,综合起来则全面地反映了对目标系统的需求。它使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。一、面向对象建模●建模特征◈对象模型始终都是最重要、最基本、最核心的。◈在整个开发过程中,3种模型一直都在发展、完善。在面向对象分析过程中,构造出完全独立于实现的应用域模型;在面向对象设计过程中,把求解域的结构逐渐加入到模型中;在实现阶段,把应用域和求解域的结构都编成程序代码并进行严格的测试验证。一、面向对象建模对象模型●必要的陈述:◈对象模型表示静态的、结构化的系统的“数据”性质◈它是客观实体(对象)以及对象彼此间的关系的映射。◈面向对象方法强调围绕对象而不是围绕功能来构造系统。◈对象模型为建立动态模型和功能模型,提供了实质性的框架。一、面向对象建模建模语言●建模语言是为了建立对象模型而定义的一组图形符号,和表示这些符号得特定语义的规则。建模语言由记号(即模型中使用的符号)和使用符号的规则(语法、语义和语用)组成。●1996年6月,Booch,Rumbaugh和Jacobson合作研究推出的统一建模语言UML0.9(一个类及属于该类的对象)获得公认。面向对象技术市场的85%都使用了UML。1997年11月,国际对象管理组织OMG批准把UML1.1作为面向对象技术的标准建模语言一、面向对象建模●统一建模语言UnifiedModelingLanguage,是近10年来OOSE最重要的成果●贡献者:GradyBooch,IvarJacobson,JinRumbaugh●中文网站一、面向对象建模●UML的模型元素◈表示模型中的某个概念◈表示模型元素之间的关系●UML的元模型结构◈元元模型层◈元模型层◈模型层◈用户模型层用户模型模型元模型元元模型UML的四层模型结构图有关概念请参阅史济民编写的软件工程P145-166一、面向对象建模类图的基本符号●类图描述类及类与类之间的静态关系。●类图是一种静态模型,是创建其他UML图的基础。一个系统可以由多张类图来描述,一个类也可以出现在几张类图中。图9.5表示类的图图9.5外国人表示类的图一、面向对象建模●类名是一类对象的名字。命名是否恰当对系统的可理解性影响相当大;类命名时的准则如下:(1)使用标准术语。不要随意创造名字。例如,“交通信号灯”比“信号单元”这个名字好,“传送带”比“零件传送设备”好。(2)使用具有确切含义的名词。尽量使用能表示类的含义的日常用语,不要使用空洞或含义模糊的词作名字。如,“库房”比“房屋”或“存物场所”更确切(3)必要时用名词短语作名字。为使名字的含义更准确,必要时用形容词加名词或其他形式的名词短语作名字。例如,“最小的领土单元”、“储藏室”、“公司员工”等都是比较恰当的名字,名字应富于描述性、简洁性且无二义性的。一、面向对象建模定义属性:UML描述属性的语法格式为:●属性的可见性(即可访问性)通常有下述3种◈公有的(public),用加号(+)表示◈私有的(private),用减号(-)表示◈保护的(protected),用井号(#)表示●如果未声明可见性,则表示该属性的可见性尚未定义。注意,没有默认的可见性。●属性名和类型名之间用冒号(:)分隔。类型名表示该属性的数据类型,它可以是基本数据类型,也可以是用户自定义的类型。可见性属性名:类型名=初值{性质串}一、面向对象建模●在创建类的实例时应给其属性赋值,如果给某个属性定义了初值,则该初值可作为创建实例时这个属性的默认值类型名和初值之间用等号(=)隔开●用花括号括起来的性质串明确地列出该属性所有可能的取值。枚举类型的属性往往用性质串列出可以选用的枚举值,不同枚举值之间用逗号分隔。也可以用性质串说明属性的其他性质,如,约束说明{只读}表明该属性是只读属性。●例如,“发货单”类的属性“管理员”,在UML类图中描述为:—管理员:String=“未定”一、面向对象建模●类的属性中若有一种能被该类所有对象共享的属性,称为类的作用域属性,也称为类变量。类变量在类图中表示为带下划线的属性,例如,发货单类的类变量“货单数”,用来统计发货单的总数,在该类所有对象中这个属性的值都是一样的,下面是对这个属性的描述:-货单数:Integer一、面向对象建模定义服务●服务也就是操作,UML描述操作语法格式为:●操作可见性的定义方法与属性相同。●参数表用逗号分隔,调用时未提供实参时,该参数就使用默认值。描述一个参数的语法如下:●软件开发模型是不断发展的●各种软件开发模型各有优缺点●选用时不必拘泥与某种模型●可组合多种模型●也可根据实际创建新的模型参数名:类型名=默认值可见性操作名(参数表):返回值类型{性质串}二、对象模型●对象模型表示静态的、结构化的系统的“数据”性质。●它是对模拟系统的实体,即对象以及对象彼此间的关系的映射,描述了系统的静态结构。●面向对象方法强调围绕对象而不是围绕功能来构造系统。对象模型是建立动态模型和功能模型的基础。●在建立对象模型时,目标是从问题域中找出对具体应用有价值的概念●使用建模语言来建立对象模型。三、动态模型(1)●动态模型表示的是什么?动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。●动态模型——对象得瞬时状态◈在对象模型中,对象的变化过程称之为的状态。◈所谓状态,是对对象属性值的一种抽象。◈各对象之间相互触发(即作用)就形成了一系列的状态变化。规定一个触发行为称作一个事件。对象对事件的响应,取决于接受该触发的对象当时所处的状态,响应包括改变自己的状态或者又形成一个新的触发行为。三、动态模型(2)◈状态有持续性,它占用一段时间间隔。◈状态与事件密不可分,一个事件分开两个状态,一个状态隔开两个事件。事件表示时刻,状态代表时间间隔。●动态模型——状态图◈动态模型是基于事件共享而互相关联的一组状态图的集合。◈用UML提供的状态图来描绘对象的状态、触发状态转换的事件以及对象的行为(对事件的响应)。■每个类的动态行为用一张状态图来描绘,■各个类的状态图通过共享事件进行合并,构成系统的动态模型。2010/11/1121三、建立动态模型(1)导语●应用范围——动态模型主要用于描属交互式系统。●动态模型的主要功能在于表示应用系统的控制逻辑。●动态模型的主要体现形式——状态图建立动态模型的步骤●第一步:编写典型交互行为的脚本。●第二步:从脚本中提取事件,确定事件的收发双方对象。●第三步:排列事件发生次序,画出事件跟踪图,p242例●第四步:将事件跟踪图转换为状态图。●第五步:合并状态图比较、检查各个态图的一致性,确保事件之间相互匹配。2010/11/1122三、建立动态模型(2)●编写脚本◈完整、正确的脚本是建立动态模型的基础。◈脚本定义——是指系统在某一执行期间内出现的一系列事件(引发活动的事情,如写字、打电话、拿筷子)。◈脚本描述——自然语言+表◈编写脚本的目的——清晰重要的交互步骤。◈脚本描写的范围——可以是事件的全部,也可以是特定对象的发事件。2010/11/1123三、建立动态模型(3)◈重要提示——编写脚本的过程,是分析用户对系统交互行为的要求的过程。脚本编写,需要与用户加强沟通。◈编写脚本的顺序■正常情况的脚本、■特殊情况的脚本(如I/O的为MAX/MIN值)。■考虑出错情况的脚本。◈举例:参考本书240页2010/11/1124一、建立动态模型(4)用户界面◈户界面是程序逻辑外在的表现形式。◈界面形式——命令行、图形、表单等形式◈界面指标要求——美观程度、方便程度、易学程度和效率等。◈分析阶段应重视用户界面下的信息交换方式。确保通过界面能够完成全部必要的信息交换息。2010/11/1125一、建立动态模型(5)画事件跟踪图●画出事件跟踪图(参见书242页——图10.8)◈事件跟踪图实质上是扩充的脚本,是简化的UML顺序图。◈事件跟踪图图符:■竖线——对象,事件用一条水平的■箭头线——事件,箭头方向从事件的发送对象指向接受对象。■提示——时间从上向下递增,画在最上面的水平箭头线代表最先发生的事件,画在最下面的水平箭头线所代表的事件最晚发生。箭头线之间的间距并没有具体含义,图中仅用箭头线在垂直方向上的相对位置表示事件发生的先后,并不表示两个事件之间的精确时间差。2010/11/1126一、建立动态模型(6)画状态图●状态图描绘事件与对象状态的关系。●一张状态图描绘一类对象的行为,它确定了由事件序列引出的状态序列。●如何画状态图:由事件跟踪图出发画状态图时,应充分考虑影响一类对象的事件,即考虑事件跟踪图中指向某条竖线的那些箭头线。把这些事件作为状态图中的有向边(即箭头线),边上标以事件名。两个事件之间的间隔就是一个状态。同一个对象对相同事件的响应不同,则这个对象处在不同状态。状态名应有明确的意义。2010/11/1127一、建立动态模型(7)画状态图(续)●扩大状态图:得到一张状态图之后,再把其他脚本的事件跟踪图合并到已画出的状态图中。一旦状态图覆盖了所有脚本,包含了影响某类对象状态的全部事件时,该类的状态图就算完成了。利用这张状态图可能会发现一些遗漏的情况。●参见状态图举例:p243——244图10.9:ATM的状态图。图10.10:总行”的状态图。图10.11:分行的状态图。2010/11/1128一、建立动态模型(8)审查动态模型●通过共享事件合并起来的各个类的状态图,构成了系统的动态模型。●检查系统级的完整性和一致性。事件收发对象的完整性,●对于没有前驱或没有后继的状态应该着重审查,如果不是状态的起点或终点,则是一个错误的状态。2010/11/1129二、建立功能模型(3)●处理框功能描述◈把数据流图分解细化到一定程度之后,对每个处理框所代表的功能进行着重描述,而不是实现功能的具体算法。◈描述既可以是说明性的,也可以是过程性的。说明性描述规定了输入值和输出值之间的关系,以及输出值应遵循的规律。过程性描述则通过算法说明“做什么”。一般说来,说明性描述优于过程性描述,因为这类描述中通
本文标题:面向对象方法_第六讲
链接地址:https://www.777doc.com/doc-4234088 .html