面向对象方法学引论新._第1页
面向对象方法学引论新._第2页
面向对象方法学引论新._第3页
面向对象方法学引论新._第4页
面向对象方法学引论新._第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第9章章 面向对象方法学引论面向对象方法学引论n教学目标教学目标 掌握面向对象方法学的概念、掌握用于面向掌握面向对象方法学的概念、掌握用于面向对象分析、设计的对象分析、设计的3种模型(对象模型、动态模种模型(对象模型、动态模型、功能模型)。型、功能模型)。n教学重点教学重点 面向对象方法学的基本概念面向对象方法学的基本概念n教学难点教学难点 面向对象建模的了解面向对象建模的了解第第9章章 面向对象方法学引论面向对象方法学引论q教学内容教学内容 9.1 面向对象方法学概述面向对象方法学概述 9.2 面向对象的概念面向对象的概念 9.3 面向对象建模面向对象建模 9.4 对象模型对象模型9.5

2、动态模型动态模型 9.6 功能模型功能模型 9.7 三三种种模型之间的关系模型之间的关系传统的软件工程方法是面向过程的,将数据和传统的软件工程方法是面向过程的,将数据和处理过程分离,求解过程是先对应用领域(问题处理过程分离,求解过程是先对应用领域(问题空间)进行分析,建立起问题空间的逻辑模型,空间)进行分析,建立起问题空间的逻辑模型,再通过一系列复杂的转换和算法,构造计算机系再通过一系列复杂的转换和算法,构造计算机系统,获得解空间。统,获得解空间。由于问题空间与解空间的模型、描述方式的不由于问题空间与解空间的模型、描述方式的不同,存在着复杂的转换过程,需求变化就更难适同,存在着复杂的转换过程,

3、需求变化就更难适应。传统的软件工程方法难于支持软件复用。应。传统的软件工程方法难于支持软件复用。第第9章章 面向对象方法学引论面向对象方法学引论面向对象的思想最初出现于挪威斯陆大学和挪面向对象的思想最初出现于挪威斯陆大学和挪威计算机中心共同研制的威计算机中心共同研制的SimulaSimula 67 67 语言中,其语言中,其后,随着位于美国加利福尼亚的后,随着位于美国加利福尼亚的XeroxXerox(施乐)(施乐) 研究中心推出的研究中心推出的Smalltalk-76 Smalltalk-76 和和80 80 语言,面语言,面向对象的的程序设计技术迅猛的发展。向对象的的程序设计技术迅猛的发展。

4、到了到了2020世纪世纪9090年代,面向对象方法学已经成为年代,面向对象方法学已经成为人们在开发软件是首选的成熟的范型,成为当前人们在开发软件是首选的成熟的范型,成为当前最好的软件开发技术。最好的软件开发技术。第第9章章 面向对象方法学引论面向对象方法学引论9.1.1 什么是面向对象的开发方法什么是面向对象的开发方法 OOSD(Object-Oriented Software Development)法是一种把面向对象的思想应用于软件开发过程,法是一种把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。指导开发活动的系统方法。面向对象的方法是一种运用对象、类、继承、面向对象的方法是一

5、种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。统的软件开发方法。9.1 面向对象方法概述面向对象方法概述什么是面向对象什么是面向对象根据根据CoadCoad和和YourdonYourdon的定义,按照以下的定义,按照以下4 4个概念个概念设计和实现的系统,称为是面向对象的。设计和实现的系统,称为是面向对象的。 面向对象面向对象= =对象对象 (object) (object) + +类类 (classification) (classification) + +继承继承(inheritance)(inheritanc

6、e) + +通信通信 (communication with messages) (communication with messages)9.1.1 什么是面向对象的开发方法什么是面向对象的开发方法 面向对象技术的特点面向对象技术的特点1 1、对软件开发过程所有阶段进行综合考虑。、对软件开发过程所有阶段进行综合考虑。2 2、软件生存期各阶段所使用的方法、技术具有、软件生存期各阶段所使用的方法、技术具有高度的连续性,用符合人类认识世界的思维方式高度的连续性,用符合人类认识世界的思维方式来分析、解决问题。来分析、解决问题。3 3、将、将OOAOOA、OODOOD、OOPOOP有机地集成在一起。有

