《面向对象开发的分析与设计.ppt》由会员分享,可在线阅读,更多相关《面向对象开发的分析与设计.ppt(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第6章章面向对象开发的面向对象开发的分析与设计分析与设计虽然结构化程序设计方法具有很多优点,但它仍虽然结构化程序设计方法具有很多优点,但它仍是一种面向过程的程序设计方法。它把数据和处是一种面向过程的程序设计方法。它把数据和处理数据的过程分离为相互独立的实体,当数据结理数据的过程分离为相互独立的实体,当数据结构改变时,所有相关的处理过程都要进行相应的构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。外的开销,程序的可重用性差。为了改进这种情况,在为了改进这种情况,在20世纪世纪80年代,就开
2、始了年代,就开始了面向对象方法的研究。面向对象方法作为一种新面向对象方法的研究。面向对象方法作为一种新型的独具优越性的新方法正引起全世界越来越广型的独具优越性的新方法正引起全世界越来越广泛的关注和高度的重视,是当前计算机界关心的泛的关注和高度的重视,是当前计算机界关心的重点。重点。6.1面向对象方法简介面向对象方法简介6.1.1面向对象的基本概念与特征面向对象的基本概念与特征1面向对象的基本概念:面向对象的基本概念:1)对象)对象对象是结构的基本单位,是要研究的任何事物。对象是结构的基本单位,是要研究的任何事物。从一个学生到一所学校或极其复杂的装置都可看从一个学生到一所学校或极其复杂的装置都可
3、看作对象,它不仅能表示有形的实体,也能表示无作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由一组形的(抽象的)规则、计划或事件。对象由一组属性和一组操作构成。属性是用来描述对象静态属性和一组操作构成。属性是用来描述对象静态特征的数据项,行为是用来描述对象动态特征的特征的数据项,行为是用来描述对象动态特征的操作序列。操作序列。2)类类类是对一组有相同属性和相同操作的对象类是对一组有相同属性和相同操作的对象的定义,一个类所包含的操作和属性描述的定义,一个类所包含的操作和属性描述一组对象的共同属性和行为。类是在对象一组对象的共同属性和行为。类是在对象之上的抽象,对象则
4、是类的具体化,是类之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,的实例。类可有其子类,也可有其它类,形成类层次结构。形成类层次结构。3)消息消息消息是对象之间进行通信的一种规格说明。消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、一般它由三部分组成:接收消息的对象、消息名及实际变元。消息名及实际变元。6.1.1面向对象的基本概念与特征面向对象的基本概念与特征2面向对象主要特征:面向对象主要特征:1)封装性)封装性封装是一种信息隐蔽技术,它体现在类的说明,是对象的封装是一种信息隐蔽技术,它体现在类的说明,是对象的重要特性。封装使数据和加工该数据
5、的方法(函数)封装重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象的使用者分开,使用者不必知晓行为实象的设计者和对象的使用者分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息
6、来访问该对象。现的细节,只须用设计者提供的消息来访问该对象。2)继承)继承继承是面向对象技术能够提高软件开发效率的重继承是面向对象技术能够提高软件开发效率的重要原因之一,其定义是:特殊类的对象拥有其一要原因之一,其定义是:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的般类的全部属性与服务,称作特殊类对一般类的继承。继承。继承分为单继承(一个子类只有一个父类)和多继承分为单继承(一个子类只有一个父类)和多重继承(一个类有多个父类)。类的对象是各自重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类的对象中数据、封闭的,如果没继承性机制,则类的对象中数据、方法就
7、会出现大量重复。继承不仅支持系统的可方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。重用性,而且还促进系统的可扩充性。3)多态性)多态性同一消息为不同的对象接受时可产生完全不同的同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,因此,同一消息即给接受消息的对象自行决定,因此,同一消息即可调用不同的方法。多态性的实现受到继承性的可调用不同的方法。多态性的实现受到继承性的支持,利用类继承
8、的层次关系,把具有通用功能支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同这些低层次上生成的对象就能给通用消息以不同的响应。在面向对象编程语言中可通过在派生类的响应。在面向对象编程语言中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)中重定义基类函数(定义为重载函数或虚函数)来实现多态性。来实现多态性。6.1.2面向对象的基本思想面向对象的基本思想面向对象方法的关键在于加入了类及其继承
9、性,面向对象方法的关键在于加入了类及其继承性,用类表示通用特性,子类继承父类的特性,并可用类表示通用特性,子类继承父类的特性,并可加入新的特性。对象以类为样板被创建。所以在加入新的特性。对象以类为样板被创建。所以在面向对象方法中,首要的任务是决定所需要的类,面向对象方法中,首要的任务是决定所需要的类,每个类应设置足够的操作,并利用继承机制来共每个类应设置足够的操作,并利用继承机制来共享共同的特性。享共同的特性。面向对象方法主要有以下几个要点:面向对象方法主要有以下几个要点:1客观世界是由各种客观世界是由各种“对象对象”所组成的所组成的任何事物都是对象,每一个对象都有自己的运动任何事物都是对象,
10、每一个对象都有自己的运动规律和内部状态,每一个对象都属于某个对象规律和内部状态,每一个对象都属于某个对象“类类”,都是该对象类的一个元素。复杂的对象可,都是该对象类的一个元素。复杂的对象可以是由相对比较简单的各种对象以某种方式而构以是由相对比较简单的各种对象以某种方式而构成的。不同对象的组合及相互作用就构成了所要成的。不同对象的组合及相互作用就构成了所要研究、分析和构造的客观系统。研究、分析和构造的客观系统。2对象间具有共同属性通过类比,发现对象间的相似性,这就是通过类比,发现对象间的相似性,这就是构成对象类的依据。在构成对象类的依据。在“类类”、“父类父类”、“子类子类”的概念构成对象类的层
11、次关系时,的概念构成对象类的层次关系时,若不加特殊说明,则处在下一层次的对象若不加特殊说明,则处在下一层次的对象可自然地继承位于上一层次的对象的属性。可自然地继承位于上一层次的对象的属性。3通过定义一组通过定义一组“操作操作”来说明该对象的来说明该对象的功能功能对象间的相互联系是通过传递对象间的相互联系是通过传递“消息消息”来来完成的,消息就是通知对象去完成一个允完成的,消息就是通知对象去完成一个允许作用于该对象的操作,至于该对象将如许作用于该对象的操作,至于该对象将如何完成这个操作的细节,则是封装在相应何完成这个操作的细节,则是封装在相应的对象类的定义中的,细节对于外界是隐的对象类的定义中的
12、,细节对于外界是隐蔽的。蔽的。6.1.3面向对象的开发过程面向对象的开发过程1面向对象分析的基本步骤面向对象分析的基本步骤分析强调的是对问题和需求的调查研究,而不是分析强调的是对问题和需求的调查研究,而不是解决方案。在面向对象分析过程,强调的是在问解决方案。在面向对象分析过程,强调的是在问题领域内发现和描述对象或概念。在用面向对象题领域内发现和描述对象或概念。在用面向对象方法具体地分析一个事物时,大致上遵循如下五方法具体地分析一个事物时,大致上遵循如下五个基本步骤:个基本步骤:1)确定对象和类。这里所说的对象是对数据及)确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和
13、处理现其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。类是多个对象实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。个类中建立一个新对象的描述。2)确定结构。结构是指问题域的复杂性和)确定结构。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化连接关系。类成员结构反映了泛化-特化关特化关系,整体系,整体-部分结构反映整体和局部之间的部分结构反映整体和局部之间的关系。关系。3)确定主题。主题是指事物的总体概貌和)确定主题。主题是指事物的总体概貌和总体分析模型。总体分
14、析模型。6.1.3面向对象的开发过程面向对象的开发过程4)确定属性。属性就是数据元素,可用来描述)确定属性。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对对象或分类结构的实例,可在图中给出,并在对象的存储中指定。象的存储中指定。5)确定方法。方法是在收到消息后必须进行的一)确定方法。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存些处理方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来储中指定。对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含增加、修改、删除和选择一个方法本身都是隐含的(虽然它
15、们是要在对象的存储中定义的,但并的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。不在图上给出),而有些则是显示的。6.1.3面向对象的开发过程面向对象的开发过程2面向对象设计方法面向对象设计方法设计强调的是满足需求的概念上的解决方案,而设计强调的是满足需求的概念上的解决方案,而不是实现。在面向对象设计过程中,强调的是定不是实现。在面向对象设计过程中,强调的是定义软件对象和这些软件对象如何协作来满足需求。义软件对象和这些软件对象如何协作来满足需求。面向对象的设计方法是面向对象方法中一个中间面向对象的设计方法是面向对象方法中一个中间过渡环节。其主要作用是对面向对象分析的
16、结果过渡环节。其主要作用是对面向对象分析的结果作进一步的规范化整理,以便能够被面向对象编作进一步的规范化整理,以便能够被面向对象编程直接接受。在面向对象设计的过程中,要展开程直接接受。在面向对象设计的过程中,要展开的主要有如下几项工作。的主要有如下几项工作。1)对象定义规格的求精过程)对象定义规格的求精过程对于对于OOA所抽象出来的对象所抽象出来的对象类以及汇集的分析类以及汇集的分析文档,文档,OOD需要有一个根据设计要求整理和求精需要有一个根据设计要求整理和求精的过程,使之更能符合的过程,使之更能符合OOP的需要。这个整理和的需要。这个整理和求精过程主要有两个方面:一是要根据面向对象求精过程
17、主要有两个方面:一是要根据面向对象的概念模型整理分析所确定的对象结构、属性、的概念模型整理分析所确定的对象结构、属性、方法等内容,改正错误的内容,删去不必要和重方法等内容,改正错误的内容,删去不必要和重复的内容等。二是进行分类整理,以便于下一步复的内容等。二是进行分类整理,以便于下一步数据库设计和程序处理模块设计的需要。整理的数据库设计和程序处理模块设计的需要。整理的方法主要是进行归类,对类一对象、属性、方法方法主要是进行归类,对类一对象、属性、方法和结构、主题进行归类。和结构、主题进行归类。2)数据模型和数据库设计)数据模型和数据库设计数据模型的设计需要确定类数据模型的设计需要确定类对象属性
18、的对象属性的内容、消息连接的方式、系统访问、数据内容、消息连接的方式、系统访问、数据模型的方法等。最后每个对象实例的数据模型的方法等。最后每个对象实例的数据都必须落实到面向对象的库结构模型中。都必须落实到面向对象的库结构模型中。3)优化)优化OOD的优化设计过程是从另一个角度对分析结果的优化设计过程是从另一个角度对分析结果和处理业务过程的整理归纳,优化包括对象和结和处理业务过程的整理归纳,优化包括对象和结构的优化、抽象、集成。构的优化、抽象、集成。对象和结构的模块化表示对象和结构的模块化表示OOD提供了一种范式,提供了一种范式,这种范式支持对类和结构的模块化。这种模块符这种范式支持对类和结构的
19、模块化。这种模块符合一般模块化所要求的所有特点,如信息隐蔽性合一般模块化所要求的所有特点,如信息隐蔽性好,内部聚合度强和模块之间耦合度弱等。好,内部聚合度强和模块之间耦合度弱等。集成化使得单个构件有机地结合在一起,相互支集成化使得单个构件有机地结合在一起,相互支持。持。3.面向对象的实现面向对象的实现即指软件功能的编码实现,它包括:每个即指软件功能的编码实现,它包括:每个对象的内部功能的实现;确立对象哪一些对象的内部功能的实现;确立对象哪一些处理能力应在哪些类中进行描述;确定并处理能力应在哪些类中进行描述;确定并实现系统的界面、输出的形式及其它控制实现系统的界面、输出的形式及其它控制机理等,总
20、之是实现在机理等,总之是实现在OOD阶段所规定的阶段所规定的各个对象所应完成的任务。各个对象所应完成的任务。6.1.4面向对象建模语言与工具面向对象建模语言与工具1RationalRoseRationalRose是由美国的是由美国的Rational公司开发的、公司开发的、面向对象的可视化建模工具。利用这个工具,可面向对象的可视化建模工具。利用这个工具,可以建立用以建立用UML描述的软件系统模型,而且可以自描述的软件系统模型,而且可以自动生成和维护动生成和维护C+、Java、VisualBasic和和Oracle等语言和系统的代码。等语言和系统的代码。Rose提供了一个叫提供了一个叫“DataM
21、odeler”的工具,利的工具,利用它可用将对象模型转换成数据模型,也可以将用它可用将对象模型转换成数据模型,也可以将现有的数据模型转换成对象模型,从而实现两者现有的数据模型转换成对象模型,从而实现两者之间的同步。之间的同步。2PowerDesignerPowerDesigner系列产品提供了一个完整的建模解决方案,系列产品提供了一个完整的建模解决方案,业务或系统分析人员,设计人员,数据库管理员和开发人业务或系统分析人员,设计人员,数据库管理员和开发人员可以对其裁剪以满足他们的特定的需要;而其模块化的员可以对其裁剪以满足他们的特定的需要;而其模块化的结构为购买和扩展提供了极大的灵活性,从而使开
22、发单位结构为购买和扩展提供了极大的灵活性,从而使开发单位可以根据其项目的规模和范围来使用他们所需要的工具。可以根据其项目的规模和范围来使用他们所需要的工具。PowerDesigner灵活的分析和设计特性允许使用一种结构灵活的分析和设计特性允许使用一种结构化的方法有效地创建数据库或数据仓库,而不要求严格遵化的方法有效地创建数据库或数据仓库,而不要求严格遵循一个特定的方法学。循一个特定的方法学。PowerDesigner提供了直观的符号提供了直观的符号表示使数据库的创建更加容易,并使项目组内的交流和通表示使数据库的创建更加容易,并使项目组内的交流和通讯标准化,同时能更加简单地向非技术人员展示数据库
23、和讯标准化,同时能更加简单地向非技术人员展示数据库和应用的设计。应用的设计。6.1.4面向对象建模语言与工具面向对象建模语言与工具3VisioVISIO原来仅仅是一种画图工具,能够用来描述各种图形原来仅仅是一种画图工具,能够用来描述各种图形(从电路图到房屋结构图),也是到(从电路图到房屋结构图),也是到VISIO2000才开始引才开始引进软件分析设计功能到代码生成的全部功能,它可以说是进软件分析设计功能到代码生成的全部功能,它可以说是目前最能够用图形方式来表达各种商业图形用途的工具目前最能够用图形方式来表达各种商业图形用途的工具(对软件开发中的(对软件开发中的UML支持仅仅是其中的一部分)。它
24、跟支持仅仅是其中的一部分)。它跟微软的微软的office产品的能够很好兼容。能够把图形直接复制产品的能够很好兼容。能够把图形直接复制或者内嵌到或者内嵌到WORD的文档中。但是对于代码的生成更多是的文档中。但是对于代码的生成更多是支持微软的产品如支持微软的产品如VB,VC+,MSSQLServer等,所以它等,所以它可以说用于图形语义的描述比较方便,但是用于软件开发可以说用于图形语义的描述比较方便,但是用于软件开发过程的迭代开发功能还有待加强。过程的迭代开发功能还有待加强。6.1.4面向对象建模语言与工具面向对象建模语言与工具6.1.5面向对象开发方法优缺点面向对象开发方法优缺点针对前面所述的面
25、向对象开发方法,可以发现它的优缺点针对前面所述的面向对象开发方法,可以发现它的优缺点如下:如下:1优点优点直观、方便,反映系统结构完整,模型一致性好,易直观、方便,反映系统结构完整,模型一致性好,易于完成开发系统。于完成开发系统。1)是一种全新的系统分析设计方法(对象、类、结构属是一种全新的系统分析设计方法(对象、类、结构属性、方法)。性、方法)。2)适用于各类信息系统的开发。适用于各类信息系统的开发。3)实现了对客观世界描述到软件结构的直接转换实现了对客观世界描述到软件结构的直接转换,大大,大大减少后续软件开发量。减少后续软件开发量。4)开发工作的重用性、继承性高,降低重复工作量。开发工作的
26、重用性、继承性高,降低重复工作量。5)缩短了开发周期。缩短了开发周期。2缺点缺点对系统动态特征表述不充分(主要是整体动态特征),且对系统动态特征表述不充分(主要是整体动态特征),且反映系统整个功能特征的能力较差。反映系统整个功能特征的能力较差。1)需要一定的软件支持环境。需要一定的软件支持环境。2)只能在现有业务基础上进行分类整理,不能从科学管只能在现有业务基础上进行分类整理,不能从科学管理角度进行理顺和优化。理角度进行理顺和优化。3)初学者不易接受、难学。初学者不易接受、难学。适用场所:可以普遍适用于各类信息系统开发,但是它不适用场所:可以普遍适用于各类信息系统开发,但是它不能涉足系统分析以
27、前的开发环节。能涉足系统分析以前的开发环节。6.1.5面向对象开发方法优缺点面向对象开发方法优缺点6.2统一建模语言统一建模语言UML6.2.1UML的产生背景的产生背景IvarJacobson的面向对象的软件工程(的面向对象的软件工程(Object-OrientedSoftEngineering,OOSE)采用)采用用例用例的概念作的概念作为基础,通过加强项目和用户之间的通信实现了高度重用,为基础,通过加强项目和用户之间的通信实现了高度重用,这是这是IT项目的第一个关键成功因素。项目的第一个关键成功因素。JamesRumbaugh则开发出了对象建模技术(则开发出了对象建模技术(ObjectM
28、odelingTechnique,OMT),强调通过对系统里的事务和数据进行深入分析),强调通过对系统里的事务和数据进行深入分析来确定目标问题,这是来确定目标问题,这是IT项目成功的第二个关键因素。最项目成功的第二个关键因素。最后,后,GradyBooch提出了提出了Booch方法,该方法在设计,实方法,该方法在设计,实现,定义解决方案并使之映射到目标问题方面具有独到之现,定义解决方案并使之映射到目标问题方面具有独到之处,即为处,即为IT项目的第三个关键成功因素。以上三个因素相项目的第三个关键成功因素。以上三个因素相互支持,缺一不可。将它们的方法和符号结合起来,足以互支持,缺一不可。将它们的方
29、法和符号结合起来,足以满足创建一个统一的,全面的建模标准的需求。满足创建一个统一的,全面的建模标准的需求。UML在在1997年被对象管理组织(年被对象管理组织(OMG,一,一个工业标准组织)采纳为标准,与此同时,个工业标准组织)采纳为标准,与此同时,一些公司研发并提交了关于一些公司研发并提交了关于UML的另一套的另一套建议,他们的研究结果被结合起来,这就建议,他们的研究结果被结合起来,这就是是1997年年9月发布的,月发布的,OMG开始正式对开始正式对UML标准的开发负责,此后的标准的开发负责,此后的UML,更在,更在不断的发展中。不断的发展中。2004年,开始投入使用。年,开始投入使用。目前
30、版本已经发展至。目前版本已经发展至。6.2.2UML概念模型概念模型为了理解为了理解UML,就需要了解其建模的概念、,就需要了解其建模的概念、符号。如果掌握了这些概念模型的思想,符号。如果掌握了这些概念模型的思想,就能够读懂就能够读懂UML模型,并能建立一些基本模型,并能建立一些基本模型。模型。组成组成UML有三种基本的构造块:事物、关有三种基本的构造块:事物、关系、图。系、图。事物事物事物(事物(thing)是对模型中最具有代表性的成分的抽象,)是对模型中最具有代表性的成分的抽象,是模型中的基本成员。在是模型中的基本成员。在UML中有中有4种事物:结构事物、种事物:结构事物、行为事物、分组事
31、物、注释事物,这些事物是行为事物、分组事物、注释事物,这些事物是UML中基中基本的面向对象的构造快。用它们可以写出结构良好的模本的面向对象的构造快。用它们可以写出结构良好的模型。型。1)结构事物)结构事物2)行为事物)行为事物3)分组事物)分组事物4)注释事物)注释事物2关系关系关系是事物之间的联系。在图形上,把关系画成一条线,关系是事物之间的联系。在图形上,把关系画成一条线,并用不同的线区别关系的种类。在并用不同的线区别关系的种类。在UML中有种关系:依中有种关系:依赖、关联、泛化、实现。这些关系是赖、关联、泛化、实现。这些关系是UML的基本关系构造的基本关系构造块,用它们可以写出结构良好的
32、模型。块,用它们可以写出结构良好的模型。依赖依赖是两个事物间的语义关系,其中一个事物发生变化会是两个事物间的语义关系,其中一个事物发生变化会影响另一个事物的语义。影响另一个事物的语义。关联关联是一种结构关系,它描述了一组链,链是对象之间是一种结构关系,它描述了一组链,链是对象之间的连接。聚合是一种特殊类型的关联,它描述了整体和部的连接。聚合是一种特殊类型的关联,它描述了整体和部分间的结构关系。分间的结构关系。泛化泛化泛化关系也称为继承关系,即特殊元素的对象可替代泛化关系也称为继承关系,即特殊元素的对象可替代一般元素的对象。用这种方法,子元素共享了父元素的结一般元素的对象。用这种方法,子元素共享
33、了父元素的结构和行为。构和行为。实现实现是类元之间的语义关系,其中的一个类元指定了由是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约。在两种地方可出现实另一个类元保证执行的契约。在两种地方可出现实现关系:一种是在接口和实现它们的类或者构件之现关系:一种是在接口和实现它们的类或者构件之间;另一种是在用例和实现它们的协作之间。间;另一种是在用例和实现它们的协作之间。这四种元素是这四种元素是UML模型中可以包含的基本关系事物。模型中可以包含的基本关系事物。它们也有变体,例如,依赖的变体有精化,跟踪,它们也有变体,例如,依赖的变体有精化,跟踪,包含和延伸。包含和延伸。图图UML中的
34、图共有中的图共有10种,如图种,如图6-2所示,这所示,这些图可划分为两类,一类是为系统的静态些图可划分为两类,一类是为系统的静态结构建模的,另一类是为系统的动态结构结构建模的,另一类是为系统的动态结构建模的,分别称之为静态模型和动态模型。建模的,分别称之为静态模型和动态模型。静态模型捕获物件以及物件之间的静态关静态模型捕获物件以及物件之间的静态关系,动态模型捕获物件是如何交互以产生系,动态模型捕获物件是如何交互以产生软件系统所需的行为。软件系统所需的行为。其中各图的作用在于:其中各图的作用在于:用例图:需求捕获,测试依据。用例图:需求捕获,测试依据。类图:类以及类之间的相互关系。类图:类以及
35、类之间的相互关系。对象图:对象以及对象之间的相互关系。对象图:对象以及对象之间的相互关系。包图:类的集合。包图:类的集合。构件图:构件及其相互依赖关系。构件图:构件及其相互依赖关系。部署图:构件在各节点上的部署。部署图:构件在各节点上的部署。顺序图:强调时间顺序的交互图。顺序图:强调时间顺序的交互图。协作图:强调对象协作的交互图。协作图:强调对象协作的交互图。状态图:类所经历的各种状态。状态图:类所经历的各种状态。活动图:对工作流程建模。活动图:对工作流程建模。6.2.3UML的静态建模机制的静态建模机制所有的事物都有两个方面:静态结构和动所有的事物都有两个方面:静态结构和动态行为。任何建模语
36、言都以静态建模机制态行为。任何建模语言都以静态建模机制为基础,标准建模语言为基础,标准建模语言UML也不例外。也不例外。UML的静态建模机制包括用例图、类图、的静态建模机制包括用例图、类图、对象图、包、构件图和部署图。对象图、包、构件图和部署图。1.用例图用例图(Usecasediagram)用例图叙述的是用户应该怎样去使用系统,用例图叙述的是用户应该怎样去使用系统,也就是说用例图描述的是关于系统功能的一个也就是说用例图描述的是关于系统功能的一个概述。与目标系统交互的人或系统被称为概述。与目标系统交互的人或系统被称为参与参与者者,而参与者使用的功能则被称为,而参与者使用的功能则被称为用例用例。
37、用例。用例图可以包含注释和约束,还可以包含包,用于图可以包含注释和约束,还可以包含包,用于将模型中的元素组合成更大的模块。用例图的将模型中的元素组合成更大的模块。用例图的目的是描述用户希望系统支持的所有功能,但目的是描述用户希望系统支持的所有功能,但是对于这些功能的实现细节却不提。是对于这些功能的实现细节却不提。用例图反映了用户对系统的期望,并且描用例图反映了用户对系统的期望,并且描述了系统的特征与系统特征中的共同行为,述了系统的特征与系统特征中的共同行为,为为客户观察自己的需求提供了简单易行的方法。客户观察自己的需求提供了简单易行的方法。用例图由参与者、用例、系统边界、关联关用例图由参与者、
38、用例、系统边界、关联关系、包含关系、扩展关系和泛化关系这系、包含关系、扩展关系和泛化关系这6个元素组个元素组成,用画图的方法来完成。成,用画图的方法来完成。在在UML中,用例图主要元素是用例和参与者。中,用例图主要元素是用例和参与者。(1)用例)用例用例是外部可见的系统功能单元,这些功能用例是外部可见的系统功能单元,这些功能由系统单元所提供,并通过一系列系统单元与一由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。用例的个或多个参与者之间交换的消息所表达。用例的用途是,在不揭示系统内部构造的前提下定义连用途是,在不揭示系统内部构造的前提下定义连贯的行为。可以理解为贯
39、的行为。可以理解为用例是参与者想要系统做用例是参与者想要系统做的事情的事情。对于对用例的命名,可以给用例取一个。对于对用例的命名,可以给用例取一个简单、描述性的名称,一般为带有动作性的词。简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示。用例在画图中用椭圆来表示。(2)系统边界)系统边界系统边界是用来表示正在建模系统的边系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中方框来表示系统外部。系统边界在画图中方框来表示,同时附上系统的名称,系统边界框表示,同时附上系统的名称,系统边界框指明了系统
40、的范围,即矩形内部的用例表指明了系统的范围,即矩形内部的用例表示的是准备要实现的功能。参与者画在边示的是准备要实现的功能。参与者画在边界的外面,用例画在边界里面。界的外面,用例画在边界里面。P174图图6-11(3)参与者)参与者所谓的参与者(所谓的参与者(actor)是指所有存在于系统)是指所有存在于系统外部并与系统进行交互的人或其他系统。因此参外部并与系统进行交互的人或其他系统。因此参与者可以是人,可以是事物,也可以是时间或其与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点需要注意的是,参与者不他系统等等。还有一点需要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所
41、扮是指人或事物本身,而是表示人或事物当时所扮演的角色。演的角色。UML中用直立人形图标代表参与者。中用直立人形图标代表参与者。参与者用来表示使用系统的对象,即系统用参与者用来表示使用系统的对象,即系统用户,可以是一个人或者另一个系统。参与者的角户,可以是一个人或者另一个系统。参与者的角色名应该用他们使用系统时的工作头衔,要避免色名应该用他们使用系统时的工作头衔,要避免起一个实际的人名。起一个实际的人名。(4)关系:由一条连接参与者和用例的线来表示。)关系:由一条连接参与者和用例的线来表示。关联关系(关联关系(association)关联关系表示参与者用例之间的通信。不同的参与关联关系表示参与者
42、用例之间的通信。不同的参与者可以访问相同的用例,一般来说它们和该用例的交互者可以访问相同的用例,一般来说它们和该用例的交互是不一样的,如果一样的话,说明它们的角色可能是相是不一样的,如果一样的话,说明它们的角色可能是相同的。如果两种交互的目的也相同,说明它们的角色是同的。如果两种交互的目的也相同,说明它们的角色是相同的,就可以将它们合并。在相同的,就可以将它们合并。在UML中,关联关系使用中,关联关系使用箭头来表示。图箭头来表示。图6-3表示了用例的关联关系。表示了用例的关联关系。包含关系包含关系一个基本用例的行为包含了另一个用例的一个基本用例的行为包含了另一个用例的行为这被称作为包含关系。在
43、这种情况下,新行为这被称作为包含关系。在这种情况下,新用例不是初始用例的一个特殊例子,并且不能用例不是初始用例的一个特殊例子,并且不能被初始用例所代替。在被初始用例所代替。在UML中,包含关系表示中,包含关系表示为虚线箭头加为虚线箭头加include字样,箭头指向被包字样,箭头指向被包含的用例。含的用例。扩展关系扩展关系一个用例也可以被定义为基础用例的增量扩一个用例也可以被定义为基础用例的增量扩展,这称为扩展关系,扩展关系是把新的行为展,这称为扩展关系,扩展关系是把新的行为插入到已有用例中的方法。同一个基础用例的插入到已有用例中的方法。同一个基础用例的几个扩展用例可以在一起应用。基础用例的扩几
44、个扩展用例可以在一起应用。基础用例的扩展增加了原有的语义,此时是基础用例而不是展增加了原有的语义,此时是基础用例而不是扩展用例被作为例子使用。在扩展用例被作为例子使用。在UML中,扩展关中,扩展关系表示为虚线箭头加系表示为虚线箭头加extend字样,箭头指字样,箭头指向被扩展的用例(即基础用例),如图向被扩展的用例(即基础用例),如图6-7所示。所示。泛化关系泛化关系泛化关系代表一般与特殊的关系。子用例泛化关系代表一般与特殊的关系。子用例表示父用例的特殊形式。子用例从父用例处继表示父用例的特殊形式。子用例从父用例处继承行为和属性,还可以添加、覆盖或改变继承承行为和属性,还可以添加、覆盖或改变继
45、承的行为。当父用例能够被使用时,任何子用例的行为。当父用例能够被使用时,任何子用例也可以被使用。在也可以被使用。在UML中,用例泛化与其他泛中,用例泛化与其他泛化关系的表示法相同,用一个三角箭头从子用化关系的表示法相同,用一个三角箭头从子用例指向父用例,如图例指向父用例,如图6-9所示。所示。图图6-9 在在用用例例泛泛化化中中,如如果果系系统统中中一一个个或或多多个个用用例例是是某某个个一一般般用用例例的的特特殊殊化化时时,就就需需要要使使用用用用例的泛化关系。例的泛化关系。某图书馆信息系统用例图的部分内容,用某图书馆信息系统用例图的部分内容,用例例“查询查询”(Search)负责在图书馆馆
46、范)负责在图书馆馆范围内查找符合用户输入条件的相关馆藏信围内查找符合用户输入条件的相关馆藏信息,它有两个子用例息,它有两个子用例“查询图书查询图书”(SearchBook)和和“查询期刊查询期刊”(SearchMagazin)。这两个用例都继承了父用例这两个用例都继承了父用例“查询查询”的行的行为,并添加了自己的行为。它们在查询的为,并添加了自己的行为。它们在查询的过程中加入了属于自己的查询范围。如图过程中加入了属于自己的查询范围。如图6-10。综上所述则可以了解如图综上所述则可以了解如图6-11的图书馆借阅管理的图书馆借阅管理用例图。用例图。2.类图、对象图和包图类图、对象图和包图类图类图(
47、Classdiagram)技术已经成为面向对技术已经成为面向对象方法中的主要技术,对于一个想要描述象方法中的主要技术,对于一个想要描述的系统,其类模型和对象模型揭示了系统的系统,其类模型和对象模型揭示了系统的结构。在的结构。在UML中,类和对象模型分别由中,类和对象模型分别由类图和对象图表示。类图表示了系统中各类图和对象图表示。类图表示了系统中各种对象类型及其之间存在的各种静态关系。种对象类型及其之间存在的各种静态关系。类图是面向对象系统建模中最常用的图,类图是面向对象系统建模中最常用的图,它是定义其他图的基础。类图包含它是定义其他图的基础。类图包含7个元素:个元素:类、接口、协作、依赖关系、
48、泛化关系、类、接口、协作、依赖关系、泛化关系、关联关系以及实现关系。与关联关系以及实现关系。与UML中的其他中的其他图一样,类图也可以包含注释和约束。类图一样,类图也可以包含注释和约束。类图中还可以含有包或子系统,它们使得模图中还可以含有包或子系统,它们使得模型元素可以聚集成更大的模块。型元素可以聚集成更大的模块。类类类是对一组具有相同属性,相同操作,相类是对一组具有相同属性,相同操作,相同关系和相同语义的对象的描述。一个类同关系和相同语义的对象的描述。一个类实现一个或者多个接口。类是面向对象系实现一个或者多个接口。类是面向对象系统组织结构的核心。类是对一组具有相同统组织结构的核心。类是对一组
49、具有相同属性、操作、关系和语义的对象的描述。属性、操作、关系和语义的对象的描述。此对象包括了现实世界中的物理实体、商此对象包括了现实世界中的物理实体、商业事物、逻辑事物、应用事物和行为事物业事物、逻辑事物、应用事物和行为事物等,甚至也包括了纯粹概念性的事物,它等,甚至也包括了纯粹概念性的事物,它们都是类的实例。们都是类的实例。如图如图6-12所示,在所示,在UML中,类用矩形来表中,类用矩形来表示,并且该矩形被划分成为示,并且该矩形被划分成为3个部分:名称个部分:名称部分、属性部分和操作部分。部分、属性部分和操作部分。名称名称按按UML的规定,把的类的名称放在矩形的的规定,把的类的名称放在矩形
50、的上部,是每个类中所必有的构成元素,用上部,是每个类中所必有的构成元素,用于同其他类相区别。类的名称应该来自系于同其他类相区别。类的名称应该来自系统的问题域,并且应该尽可以地明确,以统的问题域,并且应该尽可以地明确,以免造成歧义。免造成歧义。属性属性类的属性描述了类所代表的事物具备的特类的属性描述了类所代表的事物具备的特性,这些特性是所有的对象所共有的。有性,这些特性是所有的对象所共有的。有时,属性的值也是一种描述对象状态的方时,属性的值也是一种描述对象状态的方法。法。UML中,类属性的语法为:中,类属性的语法为:可见性可见性属性名属性名:类型:类型=初始值初始值属性字符串属性字符串其中:其中