软件工程课件:第4章 面向对象分析方法

上传人:努力****83 文档编号:174784667 上传时间:2022-12-16 格式:PPT 页数:286 大小:6.26MB
返回 下载 相关 举报
软件工程课件:第4章 面向对象分析方法_第1页
第1页 / 共286页
软件工程课件:第4章 面向对象分析方法_第2页
第2页 / 共286页
软件工程课件:第4章 面向对象分析方法_第3页
第3页 / 共286页
点击查看更多>>
资源描述
面向对象的概念与开发方法面向对象的概念与开发方法统一建模语言统一建模语言UMLUML概述概述面向对象分析面向对象分析UMLUML建模工具建模工具Rational RoseRational Rose现实世界就是由各种对象组成的,如建筑物、现实世界就是由各种对象组成的,如建筑物、人、汽车、动物、植物等。人、汽车、动物、植物等。复杂的对象可以由简单的对象组成。复杂的对象可以由简单的对象组成。在研究对象时主要考虑对象的属性和行为,在研究对象时主要考虑对象的属性和行为,有些不同的对象会呈现相同或相似的属性和有些不同的对象会呈现相同或相似的属性和行为,如轿车、卡车、面包车。行为,如轿车、卡车、面包车。通常将属性及行为相同或相似的对象归为一通常将属性及行为相同或相似的对象归为一类。类。类可以看成是对象的抽象,代表了此类对象类可以看成是对象的抽象,代表了此类对象所具有的共有属性和行为。所具有的共有属性和行为。CoadCoad和和YourdonYourdon给出了给出了“面向对象面向对象”的的一个定义:一个定义:面向对象对象类继承消息通信面向对象对象类继承消息通信如果一个系统是使用这样如果一个系统是使用这样4 4个概念设计个概念设计和实现的,则可认为这个系统是面向对和实现的,则可认为这个系统是面向对象的。象的。初始阶段初始阶段 1960s:1960s:挪威奥斯陆大学和挪威计算中挪威奥斯陆大学和挪威计算中心共同研制了心共同研制了SimulaSimula语言语言 1 9 8 0 s:X e r o x1 9 8 0 s:X e r o x 研 究 中 心 推 出 了研 究 中 心 推 出 了SmalltalkSmalltalk语言和环境语言和环境 发展阶段发展阶段 1980s:1980s:理论基础,许多理论基础,许多OO OO 编程语言编程语言(如(如C+,Objective-CC+,Objective-C等)等)面向对象编程语言的繁荣是面向对象方法面向对象编程语言的繁荣是面向对象方法走向实用的重要标志走向实用的重要标志 成熟阶段成熟阶段 问题域问题域测试测试编程编程计算机计算机编程语言编程语言自然语言自然语言需求需求分析分析总体总体设计设计详细详细设计设计分析与设计的鸿沟分析与设计的鸿沟分析与设计分析与设计概念及表示概念及表示法的不一致法的不一致软件工程学的作用软件工程学的作用结构化的软件工程方法结构化的软件工程方法问题域问题域OOA计算机计算机自然语言自然语言面向对象的面向对象的编程语言编程语言OODOOPOOT软件工程学的作用软件工程学的作用面向对象的软件工程方法面向对象的软件工程方法 例题:例题:编写一个开发票程序,需要对发票的名细栏进行计算。编写一个开发票程序,需要对发票的名细栏进行计算。编号编号名称名称规格规格单位单位数量数量单价单价金额金额合计合计非面向对象思路:非面向对象思路:定义数据结构定义数据结构定义函数定义函数面向对象思路:面向对象思路:对象对象一组属性一组属性操作:发票总计操作:发票总计 客观世界客观世界对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象名对象名属性属性操作操作类类类类类类类类类类类类类类对象对象用况图用况图类图类图顺序图顺序图状态图状态图活动图活动图构件图构件图OO模型模型对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象计算机内计算机内的对象的对象对象是包含现实世界物体特征的抽象实体,它反映对象是包含现实世界物体特征的抽象实体,它反映了系统为之保存信息和(或)与它交互的能力。了系统为之保存信息和(或)与它交互的能力。例如,例如,StudentStudent对象的数据可能有姓名、性别、出生对象的数据可能有姓名、性别、出生日期、家庭住址、电话号码等,其操作可能是对这日期、家庭住址、电话号码等,其操作可能是对这些数据值的赋值及更改。些数据值的赋值及更改。对象与后面讲的类具有几乎完全相同的表示对象与后面讲的类具有几乎完全相同的表示形式,主要差别是对象的名字下面要加一条形式,主要差别是对象的名字下面要加一条下划线。对象名有下列三种表示格式:下划线。对象名有下列三种表示格式:(1)(1)第一种格式是对象名在前,类名在后,中间用冒第一种格式是对象名在前,类名在后,中间用冒号连接。形如:号连接。形如:对象名:类名对象名:类名(2)(2)第二种格式形如:第二种格式形如:类名:类名 这种格式用于尚未给对象命名的情况,注意,类名这种格式用于尚未给对象命名的情况,注意,类名前的冒号不能省略。前的冒号不能省略。(3)(3)第三种格式形如:第三种格式形如:对象名对象名对象有两个层次的概念:对象有两个层次的概念:(1)(1)现实生活中对象指的是客观世界的实体。现实生活中对象指的是客观世界的实体。可以是可见的有形对象,如人、学生、汽车、可以是可见的有形对象,如人、学生、汽车、房屋等;也可以是抽象的逻辑对象,如银行房屋等;也可以是抽象的逻辑对象,如银行帐号,生日。帐号,生日。(2)(2)程序中对象就是一组变量和相关方法的集程序中对象就是一组变量和相关方法的集合,其中变量表明对象的状态,方法表明对合,其中变量表明对象的状态,方法表明对象所具有的行为。象所具有的行为。可以将程序中的对象分为可以将程序中的对象分为5 5类:类:物理对象,物理对象,角色,事件,交互,规格说明角色,事件,交互,规格说明。(1)(1)物理对象(物理对象(Physical ObjectsPhysical Objects)物理对象是物理对象是最易识别的对象,通常可以在问题领域的描述中最易识别的对象,通常可以在问题领域的描述中找到,它们的属性可以标识和测量。找到,它们的属性可以标识和测量。例如,大学课程注册系统中的学生对象;一个网例如,大学课程注册系统中的学生对象;一个网络管理系统中各种网络物理资源对象(如开关、络管理系统中各种网络物理资源对象(如开关、CPUCPU和打印机)都是物理对象。和打印机)都是物理对象。(2)(2)角色(角色(RolesRoles)一个实体的角一个实体的角色也可以抽象成一个单独的对象。角色色也可以抽象成一个单独的对象。角色对象的操作是由角色提供的技能。对象的操作是由角色提供的技能。例如,一个面向对象系统中通常有例如,一个面向对象系统中通常有“管理器管理器”对象,对象,它履行协调系统资源的角色。一个窗口系统中通常它履行协调系统资源的角色。一个窗口系统中通常有有“窗口管理器窗口管理器”对象,它扮演协调鼠标器按钮和对象,它扮演协调鼠标器按钮和其他窗口操作的角色。特别地,一个实际的物理对其他窗口操作的角色。特别地,一个实际的物理对象可能同时承担几个角色。象可能同时承担几个角色。例如,一个退休教师同时扮演退休者和教师的角色。例如,一个退休教师同时扮演退休者和教师的角色。(3)(3)事件(事件(EventsEvents)一个事件是某一个事件是某种活动的一次种活动的一次“出现出现”。例如例如“鼠标鼠标”事件。一个事件对象通常是一事件。一个事件对象通常是一个数据实体,它管理个数据实体,它管理“出现出现”的重要信息。的重要信息。事件对象的操作主要用于对数据的存取。事件对象的操作主要用于对数据的存取。如如“鼠标鼠标”事件对象有诸如光标坐标、左右事件对象有诸如光标坐标、左右键、单击,双击等信息。键、单击,双击等信息。(4)(4)交互(交互(InteractionsInteractions)交互表示了交互表示了在两个对象之间的关系,这种类型的对象类在两个对象之间的关系,这种类型的对象类似于在数据库设计时所涉及的似于在数据库设计时所涉及的“关系关系”实体。实体。当实体之间是多对多的关系时,利用交互对当实体之间是多对多的关系时,利用交互对象可将其简化为两个一对多的关系。象可将其简化为两个一对多的关系。例如,在大学课程注册系统中,学生和课程例如,在大学课程注册系统中,学生和课程之间的关系是多对多的关系,可设置一个之间的关系是多对多的关系,可设置一个“选课选课”交互对象来简化它们之间的关系。交互对象来简化它们之间的关系。类。类。可以将现实生活中的对象经过抽象,映射为程可以将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序中是通过一种抽象数据类序中的对象。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(型来描述的,这种抽象数据类型称为类(ClassClass)。)。为了让计算机创建对象,必须先提供对象的定义,为了让计算机创建对象,必须先提供对象的定义,也就是先定义对象所属的类。例如,可以将学生对也就是先定义对象所属的类。例如,可以将学生对象所属的类定义为象所属的类定义为StudentStudent。类的图形表示如图所示。类的图形表示如图所示。封装。封装。面向对象的封装特性与其抽象特性密切相面向对象的封装特性与其抽象特性密切相关。封装是一种信息隐蔽技术,就是利用抽象数据关。封装是一种信息隐蔽技术,就是利用抽象数据类型将数据和基于数据的操作封装在一起。用户只类型将数据和基于数据的操作封装在一起。用户只能看到对象的封装界面信息,对象的内部细节对用能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的。户是隐蔽的。封装的定义是:封装的定义是:(1)(1)清楚的边界,所有对象的内部信息被限定在这个清楚的边界,所有对象的内部信息被限定在这个边界内;边界内;(2)(2)接口,即对象向外界提供的方法,外界可以通过接口,即对象向外界提供的方法,外界可以通过这些方法与对象进行交互;这些方法与对象进行交互;(3)(3)受保护的内部实现,即软件对象功能的实现细节,受保护的内部实现,即软件对象功能的实现细节,实现细节不能从类外访问。实现细节不能从类外访问。继承继承。继承是一种联结类的层次模型,为类的重继承是一种联结类的层次模型,为类的重用提供了方便,它提供了明确表述不同类之间共性用提供了方便,它提供了明确表述不同类之间共性的方法。的方法。我们将公共类称为超类我们将公共类称为超类(superclass)(superclass)、父类、父类(father classfather class)、祖先()、祖先(ancestorancestor)或基类)或基类(base classbase class),而从其继承的类称为子类),而从其继承的类称为子类(subclasses)(subclasses)、后代(、后代(deslendanedeslendane)或导出类)或导出类(derived classderived class)。)。消息是一个对象与另一个对象的通信单元,消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作是要求某个对象执行类中定义的某个操作的规格说明。的规格说明。发送给一个对象的消息定义了一个发送给一个对象的消息定义了一个方法名方法名和一个和一个参数表参数表(可能是空的),并(可能是空的),并指定某指定某一个一个对象对象。一个对象接收到消息,则调用消息中指定一个对象接收到消息,则调用消息中指定的的方法方法,并将并将形式参数与参数表中相应的形式参数与参数表中相应的值结合起来值结合起来。即方法是对软件开发过程所有阶段进行即方法是对软件开发过程所有阶段进行综合考虑而得到的。综合考虑而得到的。即生存期后一阶段的成果只是在前一阶即生存期后一阶段的成果只是在前一阶段成果的补充和修改。段成果的补充和修改。把面向对象分析把面向对象分析(OOA)(OOA)、面向对象设计、面向对象设计(OOD)(OOD)和面向对象程序设计和面向对象程序设计(OOP)(OOP)集成到集成到生存期的相应阶段。生存期的相应阶段。RumbaughRumbaugh和他的同事提出的和他的同事提出的用于分析、系统设计和对象级设用于分析、系统设计和对象级设计。分析活动建立三个模型:计。分析活动建立三个模型:(描述对象、类、层次和关系描述对象、类、层次和关系););(描述对象和系统的行为描述对象和系统的行为););(类似于高层的类似于高层的DFDDFD,描述穿越系,描述穿越系统的信息流统的信息流)。CoadCoad和和YourdonYourdon方法常常被认为是最容易学习的方法常常被认为是最容易学习的OOAOOA方法。建模符号相当简单,其方法。建模符号相当简单,其OOAOOA过程如下:过程如下:(1)(1)使用使用“要找什么要找什么”准则标识对象;准则标识对象;(2)(2)定义对象之间的一般化定义对象之间的一般化/特殊化结构(又称为分类结特殊化结构(又称为分类结构);构);(3)(3)定义对象之间的整体定义对象之间的整体/部分结构(又称为组合结构);部分结构(又称为组合结构);(4)(4)标识主题;标识主题;(5)(5)定义对象的属性及对象之间的实例连接;定义对象的属性及对象之间的实例连接;(6)(6)定义服务及对象之间的消息连接。定义服务及对象之间的消息连接。包含包含“微开发过程微开发过程”和和“宏开发过程宏开发过程”两个两个过程。过程。OOA OOA 宏观开发过程如下:宏观开发过程如下:标识类和对象;标识类和对象;标识类和对象的语义;标识类和对象的语义;标识类和对象间的关系;标识类和对象间的关系;进行一系列精化;进行一系列精化;实现类和对象。实现类和对象。也称为也称为OOSE(OOSE(面向对象软件工程面向对象软件工程),其特点,其特点是特别强调使用是特别强调使用用例用例用以描述用户和用以描述用户和产品或系统间如何交互的场景。产品或系统间如何交互的场景。过程如下:过程如下:标识系统的用户和他们的整体责任标识系统的用户和他们的整体责任构造需求模型构造需求模型构造分析模型构造分析模型面向对象的建模语言很多,目前使用最面向对象的建模语言很多,目前使用最广泛的是统一建模语言广泛的是统一建模语言(UML(UML,Unified Unified Modeling Language)Modeling Language);它将它将BoochBooch、RumbaughRumbaugh和和JacobsonJacobson等各等各自独立的自独立的OOAOOA和和OODOOD方法中最优秀的特色方法中最优秀的特色组合成一个统一的方法。组合成一个统一的方法。UML(Unified Modeling Language)UML(Unified Modeling Language)的概念于的概念于19961996年由面向年由面向对象方法领域的三位著名专家对象方法领域的三位著名专家Grady Grady BoochBooch,James James RumbaughRumbaugh和和IvarIvar Jacobson Jacobson提出的。提出的。19961996年年6 6月和月和1010月分别发布了月分别发布了UML0.9,UML0.91UML0.9,UML0.91。19971997年年1 1月,月,UML1.0UML1.0被提交给对象管理组织被提交给对象管理组织OMGOMG。19971997年年9 9月,提交月,提交UML1.1UML1.1,19971997年年1111月被月被OMGOMG采纳作为基于面向采纳作为基于面向对象技术的标准建模语言。对象技术的标准建模语言。19981998、20002000、20012001、20032003、20052005年分别发布了年分别发布了UML1.2UML1.2、UML1.3UML1.3、UML1.4UML1.4、UML1.5UML1.5、UML2.0UML2.0。20072007年发布了年发布了UML2.1.1UML2.1.1,UML2.1.2UML2.1.2。20092009年发布了年发布了UML2.2UML2.2(1)(1)统一标准统一标准 UMLUML不仅统一了不仅统一了BoochBooch、OMTOMT和和OOSEOOSE等方法中等方法中的基本概念,还吸取了面向对象技术领域中其的基本概念,还吸取了面向对象技术领域中其他流派的长处,其中也包括非他流派的长处,其中也包括非OOOO方法的影响。方法的影响。已经成为已经成为OMGOMG的标准。的标准。(2)(2)面向对象面向对象 UMLUML支持面向对象技术的主要概念,它提供支持面向对象技术的主要概念,它提供了一批基本的表示模型元素的图形和方法,能了一批基本的表示模型元素的图形和方法,能简洁明了地表达面向对象的各种概念和模型元简洁明了地表达面向对象的各种概念和模型元素。素。(3)(3)可视化,表达能力强大可视化,表达能力强大 UML UML是一种图形化语言,用是一种图形化语言,用UMLUML的模型图的模型图形能清晰地表示系统的逻辑模型或实现模形能清晰地表示系统的逻辑模型或实现模型。型。UMLUML还提供了语言的扩展机制,用户还提供了语言的扩展机制,用户可以根据需要增加定义自己的构造型、标可以根据需要增加定义自己的构造型、标记值和约束等。记值和约束等。(4)(4)独立于过程独立于过程 UMLUML是系统建模的语言,不依赖特定的开是系统建模的语言,不依赖特定的开发过程。发过程。(5)(5)容易掌握使用容易掌握使用 UMLUML概念明确,建模表示法简洁明了,概念明确,建模表示法简洁明了,图形结构清晰,容易掌握使用。图形结构清晰,容易掌握使用。(6)(6)与编程语言的关系与编程语言的关系 支持支持UMLUML的一些的一些CASECASE工具(如工具(如RoseRose)可)可以根据以根据 UMLUML所建立的系统模型自动产生所建立的系统模型自动产生JavaJava、C+C+等代码框架。等代码框架。UMLUML符号为开发者或开发工具使用这些符号为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了图形符号和文本语法为系统建模提供了标准。标准。这些图形符号和文字所表达的是应用这些图形符号和文字所表达的是应用级的模型,在语义上它是级的模型,在语义上它是UMLUML元模型的元模型的实例。实例。UMLUML模型由事物、关系和图组成模型由事物、关系和图组成 事物是对模型中最具代表性成分的抽象,在事物是对模型中最具代表性成分的抽象,在UMLUML中,中,可以分为结构事物、行为事物、分组事物和注释事可以分为结构事物、行为事物、分组事物和注释事物物4 4类。类。结构事物是结构事物是UMLUML模型的静态部分,主要模型的静态部分,主要用来描述概念的或物理的元素,包括类、用来描述概念的或物理的元素,包括类、主动类、接口、对象、用例、参与者、主动类、接口、对象、用例、参与者、协作、构件和节点等。协作、构件和节点等。(1 1)类()类(classclass)类用带有类名、属性类用带有类名、属性和操作的矩形框来表示。和操作的矩形框来表示。(2 2)主动类()主动类(active classactive class)主动类的主动类的实例应具有一个或多个进程或线程,能够启实例应具有一个或多个进程或线程,能够启动控制活动。动控制活动。(3 3)接口()接口(interfaceinterface)描述了一个类描述了一个类或构件的一组外部可用的服务(操作)集。或构件的一组外部可用的服务(操作)集。接口定义的是一组操作的描述,而不是操作接口定义的是一组操作的描述,而不是操作的实现。的实现。一般将接口画成从实现它的类或构件引出的一般将接口画成从实现它的类或构件引出的圆圈,接口体现了使用与实现分离的原则。圆圈,接口体现了使用与实现分离的原则。(4 4)对象()对象(objectobject)对象是类的实例,其名字对象是类的实例,其名字下边加下划线,对象的属性值需明确给出。下边加下划线,对象的属性值需明确给出。(5 5)用例()用例(use caseuse case)也称用况,用于表示系也称用况,用于表示系统想要实现的行为,即描述一组动作序列(即场统想要实现的行为,即描述一组动作序列(即场景)。而系统执行这组动作后将产生一个对特定参景)。而系统执行这组动作后将产生一个对特定参与者有价值的结果。与者有价值的结果。(6 6)参与者()参与者(actoractor)也称角色,是指与系统有也称角色,是指与系统有信息交互关系的人、软件系统或硬件设备,在图形信息交互关系的人、软件系统或硬件设备,在图形上用简化的小木头人表示。上用简化的小木头人表示。(7 7)协作()协作(collaborationcollaboration)用例仅描述要实现用例仅描述要实现的行为,不描述这些行为的实现。这种实现用协作的行为,不描述这些行为的实现。这种实现用协作描述。描述。协作定义交互,描述一组角色实体和其他实体如何协作定义交互,描述一组角色实体和其他实体如何通过协同工作来完成一个功能或行为。类可以参与通过协同工作来完成一个功能或行为。类可以参与几个协作。几个协作。(8 8)构件()构件(componentcomponent)也称组件,是系统中物也称组件,是系统中物理的、可替代的部件。它通常是描述一些逻辑元素理的、可替代的部件。它通常是描述一些逻辑元素的物理包。的物理包。(9 9)节点()节点(nodenode)是在运行时存在的物理元素。是在运行时存在的物理元素。它代表一种可计算的资源,通常具有一定的记忆能它代表一种可计算的资源,通常具有一定的记忆能力和处理能力。力和处理能力。行为事物是行为事物是UMLUML模型的动态部分,包括两类:模型的动态部分,包括两类:(1 1)交互()交互(interactioninteraction)交互由在特定的上下交互由在特定的上下文环境中共同完成一定任务的一组对象之间传递的文环境中共同完成一定任务的一组对象之间传递的消息组成。如图所示。交互涉及的元素包括消息、消息组成。如图所示。交互涉及的元素包括消息、动作序列(由一个消息所引起的行为)和链(对象动作序列(由一个消息所引起的行为)和链(对象间的连接)。间的连接)。对象之间的交互对象之间的交互(2 2)状态机()状态机(state machinestate machine)描述了描述了一个对象或一个交互在生存周期内响应事件一个对象或一个交互在生存周期内响应事件所经历的状态序列,单个类或者一组类之间所经历的状态序列,单个类或者一组类之间协作的行为都可以用状态机来描述。协作的行为都可以用状态机来描述。状态机涉及到状态、变迁和活动,其中状态状态机涉及到状态、变迁和活动,其中状态用圆角矩形来表示。用圆角矩形来表示。分组事物是分组事物是UMLUML模型的组织部分。它的作用模型的组织部分。它的作用是为了降低模型复杂性。是为了降低模型复杂性。UMLUML中的分组事物是包(中的分组事物是包(packagepackage)。)。包是把模型元素组织成组的机制,结构事物、包是把模型元素组织成组的机制,结构事物、行为事物甚至其他分组事物都可以放进包内。行为事物甚至其他分组事物都可以放进包内。注释事物是注释事物是UMLUML模型的解释部分,它们用来模型的解释部分,它们用来描述和标注模型的任何元素。描述和标注模型的任何元素。通常可以用注释修饰带有约束或者解释的图。通常可以用注释修饰带有约束或者解释的图。依赖依赖(Dependency)(Dependency)是两个事物之间的语义关是两个事物之间的语义关系,其中一个事物发生变化会影响到另一个系,其中一个事物发生变化会影响到另一个事物的语事物的语 义,它用一个虚线箭头表示。义,它用一个虚线箭头表示。虚线箭头的方向从源事物指向目标事物,表虚线箭头的方向从源事物指向目标事物,表示源事物依赖于目标事物。示源事物依赖于目标事物。关联关联(association)(association)是一种结构关系,它描是一种结构关系,它描述了两个或多个类的实例之间的连接关系,述了两个或多个类的实例之间的连接关系,是一种特殊的依赖。是一种特殊的依赖。关联分为关联分为普通关联普通关联、限定关联限定关联、关联类关联类,以,以及及聚合与复合聚合与复合。普通关联是最常见的关联关系,只要类与类普通关联是最常见的关联关系,只要类与类之间存在连接关系就可以用普通关联表示。之间存在连接关系就可以用普通关联表示。普通关联又分为普通关联又分为二元关联二元关联和和多元关联多元关联。二元关联描述两个类之间的关联,用两个类二元关联描述两个类之间的关联,用两个类之间的一条直线来表示,直线上可写上关联之间的一条直线来表示,直线上可写上关联名。名。多重性多重性(multiplicitymultiplicity):多重性表明在一):多重性表明在一个关联的两端连接的类实例个数的对应关系,个关联的两端连接的类实例个数的对应关系,即一端的类的多少个实例对象可以与另一端即一端的类的多少个实例对象可以与另一端的类的一个实例相关。的类的一个实例相关。如果图中没有明确标出关联的多重性,则默如果图中没有明确标出关联的多重性,则默认的多重性为认的多重性为1 1。角色角色:关联端点上还可以附加角色名,表示:关联端点上还可以附加角色名,表示类的实例在这个关联中扮演的角色。类的实例在这个关联中扮演的角色。UMLUML还还允许一个类与它自身关联。允许一个类与它自身关联。多元关联多元关联:多元关联是指:多元关联是指3 3个或个或3 3个以上类之个以上类之间的关联。间的关联。多元关联由一个菱形,以及由菱形引出的通多元关联由一个菱形,以及由菱形引出的通向各个相关类的直线组成,关联名可标在菱向各个相关类的直线组成,关联名可标在菱形的旁边,在关联的端点也可以标上多重性形的旁边,在关联的端点也可以标上多重性等信息。等信息。限定关联通常用在一对多或多对多的关联关限定关联通常用在一对多或多对多的关联关系中,可以把模型中的多重性从一对多变成系中,可以把模型中的多重性从一对多变成一对一,或将多对多简化成多对一。一对一,或将多对多简化成多对一。在类图中把限定词(在类图中把限定词(qualifierqualifier)放在关联)放在关联关系末端的一个小方框内。关系末端的一个小方框内。在关联关系比较简单的情况下,关联关系的语义用在关联关系比较简单的情况下,关联关系的语义用关联关系的名字来概括。关联关系的名字来概括。但在某些情况下,需要对关联关系的语义做详细的但在某些情况下,需要对关联关系的语义做详细的定义、存储和访问,为此可以建立定义、存储和访问,为此可以建立关联类关联类(association classassociation class),用来描述关联的属性。),用来描述关联的属性。关联中的每个链与关联类的一个实例相联系。关联关联中的每个链与关联类的一个实例相联系。关联类通过一条虚线与关联连接。类通过一条虚线与关联连接。聚合聚合(AggregationAggregation)也称为)也称为聚集聚集,是一种,是一种特殊的关联。它描述了整体和部分之间的结特殊的关联。它描述了整体和部分之间的结构关系。构关系。两种特殊的聚合关系:两种特殊的聚合关系:共享聚合共享聚合(shared shared aggregationaggregation)和)和复合聚合复合聚合(composition composition aggregationaggregation)。)。如果在聚合关系中处于部分方的实例可同时如果在聚合关系中处于部分方的实例可同时参与多个处于整体方实例的构成,则该聚合参与多个处于整体方实例的构成,则该聚合称为称为共享聚合共享聚合。如果部分类完全隶属于整体类,部分类需要如果部分类完全隶属于整体类,部分类需要与整体类共存,一旦整体类不存在了,则部与整体类共存,一旦整体类不存在了,则部分类也会随之消失,或失去存在价值,则这分类也会随之消失,或失去存在价值,则这种聚合称为种聚合称为复合聚合复合聚合。导航导航(navigabilitynavigability)是关联关系的一种特)是关联关系的一种特性,它通过在关联的一个端点上加箭头来表性,它通过在关联的一个端点上加箭头来表示导航的方向。示导航的方向。泛化泛化(generalization)(generalization)关系就是一般类和特关系就是一般类和特殊类之间的继承关系。殊类之间的继承关系。在在UMLUML中,中,一般类一般类亦称亦称泛化类泛化类,特殊类特殊类亦称亦称特化类特化类。泛化针对类型而不针对实例,因为一个类可泛化针对类型而不针对实例,因为一个类可以继承另一个类,但一个对象不能继承另一以继承另一个类,但一个对象不能继承另一个对象。个对象。泛化可进一步划分成泛化可进一步划分成普通泛化普通泛化和和受限泛化受限泛化两两类。类。普通泛化与前面讲过的继承基本相同。但在普通泛化与前面讲过的继承基本相同。但在泛化关系中常遇到泛化关系中常遇到抽象类抽象类。一般称没有具体对象的类为抽象类。抽象类一般称没有具体对象的类为抽象类。抽象类通常作为父类,用于描述其他类(子类)的通常作为父类,用于描述其他类(子类)的公共属性和行为。公共属性和行为。普通泛化可以分为多重继承和单继承。普通泛化可以分为多重继承和单继承。多重多重继承继承是指一个子类可同时继承多个上层父类。是指一个子类可同时继承多个上层父类。受限泛化关系是指泛化具有约束条件。受限泛化关系是指泛化具有约束条件。一般有一般有4 4种约束:种约束:交叠交叠(overlappingoverlapping)、)、不不相交相交(disjointdisjoint)、)、完全完全(completecomplete)和)和不不完全完全(incomplateincomplate)。)。实现实现(implement)(implement)是泛化关系和依赖关系的是泛化关系和依赖关系的结合,也是类之间的语义关系,通常在以下结合,也是类之间的语义关系,通常在以下两种情况出现实现关系:两种情况出现实现关系:(1)(1)接口和实现它们的类或构件之间;接口和实现它们的类或构件之间;(2)(2)用例和实现它们的协作之间。用例和实现它们的协作之间。4.2.4 UML的图用况图:需求获取,测试依据用况图:需求获取,测试依据 类类 图:图:类以及类之间的相互关系类以及类之间的相互关系 对象图:对象以及对象之间的相互关系对象图:对象以及对象之间的相互关系构件图:构件及其相互依赖关系构件图:构件及其相互依赖关系部署图:构件在各节点上的部署部署图:构件在各节点上的部署时序图:强调时间顺序的交互时序图:强调时间顺序的交互协作图:强调对象协作的交互图协作图:强调对象协作的交互图状态图:类所经历的各种状态状态图:类所经历的各种状态活动图:对工作流程建模活动图:对工作流程建模 67参与者(参与者(ActorActor)参与者是与系统交互的外部实体。参与者是与系统交互的外部实体。参与者既可以是使用该系统的用户,也可参与者既可以是使用该系统的用户,也可以是与系统交互的其他外部系统、硬件设以是与系统交互的其他外部系统、硬件设备或组织机构。备或组织机构。68参与者的泛化关系参与者的泛化关系 参与者之间可以存在泛化的关系,类似的参与者之间可以存在泛化的关系,类似的参与者可以利用泛化关系组成一般与特殊参与者可以利用泛化关系组成一般与特殊的层次结构。的层次结构。69用况(用况(Use CaseUse Case)用况是从用户角度描述系统的行为,它将系统的用况是从用户角度描述系统的行为,它将系统的一个功能描述成一系列事件,这些事件最终对参一个功能描述成一系列事件,这些事件最终对参与者产生有价值的可观测结果。与者产生有价值的可观测结果。用况可以促进与用户沟通,理解正确的需求,同用况可以促进与用户沟通,理解正确的需求,同时也可以用来划分系统与外部实体的界限。时也可以用来划分系统与外部实体的界限。用况之间的关系用况之间的关系 包含关系(包含关系(includeinclude)扩展关系(扩展关系(extendextend)泛化关系(泛化关系(generalizationgeneralization)70包含关系(包含关系(includeinclude)包含关系是指一个基本用例的行为包含了另一个包含关系是指一个基本用例的行为包含了另一个用例的行为用例的行为 包含关系是对用例之间的共性部分进行建模包含关系是对用例之间的共性部分进行建模UML UML 符号符号 71扩展关系(扩展关系(extendextend)在用例执行过程中,可能会出现异常行为,也可在用例执行过程中,可能会出现异常行为,也可能会在不同的流程分支中选择执行,这时可以将能会在不同的流程分支中选择执行,这时可以将异常行为或可选分支抽象成一个单独的扩展用例,异常行为或可选分支抽象成一个单独的扩展用例,它与主用例之间形成扩展关系。它与主用例之间形成扩展关系。UML UML 符号符号 72泛化关系(泛化关系(generalizationgeneralization)用例之间的泛化关系是描述用例之间一般与特殊用例之间的泛化关系是描述用例之间一般与特殊关系的,不同的子用例代表了父用例的不同实现关系的,不同的子用例代表了父用例的不同实现方法方法。UML UML 符号符号 73三种关系的比较三种关系的比较 包含关系包含关系 如果需要重复处理两个或多个用例时,可以考虑使用包含关如果需要重复处理两个或多个用例时,可以考虑使用包含关系,实现一个基本用例对另一个用例的引用。系,实现一个基本用例对另一个用例的引用。被包含的用例从不独立存在,仅作为基本用例的一部分出现。被包含的用例从不独立存在,仅作为基本用例的一部分出现。扩展关系扩展关系 当描述正常行为的变型,而且希望采用更多的控制方式时,当描述正常行为的变型,而且希望采用更多的控制方式时,可以在基本用例中设置扩展点,使用扩展关系。可以在基本用例中设置扩展点,使用扩展关系。在扩展关系中,基本用例可以独立存在,当它执行时扩展用在扩展关系中,基本用例可以独立存在,当它执行时扩展用例可以执行也可以不执行。例可以执行也可以不执行。泛化关系泛化关系 当处理正常行为的变型,而且只是偶尔描述时,可以考虑只当处理正常行为的变型,而且只是偶尔描述时,可以考虑只用泛化关系。用泛化关系。74用况描述用况描述 用况采用自然语言来描述参与者与系统进行交互用况采用自然语言来描述参与者与系统进行交互时双方的行为,而不追求形式化的语言表达。时双方的行为,而不追求形式化的语言表达。用况描述的主要内容用况描述的主要内容 用况的目的用况的目的 用况如何被启动用况如何被启动 参与者与用况之间的事件流:基本流、可选流参与者与用况之间的事件流:基本流、可选流 前置条件前置条件 后置条件后置条件 扩展点扩展点 75说明说明 应该只描写应该只描写“可观测的可观测的”结果结果 应该使用主动语句应该使用主动语句 句子的主语应该是参与者或者系统句子的主语应该是参与者或者系统 参与者参与者 系统系统 参与者参与者 系统系统 不要涉及系统的实现细节不要涉及系统的实现细节 不要涉及界面的细节不要涉及界面的细节 76下面的用例描述有问题吗?下面的用例描述有问题吗?举例举例1 1:1.1.系统显示输入用户名和密码的界面。系统显示输入用户名和密码的界面。2.2.会员输入用户名和密码,点击会员输入用户名和密码,点击“确定确定”。3.3.如果用户名和密码正确,系统根据用户名从数据如果用户名和密码正确,系统根据用户名从数据库的库的“会员会员”表中查询该会员信息,系统显示会表中查询该会员信息,系统显示会员定制界面。员定制界面。4.4.如果用户名不存在,如果用户名不存在,举例举例2 2:系统从用户获得用户名和密码。系统从用户获得用户名和密码。用户名和密码被验证。用户名和密码被验证。77类图(类图(Class DiagramClass Diagram)类图描述系统的静态结构,表示系统中的类、类类图描述系统的静态结构,表示系统中的类、类与类之间的关系以及类的属性和操作。与类之间的关系以及类的属性和操作。在不同的开发阶段,类图具有不同的抽象层在不同的开发阶段,类图具有不同的抽象层次次 需求阶段:概念层类图描述应用领域中的概念,需求阶段:概念层类图描述应用领域中的概念,这些概念和类有很自然的联系,但两者并没有直这些概念和类有很自然的联系,但两者并没有直接的映射关系。接的映射关系。设计阶段:说明层类图描述软件的接口部分,而设计阶段:说明层类图描述软件的接口部分,而不是软件的实现部分。不是软件的实现部分。实现阶段:实现层类图才真正考虑类的实现问题,实现阶段:实现层类图才真正考虑类的实现问题,揭示软件实现的细节。揭示软件实现的细节。78 79对象图(对象图(Object DiagramObject Diagram)对象图表示一组对象和它们之间的联系,对象图表示一组对象和它们之间的联系,它是一个系统的详细状态在某一时刻的快它是一个系统的详细状态在某一时刻的快照。照。说明说明 对象图实质上是类图的实例。对象图实质上是类图的实例。对象图常用于表示复杂的类图的一个实例。对象图常用于表示复杂的类图的一个实例。对象图的使用相当有限,主要用于表达数对象图的使用相当有限,主要用于表达数据结构的示例,以及了解系统在某个特定据结构的示例,以及了解系统在某个特定时刻的具体情况。时刻的具体情况。80 81时序图(时序图(Sequence DiagramSequence Diagram)时序图描述了一组交互对象间的交互方式,它表示时序图描述了一组交互对象间的交互方式,它表示完成某项行为的对象和这些对象之间传递消息的时完成某项行为的对象和这些对象之间传递消息的时间顺序。间顺序。一般情况下,我们使用时序图描述一个用况的事件一般情况下,我们使用时序图描述一个用况的事件流,标识参与这个用况的对象,并以服务的形式将流,标识参与这个用况的对象,并以服务的形式将用况的行为分配到对象上。用况的行为分配到对象上。时序图的组成时序图的组成 对象(参与者实例也是对象)对象(参与者实例也是对象)生命线:表示对象存在的时间生命线:表示对象存在的时间 控制焦点:表示对象执行一个所经历的时间段控制焦点:表示对象执行一个所经历的时间段 消息:表示对象之间的通信消息:表示对象之间的通信82 83 84协作图(协作图(Collaboration DiagramCollaboration Diagram)协作图反映收发消息的对象的结构组织,用于描述系统协作图反映收发消息的对象的结构组织,用于描述系统的行为是如何由系统的成分协作实现的。的行为是如何由系统的成分协作实现的。时序图和协作图是同构的,即两者之间可以相互转换。时序图和协作图是同构的,即两者之间可以相互转换。85 86状态图(状态图(StatechartDiagramStatechartDiagram)状态图是由状态机扩展而来的,用来描述对象所经过的状态图是由状态机扩展而来的,用来描述对象所经过的对外部事件做出相应的状态序列。对外部事件做出相应的状态序列。状态图侧重于描述某个对象在其生命周期中的动态行为,状态图侧重于描述某个对象在其生命周期中的动态行为,包括对象在各个不同的状态间的跳转以及触发这些跳转包括对象在各个不同的状态间的跳转以及触发这些跳转的外部事件,即从状态到状态的控制流。的外部事件,即从状态到状态的控制流。87状态(状态(StateState)状态是指在对象生命期中的一个条件或状况,对状态是指在对象生命期中的一个条件或状况,对象在此期间将满足某些条件、执行某些活动或等象在此期间将满足某些条件、执行某些活动或等待某些事件。待某些事件。在状态图中定义的状态有:初态、终态、中间状在状态图中定义的状态有:初态、终态、中间状态、组合状态、历史状态等。态、组合状态、历史状态等。一个状态图只能有一个初态,而终态可以有多个。一个状态图只能有一个初态,而终态可以有多个。事件(事件(EventEvent)事件是对一个在时间和空间上占有一定位置的有事件是对一个在时间和空间上占有一定位置的有意义事情的规格说明,在状态机的语境中,事件意义事情的规格说明,在状态机的语境中,事件应触发一个状态转换。应触发一个状态转换。88转换(转换(TransitionTransition)转换表示两个状态之间的关系,它指明对转换表示两个状态之间的关系,它指明对象在第一个状态中执行一定的动作,并当象在第一个状态中执行一定的动作,并当特定事件发生或特定条件满足时进入第二特定事件发生或特定条件满足时进入第二个状态。个状态。活动(活动(ActivityActivity)活动是状态机中进行的非原子执行单元。活动是状态机中进行的非原子执行单元。动作(动作(ActionAction)动作是由引起模型状态改变或值的返回的动作是由引起模型状态改变或值的返回的可执行原子计算所组成的。可执行原子计算所组成的。89 90活动图(活动图(Activity DiagramActivity Diagram)活动图反映系统中从一个活动到另一个活活动图反映系统中从一个活动到另一个活动的流程,强调对象间的控制流程。动的流程,强调对象间的控制流程。活动图的组成活动图的组成 活动(活动(ActivityActivity)转移(转移(TransitionTransition)泳道(泳道(SwimlaneSwimlane)分支(分支(BranchBranch)分叉和汇合(分叉和汇合(Fork and JoinFork and Join)对象流(对象流(Object StreamObject Stream)91 92活动图和状态图描述的重点不同活动图和状态图描述的重点不同 活动图描述的是从活动到活动的控制流,而状态图活动图描述的是从活动到活动的控制流,而状态图描述的是对象的状态及状态之间的转移。描述的是对象的状态及状态之间的转移。活动图和状态图使用的场合不同活动图和状态图使用的场合不同 对于以下几种情况可以使用活动图对于以下几种情况可以使用活动图 分析用例分析用例 理解涉及多个用况的工作流理解涉及多个用况的工作流 处理多线程应用处理多线程应用 对于下面的情况要使用状态图对于下面的情况要使用状态图 显示一个对象在其生命周期内的行为显示一个对象在其生命周期内的行为 说明:如果要显示多个对象之间的交互,可用时说明:如果要显示多个对象之间的交互,可用时序图或协作图序图或协作图 93构件图(构件图(Component DiagramComponent Diagram)构件图描述组件以及它们之间的关系,用于表示构件图描述组件以及它们之间的关系,用于表示系统的静态实现视图系统的静态实现视图 94部署图(部署图(Deployment DiagramDeployment Diagram)部署图反映了系统中软件和硬件的物理架构,表部署图反映了系统中软件和硬件的物理架构,表示系统运行时的处理节点以及节点中组件的配置。示系统运行时的处理节点以及节点中组件的配置。95对象约束语言对象约束语言 对象约束语言(对象约束语言(OCLOCL,Object Constraint Object Constraint LanguageLanguage)是一种形式语言,用于表示施加于模)是一种形式语言,用于表示施加于模型元素上的约束。型元素上的约束。96Rational RoseRational Rose http:/ VisioMicrosoft Visio http:/ 97参考书:1、面向对象分析与设计 麻志毅 机械工业出版社2、UML基础、案例与应用 Joseph Schmuller 人民邮电出版社对模型中对模型中的所有元的所有元素进行详素进行详细说明。细说明。一幅交互图表现完成某一项特定功能的一一幅交互图表现完成某一项特定功能的一组对象之间的详细交互;一辐状态图描述组对象之间的详细交互;一辐状态图描述了一个对象的状态变迁;活动图描述了一了一个对象的状态变迁;活动图描述了一个服务的流程或业务流程。个服务的流程或业务流程。关系层关系层特征层特征层对象层对象层基本模型基本模型(类图类图)需求模型需求模型用况图用况图辅助模型辅助模型交互图交互图活动图活动图状态图状态图包图包图模型规约模型规约OOAOOA模型模型给出所有与问题给出所有与问题域和系统责任有域和系统责任有关的对象,用对关的对象,用对象类表示象类表示定义每个对定义每个对象类的属性象类的属性与服务与服务通过已定义的通过已定义的关系描述对象关系描述对象类之间的关系类之间的关系对关系对关系密切的密切的元素打元素打包,帮包,帮助理解助理解系统模系统模型。型。OOAOOA过程过程定义用况定义用况*(辅助模型,可选)(辅助模型,可选)用用况对用户需求进行规范化描述。用用况对用户需求进行规范化描述。建立详细说明建立详细说明对模型中的成分对模型中的成分进行规范的定义进行规范的定义和文字说明。可和文字说明。可以集中进行,也以集中进行,也可分散在各个活可分散在各个活动中。动中。建立交互图、状态图和活动图等建立交互图、状态图和活动图等(辅助模型,可选)(辅助模型,可选)原型开发(可选)原型开发(可选)结合其他活动结合其他活动反复进行反复进行建立类图(基本建立类图(基本模型)模型)*发现对象、定发现对象、定义对象类义对象类*识别对象的内识别对象的内部特征部特征*识别对象的外识别对象的外部关系部关系问题的提出:在系统尚未存在时,如何描绘用户需要一个什么样的问题的提出:在系统尚未存在时,如何描绘用户需要一个什么样的系统?如何规范地定义用户需求?系统?如何规范地定义用户需求?考虑问题的思路:把系统看作一个黑箱,看它对外部的客观世界发考虑问题的思路:把系统看作一个黑箱,看它对外部的客观世界发挥什么作用,描述它外部可见的行为。挥什么作用,描述它外部可见的行为。系统是由一条系统是由一条边界包围起来边界包围起来的未知空间的未知空间只通过有限的只通过有限的接口与外部交接口与外部交互互系统边界以外系统边界以外是与系统进行是与系统进行交互的参与者交互的参与者把内外交互情况描把内外交互情况描述清楚,就确切地述清楚,就确切地定义了系统的需求定义了系统的需求系统边界系统边界参与者参与者用况用况用况的关系用况的关系 包含包含 扩展扩展 泛化泛化用况图用况图 102系统边界系统边界系统边界:系统边界:一个系统所包含的所有系统成分与系统以外各种事物一个系统所包含的所有系统成分与系统以外各种事物的分界线。的分界线。参与者参与者(人员人员)参与者参与者(设备设备)参与者参与者(外系统外系统)参与者:参与者:在系在系统边界以外,统边界以外,与系统进行交与系统进行交互的事物互的事物人员、设备、人员、设备、外系统外系统系统边界系统边界现实世界中的事物与系统的关系包括如下几种情况:现实世界中的事物与系统的关系包括如下几种情况:某些事物位于系统边界内,作为系统成分。某些事物位于系统边界内,作为系统成分。某些事物位于系统边界外,作为参与者。某些事物位于系统边界外,作为参与者。某些事物可能既有一个对象作为其抽象描述,而本身(作为现某些事物可能既有一个对象作为其抽象描述,而本身(作为现实世界中的事物)又是在系统边界以外与系统进行交互的参与者。实世界中的事物)又是在系统边界以外与系统进行交互的参与者。某些事物即使属于问题域,也与系统责任没有什么关系。某些事物即使属于问题域,也与系统责任没有什么关系。认识清楚上述事物之间的关系,也就划分出了系统边界。认识清楚上述事物之间的关系,也就划分出了系统边界。简言之,参与者是在系统之外的与系统进行交互的任何事物。一个参与者参与者定义了用况的使用者在与这些用况交互时所扮演的一组功能高内聚的角色。参与者是与系统交互的任何事务。收款收款检查检查参与者可以向系统参与者可以向系统发出发出请求请求参与者回复系统参与者回复系统的响应的响应参与者和系统之间可参与者和系统之间可能存在着复杂的对话能存在着复杂的对话 一个参与者的一个实例,要以一种特定的方式与系统一个参与者的一个实例,要以一种特定的方式与系统进行交互。进行交互。如果一组参与者具有共同的性质,可以把这些性质抽取出来如果一组参与者具有共同的性质,可以把这些性质抽取出来放在另一个参与者中,它们再从中继承,把这种关系称为参与者放在另一个参与者中,它们再从中继承,把这种关系称为参与者之间的泛化关系。之间的泛化关系。A 从参与者从参与者A
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!