7、机地集成在一起。 OOA(Object-Oriented Analysis)OOA(Object-Oriented Analysis)面向对象分析面向对象分析OOD( Object-Oriented Design )OOD( Object-Oriented Design )面向对象设计面向对象设计OOP( Object-Oriented Program )OOP( Object-Oriented Program )面向对象的面向对象的程序设计程序设计9.1.1 什么是面向对象的开发方法什么是面向对象的开发方法 OOSD由三部分组成:由三部分组成: OOA(Object-Oriented Ana

8、lysis)面向对象的分析面向对象的分析 OOD(Object-Oriented Design)面向对象的设计面向对象的设计 OOP (Object-Oriented Program)面向对象的程序设计面向对象的程序设计OOAOOA强调的是对一个系统中的对象特征和行强调的是对一个系统中的对象特征和行为的定义。建立系统的三类(对象、状为的定义。建立系统的三类(对象、状态、处理)模型。态、处理)模型。OODOODOOD与与OOAOOA密切配合顺序实现对现实世界的进密切配合顺序实现对现实世界的进一步建模。一步建模。OOPOOPOOP是面向对象的技术中发展最快的,使用是面向对象的技术中发展最快的,使用

9、面向对象的程序设计语言,进行编码。面向对象的程序设计语言,进行编码。9.1.2 面向对象开发方法的组成面向对象开发方法的组成OOAOODOOP 就是要解决就是要解决“做什么做什么”的问题。的问题。OOA 法的基本任务就是要法的基本任务就是要建立三种模型:建立三种模型:状态模型状态模型(动态模型)(动态模型) 描述任何时刻对象的联系及其联系的改变,即时序。常描述任何时刻对象的联系及其联系的改变,即时序。常用状态图用状态图, , 事件追踪图描述。事件追踪图描述。功能功能/ /处理模型处理模型(函数模型)(函数模型) 描述系统内部数据的传送处理。描述系统内部数据的传送处理。 显然,在三大模型中,最重

10、要的是对象模型。显然,在三大模型中,最重要的是对象模型。对象模型对象模型(信息模型)(信息模型) 定义构成系统的类和对象,它们的属性与操作。定义构成系统的类和对象,它们的属性与操作。9.1.2 面向对象开发方法的组成面向对象开发方法的组成在需求分析的基础上,进一步解决在需求分析的基础上,进一步解决“如何作如何作”的问题,的问题,OOD OOD 法也分为概要设计和详细设计。法也分为概要设计和详细设计。细化对象行为,添加新对象,认定类,组类细化对象行为,添加新对象,认定类,组类库,确定外部接口及主要数据结构库,确定外部接口及主要数据结构详细设计:详细设计:加细对象描述加细对象描述 使用面向对象的程

11、序设计语言,如使用面向对象的程序设计语言,如C+C+进行程序设计。进行程序设计。 CoadCoad和和YourdonYourdon给出一个面向对象的定义:给出一个面向对象的定义:面向对象面向对象= =对象对象+ +类类+ +继承继承+ +消息消息如果一个软件系统是按照这样四个概念设计和实现的,如果一个软件系统是按照这样四个概念设计和实现的,则可以认为这个软件系统是面向对象的。则可以认为这个软件系统是面向对象的。9.1.2 面向对象开发方法的组成面向对象开发方法的组成面向对象方法的主要特点:面向对象方法的主要特点:按照人类习惯的思维方法,对软件开发过程所有阶段进行按照人类习惯的思维方法,对软件开

12、发过程所有阶段进行综合考虑综合考虑传统的程序设计技术是面向过程的设计方法,是以算法为传统的程序设计技术是面向过程的设计方法,是以算法为核心,把数据和过程作为相互独立的部分,程序代码用于处核心,把数据和过程作为相互独立的部分,程序代码用于处理这些数据。将数据和代码分离,反映了计算机的观点,但理这些数据。将数据和代码分离,反映了计算机的观点,但却忽视了数据和操作之间的内在联系,所以用这种方法设计却忽视了数据和操作之间的内在联系,所以用这种方法设计的软件系统其解空间与问题空间不一致。的软件系统其解空间与问题空间不一致。而面向对象的方法以对象为核心,强调模拟现实世界中的而面向对象的方法以对象为核心,强

13、调模拟现实世界中的概念而不是算法,尽量用符合人类认识世界的思维方式来渐概念而不是算法,尽量用符合人类认识世界的思维方式来渐进地分析、解决问题,使问题空间与解空间具有一致性,便进地分析、解决问题,使问题空间与解空间具有一致性,便于对软件开发过程所有阶段进行综合考虑,能有效地降低软于对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量。件开发的复杂度,提高软件质量。面向对象的方法的代表性成果有:面向对象的方法的代表性成果有:1、B.Henderson-sellers 和和 J.m.Edwards提出的面向对象软件提出的面向对象软件生存期喷泉模型及面向对象的系统开发方法。生

14、存期喷泉模型及面向对象的系统开发方法。2、G.Booch提出的面向对象的开发方法。提出的面向对象的开发方法。3、P.Coad和和E.Yourd提出的提出的OOA和和OOD法。法。 4、J. Rumbaugh等人提出的对象建模技术等人提出的对象建模技术(OMT)。5、Jacobson 提出的面向对象的软件工程提出的面向对象的软件工程(OOSE)。6、G.Booch J.Rumbough Jacobson等人在等人在Booch方法、方法、OMT和和OOSE的基础上推出了统一建模语言的基础上推出了统一建模语言UML。 理解面向对象的基本概念对于学习和掌握面向对象的理解面向对象的基本概念对于学习和掌握

15、面向对象的开发方法是十分重要的。开发方法是十分重要的。9.2 面向对象的概念面向对象的概念 对客观对客观存在的事物的描述存在的事物的描述可以是事、物、或抽象可以是事、物、或抽象概念概念 ,是将一组数据和使用该数据的一组基本操作或过程,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体封装在一起的实体。对象都存在一定的对象都存在一定的,内部,内部可可以给对象定义以给对象定义对象通过其运算所展示对象通过其运算所展示的特定行为称为的特定行为称为对象本身的性质称为对象本身的性质称为,对象将它自身的属性及运算,对象将它自身的属性及运算“包装起来包装起来”,称为称为对象的最基本的特征是封装性和继

16、承性对象的最基本的特征是封装性和继承性。 9.2.1 对象对象1、 类(类(Class)类类又称又称对象类对象类(Object Class),是一组具有相同),是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对属性和相同操作的对象的集合。在一个类中,每个对象都是类的象都是类的实例实例(instance) ,它们都可以使用类中提,它们都可以使用类中提供的函数。供的函数。类具有属性类具有属性,用数据结构来描述类的属性,用数据结构来描述类的属性,类具类具有操作有操作,它是对象的行为的抽象,操作实现的过程称,它是对象的行为的抽象,操作实现的过程称为方法(为方法(method) ,方法有方法名

17、,方法体和参数。,方法有方法名,方法体和参数。由于对象是类的实例,在进行分析和设计时,通由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。常把注意力集中在类上,而不是具体的对象上。9.2.2 其它概念其它概念几何对象几何对象颜色颜色位置位置移动(移动(delta:矢量):矢量)选择(选择(P:指针型)指针型):布尔型布尔型旋转旋转(角度角度)图图9.19.1对象类的描述对象类的描述人人姓姓 名名:字符串字符串年年 龄龄: 整整 型型改换工作改换工作改换地址改换地址文件文件文件名文件名文件大小文件大小最近更新日期最近更新日期打印打印(人人)张红兵张红兵28绘图员

18、绘图员人民路人民路8号号(人人)李军李军24程序员程序员无无图图9.2 9.2 对象的描述对象的描述类名类名属性属性运算运算 对象图对象图 类图类图 继承是使用现存的定义作为基础,建立新定义的技术。是父继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容做为自己的基础上来进行,把这个已经存在的类所定义的内容做为自己的内容,并加入若干新内

19、容。的内容,并加入若干新内容。 继承性分类:继承性分类: :一个子类只有一个父类。即子类只继承一个父类:一个子类只有一个父类。即子类只继承一个父类 的数据结构和方法。的数据结构和方法。 :一个子类可有多个父类。继承多个父类的数据结:一个子类可有多个父类。继承多个父类的数据结构和方法。构和方法。基类基类子类子类A子类子类B继承性描述继承性描述现存类定义现存类定义父类父类( (基类基类) )新类定义新类定义子类子类( (派生类派生类) )继继 承承继承性继承性 互相联系、协同工互相联系、协同工作等作等对象之间的联系可表示为对象间的消息传递,即对象之间的联系可表示为对象间的消息传递,即对象间的通讯机

20、制。对象间的通讯机制。 一个消息应该包含以下信息:消息名、接收消息对象的一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识标识、服务标识 、消息和方法、输入信息、回答信息。、消息和方法、输入信息、回答信息。注意:注意:在并发系统中,多个控制线程(在并发系统中,多个控制线程(Thread of Control)并发执行,情况就复杂得多,消息可以是发出服并发执行,情况就复杂得多,消息可以是发出服务请求、提交数据、发布事件信息、或是传递同步控制信务请求、提交数据、发布事件信息、或是传递同步控制信息。息。在对象的操作中当一个消息发送给某个对象时,消息在对象的操作中当一个消息发送给某个对象时

21、,消息包含接收对象去执行某种操作的消息。包含接收对象去执行某种操作的消息。n 多态性多态性(Polymorphism)是指相同的操作或函数,过程作是指相同的操作或函数,过程作用于不同的对象上并获得不同的结果。用于不同的对象上并获得不同的结果。n 即相同的操作的消息发送给不同的对象时,每个对象将即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中所定义的操作去执行,故产生不同的结根据自己所属类中所定义的操作去执行,故产生不同的结果。果。n 例如:例如: “绘图绘图”操作,作用在操作,作用在“椭圆椭圆” 和和“矩形矩形” 上,上,画出不同的图形。画出不同的图形。n动态绑定动态绑定(dy

22、namic binding)是在运行时根据对象接收的是在运行时根据对象接收的消息动态地确定要连接的服务代码。消息动态地确定要连接的服务代码。类中操作的实现过程称为方法。类中操作的实现过程称为方法。 一个方法包括方法名、参数及方法体。一个方法包括方法名、参数及方法体。 方法描述了类与对象的行为,每一个对象都封装了数据和方法描述了类与对象的行为,每一个对象都封装了数据和算法两个方面,数据由一组属性表示,而算法即是当一个对算法两个方面,数据由一组属性表示,而算法即是当一个对象接收到一条消息后,它所包含的方法决定对象如何动作。象接收到一条消息后,它所包含的方法决定对象如何动作。通常是在某种编程语言(如

23、通常是在某种编程语言(如Java、C+)下实施的运算。)下实施的运算。9.3 面向对象建模面向对象建模 用面向对象方法成功地开发软件的关键,同样用面向对象方法成功地开发软件的关键,同样是对问题域的理解。面向对象方法最基本的原则,是对问题域的理解。面向对象方法最基本的原则,是按照人们习惯的思维方式,用面向对象观点建是按照人们习惯的思维方式,用面向对象观点建立问题域的模型,开发出尽可能自然地表现求解立问题域的模型,开发出尽可能自然地表现求解方法的软件。方法的软件。用面向对象方法开发软件,通常需要建立用面向对象方法开发软件,通常需要建立3种形种形式的模型,它们分别是描述系统数据结构的式的模型,它们分

24、别是描述系统数据结构的对象对象模型模型,描述系统控制结构的,描述系统控制结构的动态模型动态模型和描述系统和描述系统功能的功能的功能模型功能模型。这这3种模型各自从不同侧面反映了系统的实质性内种模型各自从不同侧面反映了系统的实质性内容,综合起来则全面地反映了对目标系统的需求。容,综合起来则全面地反映了对目标系统的需求。一个典型的软件系统组合了上述一个典型的软件系统组合了上述3方面内容:它使方面内容:它使用数据结构用数据结构(对象模型对象模型),执行操作,执行操作(动态模型动态模型),并且,并且完成数据值的变化完成数据值的变化(功能模型功能模型)。用面向对象方法开发软件,在任何情况下,对象用面向对

25、象方法开发软件,在任何情况下,对象模型始终都是最重要、最基本、最核心的。模型始终都是最重要、最基本、最核心的。9.4 对象模型对象模型面向对象方法强调围绕对象而不是围绕功能来面向对象方法强调围绕对象而不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。提供了实质性的框架。统一建模语言统一建模语言UMLUML;定义类(属性、服务)、类的图形符号;定义类(属性、服务)、类的图形符号;类与类之间的关联、泛化(继承)、依赖和细类与类之间的关联、泛化(继承)、依赖和细化等关系及其表示等等。化等关系及其表示等等。9.4 对象模型对象模型

26、n1.类图简介类图简介n我们看到的大多数UML图都是类图。类图是最广泛的一种模型,用来表述系统中各个对象的类型以及其间存在的各种静态关系。显示出类、接口以及它们之间的静态结构和关系;我们常用类图描述系统的结构。右是一个典型的类图。类图中的关系包括:依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)、实现关系(Realization) 。9.4 对象模型对象模型n2.类图的作用类图的作用n 类图常用来描述业务或软件系统的组成、结构和关系。我们通常通过下面三种方式使用类图:n(1)为系统词汇建模型n为系统的词汇建模实际上是从词汇表中发现类

27、,发现它的责任。n(2)模型化简单的协作n协作是指一些类、接口和其他的元素一起工作,提供一些合作的行为,这些行为不是简单地将元素加在一起就能实现的。例如:当我们为一个分布式的系统中的事务处理过程创建模型时,我们不可能只通过一个类来表明事务是怎样执行的,事实上这个过程的执行涉及到一系列的类的协同工作。使用类图来可视化这些类和他们的关系。n(3)模型化一个逻辑数据库模式n我们常用类图设计数据库的蓝图。在很多领域,我们想把持久性数据保存到关系数据库或面向对象的数据库中。我们可以用类图为这些数据库模式建立模型。9.4.1类图的基本符号类图的基本符号nUML中,表示一个类,主要是标识它的名称、属性和操作

28、。如图所示,类由一个矩形表示,它包含3栏,在每栏中分别写入类的名称、类的属性和类的操作/服务服务。图3-2 Order类9.4.1类图的基本符号类图的基本符号n1名称n每个类都必须有一个有别于其他类的名称, 类名部分是不能省略的,其他组成部分可以省略。名称(Name)是一个文本串,表示方法有两种:n(1).简单名:如图中的Order(订单),它就只是一个单独的名称。n(2).全名:也称为路径名,就是在类名前面加上包的名称,例如java:awt:Rectangel、businessRule:order等。n对于类的命名规范要求,由字符、数字、下划线组成的惟一的字符串即可。但在实际应用中,有一个普

29、遍采用的命名原则:采用CamelCase格式(大写字母开头、混合大小写,每个单词以大写开始,避免使用特殊符号),尽可能避免使用缩写。图3-2 Order类9.4.1类图的基本符号类图的基本符号n2.属性n属性描述了类的静态特征,在面向对象编程中,把属性表示为成员变量。例如,在图3-2所示的Order类中,列出了orderDate(下订单时间)、destArea(送货区域)、price(订单总价格)、paymentType(支付类型)四个属性,它们是用来描述每个具体的订单对象的。n在属性的前面有一个修饰,用来表示属性的可见性,属性的可见性一般都是private,这样才符合面向对象的“封装”思想。

30、通常属性名的第一个字母是小写的。图3-2 Order类9.4.1类图的基本符号类图的基本符号n3.操作n操作是类所提供的服务,通俗地说,操作就是定义了对象所能做的事情。在面向对象编程语言中,它通常表示为成员方法。对于操作的图示,有以下几点需要说明:n(1) 操作名的命名规范也未硬性规定的,大家习惯采用和属性名相同的命名规则。n(2) 对于操作,也经常会提供可见性修饰,只是通常应该声明为public,否则它难以向其他类提供服务。n(3) 操作在表示时可以只写出操作名,也可以将操作拥有的参数也写出来,即写成员方法的完整签名。n属性和操作名之前可附加的可见性修饰符: 加号(+)表示public;减号

31、(-)表示private;#号表示protected;省略这些修饰符表示具有package(包)级别的可见性。 如果属性或操作名具有下划线,则说明它是静态的。 图3-2 Order类9.4.1类图的基本符号类图的基本符号n4职责n 职责指类承担的责任和义务。在矩形框中最后一栏中写明类的职责。如图9-3最后一行所示。图9-3 职责的表示9.4.1类图的基本符号类图的基本符号n5约束n约束指定了类所要满足的一个或多个规则。 在UML中,约束是用花括号括起来的自由文本。如图9-4所示。图9-4 约束的表示9.4.2表示关系的基本符号表示关系的基本符号 按照关系的性质,把关系分为4种,它们是关联关系、

32、泛化/继承关系、依赖关系、细化/实现关系。下面分别说明其语义。1 关联关系关联关系是比较抽象的高层次关系,为了对关联进一步具体化,我们需要了解关联的属性。关联的属性包括名称,角色,多重性,限定,导航。它具体包括聚合关系和组合关系。9.4.2表示关系的基本符号表示关系的基本符号 (1) 名称可以使用一个动词或动词短语给关联取名,用来描述关联的性质。在描述关联时,关联的名称并不是必需的,在关联名和角色中选一即可。可以在关联上标识阅读方向的方向指示符,以消除阅读的歧义。下面的例子表示,关联名称是”使用” ,即,用户使用计算机。图9-16关联名称9.4.2 关联的属性n(2)角色n在关联关系中,角色表

33、明了关联的每一端在关联中承担的职责,即,关联发生时,关联的每一端在关联中扮演的角色。角色的名称应该是名词或名词短语,以解释对象是如何参与关联的。如图9-16关联的角色。n学生在关联中,扮演的是学习者的角色;学校扮演的是教学者的角色。图9-16关联的角色332 关联的属性n(3)多重性n多重性就是某个类有多少个对象可以和另一个类的单个对象关联。如图3-18所示。上图的多重性表示:一个顾客(customer)可以拥有一个到多个的账户(account),但是一个账户只能由一个顾客所拥有。图3-18关联的多重性CustermerAccount11.n942 关联的属性n(4)导航性n导航性描述了源对象

34、通过链接访问目标对象。箭头表明了导航的方向性,即,只有源对象才能访问目标对象,反之,目标对象不能访问源对象。如图9-18所示。图9-19导航性942 关联的属性n(5)限定符n如果源对象到目标对象是1对多关联,为了在多个目标对象的集合中查找到需要的目标对象,我们必须在目标对象集合中,选一个唯一标识目标对象的查找键(限定符,从目标对象的属性中选择),它应该是目标对象中的某个属性,当然,也可以是表达式。n一个俱乐部(Club)可以有多个成员(Member),为了在成员集合(目标对象)上找到需要的对象,我们选择memberId作为查找关键字,即,限定符。图9-20 限定符ClubmemberIdMe

35、mbermemberId:String10.1受限多重性源对象目标对象限定符9.4.2表示关系的基本符号表示关系的基本符号 按照关系的性质,把关系分为4种,它们是依赖关系、泛化关系、 关联关系、实现关系。下面分别说明其语义。1 关联关系关联关系是比较抽象的高层次关系,表示两个类的对象之间存在某种语义上的联系。为了对关联进一步具体化,我们需要了解关联的属性。关联的属性包括名称,角色,多重性,限定,导航。9.4.2表示关系的基本符号表示关系的基本符号 2 聚集关系聚集关系是关联关系的特例,它表示类与类的关系是整体与部分之间的关系。在陈述需求时使用“包含”、“组成”、“分为部分”等字句,往往意味着存

36、在聚集关系。具体包括聚合关系/共享聚集关系和组合聚集关系。(1)聚合关系:在聚集关系中处于部分方的对象可参与多个处于整体方的对象的构成。例如,大学由多个学院组成。(2)组合关系:在聚集关系中处于部分方的对象与处于整体方的对象共存。例如,窗口中的菜单和按钮不能离开窗口独立存在,因此,是组合关系。图3-13组合关系图3-12 聚合关系9.4.2表示关系的基本符号表示关系的基本符号 3泛化关系/继承关系是从特殊元素到一般元素的分类关系称为泛化关系。模型元素可以是类、用例以及其他。如图9-11所示。图9-11 泛化关系9.4.2表示关系的基本符号表示关系的基本符号 4依赖关系和细化关系(1) 依赖关系

37、表示两个或多个模型元素之间语义上的关系, 客户元素以某种形式依赖于提供者元素。 实际上,关联、实现/细化和泛化/继承都是依赖关系。 如图9-10所示。图9-10 依赖关系9.4.2表示关系的基本符号表示关系的基本符号 n依赖关系可以细分为4大类:使用依赖、抽象依赖、 授权依赖、 绑定依赖。nA、使用依赖n表示客户使用提供者提供的服务,以实现它的行为,下面都属于使用依赖的具体形式:n使用(use)n调用(call)n参数(parameter)n发送(send)n实例化(instantiate)9.4.2表示关系的基本符号表示关系的基本符号nB、 抽象依赖n表示客户与提供者之间的关系,客户与提供者

38、属于不同的抽象事物,具体依赖形式:n跟踪(trace)n精化(refine)n派生(derive)nC、 授权依赖n表达一个事物访问另一个事物的能力,具体依赖形式:n访问(access)n导入(import)n友元(friend)nD、 绑定依赖n绑定依赖属于较高级的依赖类型,用绑定模板以创建新的模型元素,具体依赖形式:绑定(bind)9.4.2表示关系的基本符号表示关系的基本符号n(2) 细化关系n表示两个或多个模型元素之间语义上的关系, 客户元素以某种形式对提供者元素进行细化或精化。 如图9-11所示。图9-11 细化关系分析类设计类细化9.5 动态模型动态模型动态模型表示瞬时的、行为化的

39、系统的动态模型表示瞬时的、行为化的系统的“控制控制”性质,性质,它规定了对象模型中的对象的合法变化序列。它规定了对象模型中的对象的合法变化序列。对一个对象来说,生命周期由许多阶段组成,在每个特对一个对象来说,生命周期由许多阶段组成,在每个特定阶段中,都有适合该对象的一组运行规律和行为规则,定阶段中,都有适合该对象的一组运行规律和行为规则,用以规范该对象的行为。生命周期中的阶段也就是对象的用以规范该对象的行为。生命周期中的阶段也就是对象的状态。状态。各对象之间相互触发就形成了一系列的状态变化。我们各对象之间相互触发就形成了一系列的状态变化。我们把一个触发行为称作一个事件。把一个触发行为称作一个事

40、件。状态与事件密不可分,一个事件分开两个状态,一个状状态与事件密不可分,一个事件分开两个状态,一个状态隔开两个事件。事件表示时刻,状态代表时间间隔。态隔开两个事件。事件表示时刻,状态代表时间间隔。9.6 功能模型功能模型图图6-1状态图状态图9.6 功能模型功能模型功能模型表示变化的系统的功能模型表示变化的系统的“功能功能”性质,它性质,它指明了系统应该指明了系统应该“做什么做什么”,因此更直接地反映,因此更直接地反映了用户对目标系统的需求。了用户对目标系统的需求。功能模型由一组数据流图组成。在面向对象方功能模型由一组数据流图组成。在面向对象方法学中,数据流图远不如在结构分析、设计方法法学中,

41、数据流图远不如在结构分析、设计方法中那样重要。中那样重要。同对象模型和动态模型比较,数据流图并没有同对象模型和动态模型比较,数据流图并没有增加新的信息,但是,建立功能模型有助于软件增加新的信息,但是,建立功能模型有助于软件开发人员更深入地理解问题域,改进和完善自己开发人员更深入地理解问题域,改进和完善自己的设计。的设计。因此,不能完全忽视功能模型的作用。因此,不能完全忽视功能模型的作用。9.6.1 用例图用例图n1. 用例图的概念n用例图是外部参与者所能观察到的系统功能的模型图,该图呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。图图9-1棋牌管理

42、系统的用例图棋牌管理系统的用例图9.6.1 用例图用例图n2. 用例图的作用n用例图展示了用例之间以及用例与参与者之间是怎样相互联系的。用例图对系统、子系统或类的行为进行了可视化,使用户能够理解如何使用这些元素,并使开发者能够实现这些元素。n用例图主要用来描述用户的功能需求。UML侧重从最终用户的角度来理解软件系统的需求,强调谁在使用系统、系统可以完成哪些功能。用例分析技术已经是一种公认有效的用户需求获取、分析和描述技术。9.6.1 用例图用例图n3. 用例图的组成元素n用例图的组成元素包括用例、参与者、关系(用例间的关系,参与者之间的关系,参与者与用例之间的关系)。n多个用例组成一个系统,参

43、与者是系统外部的一个实体,它以某种方式与系统交互,请求系统执行用例,以获得参与者需要的价值。n在用例图中最为核心的两个元素是参与者(Actor)和用例(Use Case)。9.6.1 用例图用例图nA. 参与者n参与者是为了完成某个任务,而与系统进行交互的实体。参与者是用户相对系统而言所扮演的角色。nA.1 参与者有两种表示方法,如图9-2所示。图9-2 参与者的两种表示法9.6.1 用例图用例图nA.2 参与者分类n 参与者不仅可以由人承担,还可以是其他系统、硬件设备,甚至是时钟。对参与者有两种分类方法:一种是按参与者本身的性质分,一种是按参与者的重要性来分。n(1) 按参与者性质分n1)其

44、它系统:当系统需要与其它系统交互时,如ATM柜员机系统中,银行后台系统就是一个参与者;2)硬件设备:如果系统需要与硬件设备交互时,如在开发IC卡门禁系统时,IC卡读写器就是一个参与者;3)时钟:当系统需要定时触发时,时钟就是参与者n(2)按参与者重要性分:n与某个用例交互的参与者可能有多个,按参与者对用例的重要性分为以下两类:n1)主要参与者:从系统获得可度量价值的用户,他的需求驱动了用例所表示的行为或功能。n2)次要参与者:在系统中提供服务,并且不能脱离主要参与者而存在。9.6.1 用例图用例图nB. 用例nB.1 用例的概念n 用例是对一组场景共同特征的抽象,即,用例是对一组场景共同行为的

45、抽象,场景就是用例的一次完整的、具体的执行过程。用例与场景的关系,如同类与对象的关系,用例应该给参与者带来可见的价值。n. 场景n在系统中,按照某个顺序执行的一系列相关的动作后,实现了某种功能,把完成了这一功能的操作的集合称为场景。 “场景”就是用户使用系统的一个实际的、特定的场面 。n下面列举一个场景例子。n开发者与用户、客户进行交流,构建场景和用例规格描述。一个场景就是描述用户与系统之间的一系列交互活动,描述了系统一次具体执行的行为路径,即,一次完整的事件流。如,小刘通过银行柜圆机(ATM系统)取款3000元的场景,如图9-3所示。9.6.1 用例图用例图场景名称场景名称 取款取款3000

46、元元参与者参与者 客户小刘客户小刘事件流事件流 (1) 小刘将银行卡插入柜员机。小刘将银行卡插入柜员机。(2)柜员柜员机要求客户输入卡密码。机要求客户输入卡密码。(3)小刘输入卡密码,并确认密码。)小刘输入卡密码,并确认密码。(4)柜员柜员机屏幕提示,请客户选择服务类型。机屏幕提示,请客户选择服务类型。(5)小刘选择取款服务。)小刘选择取款服务。(6)柜员柜员机提示:请客户输入取款数目。机提示:请客户输入取款数目。(7)客户输入)客户输入3000,并确认。,并确认。(8)柜员柜员机出钱口输出机出钱口输出30张一佰元的人民币。张一佰元的人民币。(9)小刘取回)小刘取回30张张100元面额的人民币

47、。元面额的人民币。(10)柜员柜员机提示服务类型:确认、或继续,或退卡。机提示服务类型:确认、或继续,或退卡。(11)小刘选择服务类型退卡,结束服务。)小刘选择服务类型退卡,结束服务。图9-3 小刘取款场景9.6.1 用例图用例图nB.2 用例的表示n每个用例都有一个名字,即,用例的名称,用例的名称有两种表示方法:n简单名:没有标识用例所属的包。n路径名:在用例名前标识了用例所属的包。图6-用例的名称表示 9.6.1.1 参与者之间的泛化关系n参与者之间的关系一般表现为特殊/一般化关系,即,泛化关系。泛化关系的表示如图9-5所示。图9-5 参与者是泛化关系9.6.1.1 参与者之间的泛化关系n

48、对于参与者而言,泛化关系的引用可以有效地降低模型的复杂度。例如:在图96所示的用例图中,我们引入一个“迎宾员”的角色,希望让迎宾员能完成“安排座位”的职责。总台服务员是一种“特殊”地迎宾员,它不仅可以安排座位,还能够办理结帐。那么通过泛化来更有效地组织这个用例图。图9-6参与者泛化9.6.1.2 标识用例间的关系n包含关系n在UML中,包含关系用构造型include表示,它是指基用例(base use case)在它内部的某一个位置上显式地合并了另一个用例的行为。n(1) 包含用例的表示n包含是指一个用例被另一个用例使用,被使用的用例就是包含用例,使用包含用例的是基用例。9.6.1.2 标识用例间的关系图图9-7 包含用例包含用例n图9-7说明:查询、提款、转帐三个是基用例,它们都包含打印回执用例基

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论