1、1第第12章章 面向对象的分析与设计面向对象的分析与设计 第12章 面向对象的分析与设计 2面向对象开发方法面向对象开发方法 面向对象方法是一种基于对象(数据、属性、操作构面向对象方法是一种基于对象(数据、属性、操作构成统一体)的方法。成统一体)的方法。面向对象方法在概念和表示方法上的一致性,保证了面向对象方法在概念和表示方法上的一致性,保证了软件工程各项开发活动之间的平滑(软件工程各项开发活动之间的平滑(“无缝无缝”)过渡。)过渡。面向对象开发过程的核心是面向对象开发过程的核心是面向对象分析面向对象分析(OOA)和)和面向对象设计面向对象设计(OOD)两个阶段,但二者的界限比较)两个阶段,但
2、二者的界限比较模糊。模糊。OOA是分析使用实例,提取用户需求,建立问是分析使用实例,提取用户需求,建立问题域逻辑模型的过程;题域逻辑模型的过程;OOD是建立面向对象的求解域是建立面向对象的求解域模型的过程。模型的过程。从从OOA到到OOD实际是一个实际是一个多次反复、逐多次反复、逐步迭代模型的过程步迭代模型的过程。第12章 面向对象的分析与设计 312.1 面向对象建模面向对象建模第12章 面向对象的分析与设计 4面向对象模型面向对象模型 面向对象方法开发软件的关键是对问题域的理解。采面向对象方法开发软件的关键是对问题域的理解。采用面向对象观点建立问题域模型,开发出尽可能完善用面向对象观点建立
3、问题域模型,开发出尽可能完善的表现求解域模型的软件,是面向对象建模的目标。的表现求解域模型的软件,是面向对象建模的目标。面向对象建模技术所建立的三种模型面向对象建模技术所建立的三种模型对象模型对象模型、动态模型动态模型和和功能模型功能模型,分别从三个不同侧面描述了所,分别从三个不同侧面描述了所要开发的系统。对象模型定义了要开发的系统。对象模型定义了“做什么做什么”的实体的实体,功能模型指明了系统应该功能模型指明了系统应该“做什么做什么”,动态模型明确动态模型明确规定在何种状态下,接受什么事件的触发而规定在何种状态下,接受什么事件的触发而“做什做什么么”。第12章 面向对象的分析与设计 5对象模
4、型对象模型 对象模型是一个对象模型是一个类类(属性和行为)、(属性和行为)、对象对象(类的实(类的实例)、例)、类和(或)对象之间关系类和(或)对象之间关系的定义集的定义集。对象模型对象模型表示静态的、结构化系统的表示静态的、结构化系统的“数据数据”性质性质,为建立动态模型和功能模型提供了实质性的框架。为建立动态模型和功能模型提供了实质性的框架。对象模型把面向对象的概念与常用的信息建模概念对象模型把面向对象的概念与常用的信息建模概念结合起来,增强了模型的可理解性和表达能力。结合起来,增强了模型的可理解性和表达能力。对象模型还表示对象模型还表示了了类类/对象之间的结构关系。类对象之间的结构关系。
5、类/对对象之间的关系一般可概括为象之间的关系一般可概括为关联关联、归纳归纳(泛化泛化)、组组合合(聚集聚集)三类。三类。第12章 面向对象的分析与设计 6动态模型动态模型 动态模型动态模型表示瞬间的、行为化的系统表示瞬间的、行为化的系统“控制控制”性质,性质,它规定了对象模型中对象的合法变化序列。它规定了对象模型中对象的合法变化序列。对象有对象有自己的自己的运行周期运行周期,由,由多个阶段组成多个阶段组成,每个特每个特定阶段都有规范该对象的行为的一组运行规则定阶段都有规范该对象的行为的一组运行规则。对象的对象的状态状态是是对象属性的一种抽象对象属性的一种抽象,事件事件是某个特是某个特定时刻发生
6、的一个系统行为,是引起对象状态转换的定时刻发生的一个系统行为,是引起对象状态转换的控制信息。控制信息。对象对事件的响应对象对事件的响应,取决于当时的状态,取决于当时的状态,响应包括改变自己的状态,或者是形成一个新的触发响应包括改变自己的状态,或者是形成一个新的触发行为(事件)。行为(事件)。动态模型描绘动态模型描绘对象的状态对象的状态,触发状态转换的事件触发状态转换的事件,以及以及对象行为对象行为(对事件的响应),即基于事件共享而(对事件的响应),即基于事件共享而互相关联的一组状态集合构成了系统的动态模型。互相关联的一组状态集合构成了系统的动态模型。第12章 面向对象的分析与设计 7功能模型功
7、能模型 功能模型功能模型表示变化的系统的表示变化的系统的“功能功能”性质,指明了性质,指明了系统应该系统应该“做什么做什么”。它更直接地反映了用户对目标。它更直接地反映了用户对目标系统的需求系统的需求,有助于软件开发人员更深入地理解问题有助于软件开发人员更深入地理解问题域,改进和完善自己的分析和设计。域,改进和完善自己的分析和设计。功能模型由一组功能模型由一组数据流图数据流图组组成。顶层数据流图中的成。顶层数据流图中的处理,对应于复杂对象提供的服务;低层数据流图中处理,对应于复杂对象提供的服务;低层数据流图中的处理,对应于基本对象(复杂对象的组成部分)的的处理,对应于基本对象(复杂对象的组成部
8、分)的服务。一个处理可能对应多个服务,或者是一个服务服务。一个处理可能对应多个服务,或者是一个服务可能对应多个处理。可能对应多个处理。功能模型功能模型的的数据流图数据流图远远不如在结构化方法中那样重不如在结构化方法中那样重要要,但,但不能忽视功能模型的作用。不能忽视功能模型的作用。第12章 面向对象的分析与设计 8三种三种模型模型的关系的关系 对象模型、动态模型和功能模型相辅相承对象模型、动态模型和功能模型相辅相承,使得对,使得对系统的需求分析和设计描述更加直观、全面。系统的需求分析和设计描述更加直观、全面。对象模型是最基本、最重要的模型对象模型是最基本、最重要的模型。为为每个类建立的动态模型
9、,描述了类每个类建立的动态模型,描述了类和和实例的运行实例的运行周期。周期。功能模型中的处理,可能产生动态模型中的事件。功能模型中的处理,可能产生动态模型中的事件。动态模型中的状态转换驱使行为发生。这些行为在动态模型中的状态转换驱使行为发生。这些行为在数据流图中被映射成处理,同时与对象模型中的服务数据流图中被映射成处理,同时与对象模型中的服务相对应。相对应。第12章 面向对象的分析与设计 9三种三种模型模型的关系的关系 功能模型中的处理,对应于对象模型中类功能模型中的处理,对应于对象模型中类/对象所提供的服务。对象所提供的服务。功能模型中的数据存储、数据的源点功能模型中的数据存储、数据的源点/
10、终点终点(在功能模型中称为动作对象)是对象模型中(在功能模型中称为动作对象)是对象模型中的对象;功能模型中的数据流是对象模型中的的对象;功能模型中的数据流是对象模型中的属性值,或者是整个对象。属性值,或者是整个对象。对象模型描述了功能模型中的动作对象、对象模型描述了功能模型中的动作对象、数据存储,以及数据流的结构。数据存储,以及数据流的结构。第12章 面向对象的分析与设计 10统一建模语言(统一建模语言(UML)面向对象开发范型阶段之间的过渡是面向对象开发范型阶段之间的过渡是“无缝无缝”的,的,定义对象抽象类和建立面向对象系统的各类模型,需定义对象抽象类和建立面向对象系统的各类模型,需要一组便
11、于描述的图形符号,并规定要一组便于描述的图形符号,并规定用用这些符号表示这些符号表示特定模型的语义规则。特定模型的语义规则。统一建模语言统一建模语言(UML)是专门设计的一种统一描述是专门设计的一种统一描述面向对象方法的符号系统面向对象方法的符号系统。UML是一种基于面向对象的可视化建模语言,实现是一种基于面向对象的可视化建模语言,实现了基于面向对象的建模工具的统一,已成为国际、国了基于面向对象的建模工具的统一,已成为国际、国内可视化建模语言实际上的工业标准。内可视化建模语言实际上的工业标准。第12章 面向对象的分析与设计 11UML的组成的组成 UMLUML用图形符号隐含表示了模型元素的语法
12、,用图形符号隐含表示了模型元素的语法,用这些图形符号组成元模型表达语义,组成模用这些图形符号组成元模型表达语义,组成模型描述系统结构(或称为静态特征)以及行为型描述系统结构(或称为静态特征)以及行为(或称为动态特征)。(或称为动态特征)。UMLUML定义了两类定义了两类模型元素模型元素。一类模型元素用于。一类模型元素用于表示模型中的某个概念,如表示模型中的某个概念,如类、对象、用例、类、对象、用例、结点、构件、包、接口结点、构件、包、接口等;另一类模型元素用等;另一类模型元素用于表示模型元素之间相互连接的关系,主要有于表示模型元素之间相互连接的关系,主要有关联、泛化关联、泛化(表示一般与特殊的
13、关系)(表示一般与特殊的关系)、依赖、依赖、聚集聚集(表示整体与部分的关系)等。(表示整体与部分的关系)等。第12章 面向对象的分析与设计 12UML部分模型元素的图形表示部分模型元素的图形表示 聚集聚集依赖依赖泛化泛化关联关联状态状态对象对象属性属性操作操作类类属性属性操作操作角色角色用例用例结结点点 构件构件包包接口接口注解注解第12章 面向对象的分析与设计 13UML模型结构模型结构 根据根据UML语义,语义,UML模型结构模型结构可分为元元模型、元模型、模型可分为元元模型、元模型、模型和用户模型四个抽象层次结构。它们的层次关系是下一层是上一和用户模型四个抽象层次结构。它们的层次关系是下
14、一层是上一层的基础,上一层是下一层的实例。层的基础,上一层是下一层的实例。元元模型层元元模型层定义描述元模型的语言,它是任何模型的基础。定义描述元模型的语言,它是任何模型的基础。UML元元模型定义了元类、元属性、元操作等概念。元元模型定义了元类、元属性、元操作等概念。元模型层元模型层定义描述模型的语言,它是组成定义描述模型的语言,它是组成UML模型的基本元素,模型的基本元素,包括面向对象和构件的概念。元模型是元元模型的一个实例。包括面向对象和构件的概念。元模型是元元模型的一个实例。模型层模型层定义描述信息领域的语言,它组成了定义描述信息领域的语言,它组成了UML模型。模型。用户模型层用户模型层
15、表达一个模型的特定情况,是模型的实例。表达一个模型的特定情况,是模型的实例。第12章 面向对象的分析与设计 14UML模型模型结构结构和示例和示例 图图12.2 UML模型模型 结构结构用户模型用户模型模型模型元模型元模型元元模型元元模型图图12.3 元元模型示元元模型示例例事物事物图图12.4 元模型示例元模型示例n 相 关相 关 1.n链接链接对象对象n 相 关相 关 1.n关联关联类类n实例实例1n实例实例1.n第12章 面向对象的分析与设计 15UML模型模型 UML可以从不同视角为系统建模,形成不同的视可以从不同视角为系统建模,形成不同的视图。每个视图是系统完整描述中的一个抽象,代表
16、该图。每个视图是系统完整描述中的一个抽象,代表该系统一个特定的方面;每个视图又由一组图构成,图系统一个特定的方面;每个视图又由一组图构成,图包含了强调系统某一方面的信息。包含了强调系统某一方面的信息。UML提供了两类图:静态图和动态图(共计九提供了两类图:静态图和动态图(共计九种)。种)。静态图包括静态图包括用例图用例图、类图类图、对象图对象图、构件图构件图和和部署图部署图。动态图包括动态图包括状态图状态图、时序图时序图、协作图协作图和和活动图活动图。UML提供了五种视图,包括提供了五种视图,包括用例视图、结构模型用例视图、结构模型(逻辑)(逻辑)视图视图、行为模型行为模型(并发)(并发)视图
17、视图、实现模型实现模型(构件)(构件)视图视图和和部署视图部署视图。第12章 面向对象的分析与设计 16UML的特点和应用的特点和应用 UML是面向对象的用例模型、类是面向对象的用例模型、类/对象模型、动态模型对象模型、动态模型等不同系统模型的图形符号描述。它所提供的表示模等不同系统模型的图形符号描述。它所提供的表示模型元素的图形和方法,能简洁明确地表达面向对象技型元素的图形和方法,能简洁明确地表达面向对象技术的主要概念和建立各类系统模型。它的标准化定义、术的主要概念和建立各类系统模型。它的标准化定义、可视化描述、可扩展性机制等,显示了可视化描述、可扩展性机制等,显示了UML强大的生强大的生命
18、力。命力。UML作为面向对象技术最重要的一种建模语言工具,作为面向对象技术最重要的一种建模语言工具,特别能从不同的视角为系统建模。特别能从不同的视角为系统建模。UML适用于各种复适用于各种复杂类型的系统,乃至系统各个层次的建模,而且适用杂类型的系统,乃至系统各个层次的建模,而且适用于系统开发过程的不同阶段。于系统开发过程的不同阶段。第12章 面向对象的分析与设计 1712.2 面向对象面向对象分析分析模型模型 第12章 面向对象的分析与设计 18面向对象面向对象分析分析模型模型 面向对象分析(OOA,Object-Oriented Analysis)是)是采用面向对象思路进行需求分析建模的过程
19、。采用面向对象思路进行需求分析建模的过程。面向对象的分析模型主要有用例模型、类面向对象的分析模型主要有用例模型、类/对象模型、对象模型、对象对象-关系模型和对象关系模型和对象-行为模型等。行为模型等。类类/对象模型描述系统所涉及的全部类对象模型描述系统所涉及的全部类/对象,每个类对象,每个类/对象都通过属性、操作、协作者进一步描述;对象对象都通过属性、操作、协作者进一步描述;对象-关关系模型描述对象之间的静态关系,同时定义了系统所系模型描述对象之间的静态关系,同时定义了系统所有重要的消息路径,它也可以涉及到对象的属性、操有重要的消息路径,它也可以涉及到对象的属性、操作、协作者;对象作、协作者;
20、对象-行为模型描述了系统动态行为。行为模型描述了系统动态行为。第12章 面向对象的分析与设计 19OOA模型的结构模型的结构 OOA模型的核心是模型的核心是使用实例(简称用使用实例(简称用例)。需求分析通例)。需求分析通过创建一组场景,过创建一组场景,每个场景包含一个每个场景包含一个用例,从场景分析用例,从场景分析入手,进一步抽取入手,进一步抽取和定义和定义OOA模型。模型。因此,因此,OOA也可以也可以说是一种说是一种半形式化半形式化的规格说明技术的规格说明技术。使用使用实例实例 类类/对象对象 模型模型 属性属性,操作操作,协作者协作者 对象对象-行为模行为模型型图图12.5 面向对象分析
21、模型的结构面向对象分析模型的结构 对象对象-关系关系 模型模型第12章 面向对象的分析与设计 20用例模型用例模型 用例模型用例模型是一种基于场景分析的,是一种基于场景分析的,OOA的一个最基本、的一个最基本、最重要的需求导出技术。最重要的需求导出技术。一个用例是系统某个动作步骤的集合,主要由角色和一个用例是系统某个动作步骤的集合,主要由角色和动作组成。角色是存在于系统之外的任何事物;动作动作组成。角色是存在于系统之外的任何事物;动作是系统的一次执行,由角色触动。是系统的一次执行,由角色触动。建立用例模型主要是建立用例模型主要是识别角色识别角色和和用例用例,给出系统,给出系统用例用例视图视图(
22、可以分层次的)描述和每个用例的实例(可以分层次的)描述和每个用例的实例脚本脚本(文字)描述。(文字)描述。第12章 面向对象的分析与设计 21用例视图及示例用例视图及示例 UML中,用例视图由中,用例视图由角色角色、用例用例、关联关联和和系统边界系统边界组组成。成。图图12.6 保险业务系统的用例视图例保险业务系统的用例视图例保险保险销售员销售员客户客户签定保险单签定保险单销售统计资料销售统计资料客户数据资料客户数据资料第12章 面向对象的分析与设计 22对象对象-关系模型关系模型 UML中,中,对象对象-关系模型关系模型分别用分别用类图类图和和对象图对象图描述。描述。类图包括类、类之间的关联
23、、类关联重数和继承等基本元素。类图包括类、类之间的关联、类关联重数和继承等基本元素。对象图是系统运行某个时刻对象之间的关联关系。对象图是类对象图是系统运行某个时刻对象之间的关联关系。对象图是类图的一个实例,类似于对象是类的一个实例。图的一个实例,类似于对象是类的一个实例。对象图和类图的区别是类图中的关联表示两个类是有联系的,对象图和类图的区别是类图中的关联表示两个类是有联系的,而在某个时刻它们可能没有联系,表现在对象图中它们之间就没而在某个时刻它们可能没有联系,表现在对象图中它们之间就没有关系,也就是说,只要在某个时刻对象之间有过联系,那么在有关系,也就是说,只要在某个时刻对象之间有过联系,那
24、么在类图中就认为它们存在连接关系。类图中就认为它们存在连接关系。第12章 面向对象的分析与设计 23类图和对象图示例类图和对象图示例保险公司保险公司保险合同保险合同客客 户户图图12.7 保险业务系统的类图保险业务系统的类图1 有有 0.n保险单保险单表达表达0.1 表示为表示为10.n 有有 1.n涉及涉及涉及涉及软件工程:标题软件工程:标题图图12.8 图书馆系统的借书对象图图书馆系统的借书对象图借借包含包含621375:书目:书目李华:学生李华:学生第12章 面向对象的分析与设计 24对象对象-行为(动态)模型行为(动态)模型 对象行为模型对象行为模型(动态模型动态模型),说明对象的操作
25、是如何),说明对象的操作是如何进行的。进行的。UML中,对象中,对象-行为模型采用行为模型采用时序图、协作时序图、协作图和状态(转换)图描述。图和状态(转换)图描述。时序图时序图和和协作图协作图都是描述对象的动态行为,两者都是描述对象的动态行为,两者从从不同的侧面,反映了系统中对象是如何交互完成功能不同的侧面,反映了系统中对象是如何交互完成功能的;的;不同之处是时序图注重对象交互的时间关系不同之处是时序图注重对象交互的时间关系,协协作图注重对象的空间协作关系。作图注重对象的空间协作关系。状态图状态图描述系统中对象的状态变化,常用于单个对描述系统中对象的状态变化,常用于单个对象对不同事件的响应行
26、为状态建模。象对不同事件的响应行为状态建模。第12章 面向对象的分析与设计 25时序图时序图 时序图时序图描述对象间的事件序列的交换和描述对象间的事件序列的交换和相互关系,常用于对一群对象的组合行相互关系,常用于对一群对象的组合行为建模。为建模。UML的时序图主要包括的时序图主要包括对象对象、事件事件(对(对象发送的消息)、象发送的消息)、激活区激活区(对象被事件(对象被事件激活和处理事件的过程)和激活和处理事件的过程)和生命线生命线(对(对象实例化后的生存期)等。象实例化后的生存期)等。第12章 面向对象的分析与设计 26时序图示例时序图示例:计算机:计算机:打印服务器:打印服务器:打印机:
27、打印机:用户:用户:打印队列:打印队列图图12.9 网络打印功能的时序图网络打印功能的时序图打印打印 打印打印 打印打印 打印机空闲打印机空闲存储存储 打印机忙打印机忙打印打印 打印机空闲打印机空闲第12章 面向对象的分析与设计 27协作图及示例协作图及示例 协作图协作图描述对象间的协作关系。协作图描述对象间的协作关系。协作图主要包括主要包括对象对象、事件事件、关联关联和和消息去向消息去向四个部分。四个部分。图图12.10 网络打印功能的协作图网络打印功能的协作图:打印机:打印机:打印服务器:打印服务器:计算机:计算机打印打印:打印队列打印队列打印打印打印机空闲打印机空闲打印文件打印文件打印机
28、忙打印机忙存储存储第12章 面向对象的分析与设计 28功能模型功能模型 OOA的的功能模型功能模型采用类似于数据流图的形式。它表示采用类似于数据流图的形式。它表示产品在不考虑动作次序的情况下,各种不同动作操作产品在不考虑动作次序的情况下,各种不同动作操作(功能)的相关性。(功能)的相关性。结构化方法的数据流图和面向对象的功能模型之间的结构化方法的数据流图和面向对象的功能模型之间的差别主要和数据存储有关。结构化方法的数据存储是差别主要和数据存储有关。结构化方法的数据存储是当做文件保存的,而面向对象一个类的状态变量也是当做文件保存的,而面向对象一个类的状态变量也是数据存储,所以功能模型的数据存储包
29、含类的存储和数据存储,所以功能模型的数据存储包含类的存储和不属于类的数据存储两种。不属于类的数据存储两种。第12章 面向对象的分析与设计 29面向对象面向对象分析过程分析过程 面向对象分析在定义了使用方式后,即开始面向对象分析在定义了使用方式后,即开始软件的建模过程。软件的建模过程。面向对象分析过程并不是从考虑对象开始,面向对象分析过程并不是从考虑对象开始,而是从理解系统的使用方式开始。而是从理解系统的使用方式开始。如果系统是人机交互的,则考虑被人使用的如果系统是人机交互的,则考虑被人使用的方式;如果系统是涉及过程控制的,则考虑被方式;如果系统是涉及过程控制的,则考虑被机器使用的方式;如果系统
30、是协调和控制应用机器使用的方式;如果系统是协调和控制应用的,则考虑被其他程序使用的方式。的,则考虑被其他程序使用的方式。第12章 面向对象的分析与设计 30面向对象面向对象分析分析步骤步骤l1标识角色和创建用例模型标识角色和创建用例模型l2类类-责任责任-协作者(协作者(CRC)建模)建模l3定义结构和层次定义结构和层次 l4定义主题和子系统定义主题和子系统 l5建立各种系统模型(建立各种系统模型(对象对象-关系模型、关系模型、对象对象-行为模型和功能模型行为模型和功能模型)第12章 面向对象的分析与设计 3112.3 面向对象面向对象设计(设计(OOD)第12章 面向对象的分析与设计 32面
31、向对象面向对象设计(设计(OOD)面向对象设计面向对象设计(OOD,Object-Oriented Design)是根)是根据面向对象分析(据面向对象分析(OOA)中确定的类和对象设计软件)中确定的类和对象设计软件系统。从系统。从OOA到到OOD是一个逐步建立和扩充对象模型是一个逐步建立和扩充对象模型的过程。的过程。面向对象设计模型是对系统中包含的对象或对象类,面向对象设计模型是对系统中包含的对象或对象类,以及它们之间的不同类型关系的描述。以及它们之间的不同类型关系的描述。OOD设计过程的一个重要步骤,就是根据所开发的系设计过程的一个重要步骤,就是根据所开发的系统类型,选择设计模型和设计模型的
32、细节层次,并尽统类型,选择设计模型和设计模型的细节层次,并尽量减少模型使用的数量。量减少模型使用的数量。第12章 面向对象的分析与设计 33面向对象面向对象设计模型设计模型 面向对象的设计一般通过以下两类设计模型描述:面向对象的设计一般通过以下两类设计模型描述:静态模型静态模型是是通过系统对象类及其之间的关系描述系通过系统对象类及其之间的关系描述系统的静态结构。统的静态结构。UML中常用分析模型的类图、用例图、中常用分析模型的类图、用例图、构件图等描述系统中元素的关系。构件图等描述系统中元素的关系。动态模型动态模型是是描述系统的动态结构和系统对象之间的描述系统的动态结构和系统对象之间的交互。交
33、互。UML中常用分析模型的时序图、协作图、状态中常用分析模型的时序图、协作图、状态图等来描述系统的行为。图等来描述系统的行为。UML的设计模型,还有的设计模型,还有域类模型域类模型、包模型包模型(包图)等。(包图)等。第12章 面向对象的分析与设计 34域类模型域类模型应用领域的商业模型分析,需要确定所有处理的概应用领域的商业模型分析,需要确定所有处理的概念及概念间的关系,给出域类的基本关系和类中的部念及概念间的关系,给出域类的基本关系和类中的部分方法和数据的定义。分方法和数据的定义。一般是通过一般是通过版类版类来定义域类的。版类可以用来表示来定义域类的。版类可以用来表示类的对象,是关键域的一
34、部分,应永久地保存在系统类的对象,是关键域的一部分,应永久地保存在系统中。中。域类模型描述的只是一个域类模型描述的只是一个“草图草图”状态,定义的属状态,定义的属性和操作不是最后的版本,只是在性和操作不是最后的版本,只是在“当前当前”看来这些看来这些属性和操作是比较合适的。某些域类的状态需要用状属性和操作是比较合适的。某些域类的状态需要用状态图进一步分析。态图进一步分析。第12章 面向对象的分析与设计 35包模型包模型 在在UML中,包模型是一个封装结构,它不直接反映中,包模型是一个封装结构,它不直接反映系统中的实体,而是某一指定功能域或技术域的处理。系统中的实体,而是某一指定功能域或技术域的
35、处理。然而,它们能由构造结构(如然而,它们能由构造结构(如Java程序库)构成。程序库)构成。由于包模型能清晰地说明设计是如何由一组逻辑上由于包模型能清晰地说明设计是如何由一组逻辑上相关联的对象构成的,所以它是一种最有效的静态模相关联的对象构成的,所以它是一种最有效的静态模型。型。包模型的描述工具是包模型的描述工具是包图包图。包图由包和包之间的联。包图由包和包之间的联系组成。一般,简单描述包可直接在大矩形中给出包系组成。一般,简单描述包可直接在大矩形中给出包的名称。如果包中还包含了其他子包,则可以嵌套描的名称。如果包中还包含了其他子包,则可以嵌套描述。述。第12章 面向对象的分析与设计 36包
36、图示例包图示例 子系统子系统图书借阅图书借阅图图12.22 图书馆系统体系结构包图图书馆系统体系结构包图子系统子系统图书维护图书维护子系统子系统信息查询信息查询图书借阅图书借阅图图12.23 图书借阅子系统体系结构包图图书借阅子系统体系结构包图子系统子系统 交互界面交互界面子系统子系统 标识图书标识图书子系统子系统 标识借阅标识借阅管 理 所 有 的管 理 所 有 的与外部通信与外部通信标 识 借 阅 者标 识 借 阅 者并更新信息并更新信息标 识 图 书 并标 识 图 书 并更新信息更新信息第12章 面向对象的分析与设计 37面向对象面向对象设计过程设计过程面向对象设计可直接继承分析阶段的类
37、图和交互图面向对象设计可直接继承分析阶段的类图和交互图等分析结果,然后确定每个类内部的数据和方法,以等分析结果,然后确定每个类内部的数据和方法,以及每个方法的处理算法、过程和接口等。及每个方法的处理算法、过程和接口等。面向对象设计过程一般仍分为面向对象设计过程一般仍分为结构设计结构设计和和详细设计详细设计。结构设计主要定义包或子系统、以及包或子系统间结构设计主要定义包或子系统、以及包或子系统间的关系和基本的通信机制。结构设计的原则是包或子的关系和基本的通信机制。结构设计的原则是包或子系统间的相关性要尽可能少,要尽可能避免双方相关系统间的相关性要尽可能少,要尽可能避免双方相关性。性。第12章 面
38、向对象的分析与设计 38面向对象面向对象设计过程设计过程详细设计主要是描述用户接口和数据库包中详细设计主要是描述用户接口和数据库包中的类,扩展和细化业务对象类的描述,将包或的类,扩展和细化业务对象类的描述,将包或子系统的内容细化,即尽可能详细地描述每一子系统的内容细化,即尽可能详细地描述每一个类,使得编程人员根据它们可以很容易地编个类,使得编程人员根据它们可以很容易地编码。码。细节设计的方法是更详细地产生新的类图、细节设计的方法是更详细地产生新的类图、状态图和活动图等,这些图涉及到更多的技术状态图和活动图等,这些图涉及到更多的技术细节。细节。第12章 面向对象的分析与设计 39系统上下文和使用
39、模型系统上下文和使用模型 系统上下文和使用模型是表达系统和环境之间关系的系统上下文和使用模型是表达系统和环境之间关系的两个补充模型。两个补充模型。系统上下文模型系统上下文模型是一个静态模型,描述环境中与之是一个静态模型,描述环境中与之相关的其他系统(这实际是系统总的体系结构描述),相关的其他系统(这实际是系统总的体系结构描述),通常用关联模型表示。通常用关联模型表示。系统使用模型系统使用模型是一个动态模型,描述系统是如何与是一个动态模型,描述系统是如何与环境交互的,通常用环境交互的,通常用UML中的用例模型描述与系统的中的用例模型描述与系统的交互,用脚本描述每一个用例的交互细节(对象和操交互,
40、用脚本描述每一个用例的交互细节(对象和操作)。作)。第12章 面向对象的分析与设计 40体系结构设计体系结构设计体系结构设计基于系统上下文和交互环境的分析,体系结构设计基于系统上下文和交互环境的分析,并结合有关体系结构设计的一般性知识和具体的领域并结合有关体系结构设计的一般性知识和具体的领域知识。知识。体系结构描述的关键:标识和建立包间相关性规则,体系结构描述的关键:标识和建立包间相关性规则,使得包间不存在双方相关性;明确必须的标准库和其使得包间不存在双方相关性;明确必须的标准库和其他库,如用户接口、数据库和通信包等。他库,如用户接口、数据库和通信包等。体系结构设计一般采用包模型加上对象模型描
41、述系体系结构设计一般采用包模型加上对象模型描述系统的逻辑分组。可以使用统的逻辑分组。可以使用UML的包图来表示子系统模的包图来表示子系统模型,并能对系统体系结构进行有效得分层次的分解。型,并能对系统体系结构进行有效得分层次的分解。第12章 面向对象的分析与设计 41对象识别对象识别面向对象分析已有了系统的主要对象,而设计过程面向对象分析已有了系统的主要对象,而设计过程还会有很多对象浮现出来,必须识别、细化和记录相还会有很多对象浮现出来,必须识别、细化和记录相关的其他对象,并多次反复对象识别工作。关的其他对象,并多次反复对象识别工作。在设计过程中,需要综合使用许多知识来发现对象在设计过程中,需要
42、综合使用许多知识来发现对象和对象类。先是从非形式化的系统描述中识别出对象和对象类。先是从非形式化的系统描述中识别出对象和操作,然后再使用应用领域知识和脚本来分析细化和操作,然后再使用应用领域知识和脚本来分析细化和扩展这些对象。和扩展这些对象。第12章 面向对象的分析与设计 42对象接口的描述对象接口的描述对不同组件之间的接口描述是设计过程的重要部分。对不同组件之间的接口描述是设计过程的重要部分。对象接口设计关心的是如何详细描述一个对象或一对象接口设计关心的是如何详细描述一个对象或一组对象的接口细节,这需要定义服务目标和语义。组对象的接口细节,这需要定义服务目标和语义。对象和接口之间没有必要是简
43、单的一对一的关系。对象和接口之间没有必要是简单的一对一的关系。同一个对象可能有多个接口,从不同角度观察对象,同一个对象可能有多个接口,从不同角度观察对象,可以得到不同的接口。接口设计中应避免涉及接口的可以得到不同的接口。接口设计中应避免涉及接口的具体表示,而是将接口的具体实现隐藏起来,只提供具体表示,而是将接口的具体实现隐藏起来,只提供访问对象操作和修改数据,这样将利于该组件和其他访问对象操作和修改数据,这样将利于该组件和其他组件对象并行设计。组件对象并行设计。第12章 面向对象的分析与设计 43构件类设计构件类设计 面向对象方法软件设计质量的一个重要方面,是定义面向对象方法软件设计质量的一个
44、重要方面,是定义对象和构件连接的程序构件,并标识存在对象间的接对象和构件连接的程序构件,并标识存在对象间的接口和对象的整体结构。口和对象的整体结构。1任务管理构件设计任务管理构件设计设计管理并发任务构件的策略:确定任务的特征、定设计管理并发任务构件的策略:确定任务的特征、定义协调者任务和关联的对象、集成协调者和其他任务。义协调者任务和关联的对象、集成协调者和其他任务。2数据管理构件设计数据管理构件设计数据管理构件的设计包括管理对象所需的属性和操作数据管理构件的设计包括管理对象所需的属性和操作的设计,相关的属性被附加于问题域中的每个对象。的设计,相关的属性被附加于问题域中的每个对象。第12章 面
45、向对象的分析与设计 44构件类设计构件类设计 3资源管理构件设计资源管理构件设计面向对象软件(产品)子系统往往同时竞争系统资源,面向对象软件(产品)子系统往往同时竞争系统资源,应该为其设计一个良好的控制机制。应该为其设计一个良好的控制机制。4人机界面构件设计人机界面构件设计OOA模型通过用例和角色定义参与者使用场景,并标模型通过用例和角色定义参与者使用场景,并标识一个操作命令层次。命令层次定义了系统菜单类别,识一个操作命令层次。命令层次定义了系统菜单类别,以及系统菜单类别内可用的所有子功能。界面设计只以及系统菜单类别内可用的所有子功能。界面设计只需要针对问题域的要求,实例化具有合适特征的对象。
46、需要针对问题域的要求,实例化具有合适特征的对象。人机界面类构件一般可以通过商用的类库构造。人机界面类构件一般可以通过商用的类库构造。第12章 面向对象的分析与设计 45实例实例1:图书馆系统:图书馆系统 问题描述问题描述:一个图书馆藏有图书和期刊杂志两大类书籍,每种一个图书馆藏有图书和期刊杂志两大类书籍,每种图书图书/杂志可以有多册。杂志可以有多册。图书馆可以维护(注册、更新和删除)图书资料。图书馆可以维护(注册、更新和删除)图书资料。图书管理员在系统的支持下,负责与借书者打交道。图书管理员在系统的支持下,负责与借书者打交道。借书者可以预约目前借不到的书或杂志。借书者可以预约目前借不到的书或杂
47、志。所有人员都可以浏览图书馆的图书信息和各种告示。所有人员都可以浏览图书馆的图书信息和各种告示。系统能够在所有流行的技术环境下运行,有一个良系统能够在所有流行的技术环境下运行,有一个良好的图形交互界面。好的图形交互界面。系统应该具有良好的可扩展性。系统应该具有良好的可扩展性。第12章 面向对象的分析与设计 46图书馆系统的图书馆系统的OOA 采用面向对象方法开发的图书馆系统,主要从采用面向对象方法开发的图书馆系统,主要从借书者的角度分析系统的各种行为。借书者的角度分析系统的各种行为。图书馆系统有借书者、管理员、系统管理员和图书馆系统有借书者、管理员、系统管理员和一般浏览者四种角色。一般浏览者四
48、种角色。1.建立用例模型建立用例模型 给出图书馆系统的用例视图。给出图书馆系统的用例视图。给出系统每个用例的脚本描述,包括正常情给出系统每个用例的脚本描述,包括正常情景和异常情景的脚本描述。景和异常情景的脚本描述。第12章 面向对象的分析与设计 47图书馆系统的用例视图图书馆系统的用例视图查询图书查询图书查询系统信息查询系统信息系统管系统管理员理员借书者借书者一般浏一般浏览者览者普通管普通管理员理员借书借书还书还书续借续借预约预约查询账户查询账户注册借书注册借书者者更新借书更新借书者者注销借书注销借书者者更新标题更新标题删除标题删除标题录入书目录入书目更新书目更新书目删除书目删除书目管理借书管
49、理借书者者管理书目管理书目管理标题管理标题录入标题录入标题第12章 面向对象的分析与设计 48图书馆系统的图书馆系统的OOA 2.建立侯选类建立侯选类给出非形式化描述:给出非形式化描述:借书者借书者可以借、还、续借图书馆可以借、还、续借图书馆的的图书图书;图书馆图书馆的的管理员管理员维护维护借书者借书者、图书目录图书目录和和书书目目信息;信息;借书者借书者还可以预约没有归还的还可以预约没有归还的图书图书或新或新书书,也可以取消预约,浏览和查询个人和也可以取消预约,浏览和查询个人和图书图书信息;每本信息;每本图书图书可以有多可以有多本本,借书者借书者不能借超过规定数目的不能借超过规定数目的图书图
50、书;如果如果借书者借书者有超期的有超期的图书图书或或罚金罚金额度超过额度超过2元,则不能元,则不能借书。借书。通过筛选的侯选类有:通过筛选的侯选类有:借书者借书者、图书标题图书标题和和图书书目图书书目,分别建立它们的分别建立它们的CRC卡卡。第12章 面向对象的分析与设计 49图书馆系统的图书馆系统的CRC卡卡借书者类 责任:维护借的书目的数据和罚金,请求借、还、续借书目功能 协作者:图书书目类 图书书目类 责任:维护一个具体书目数据,通知相应的图书标题完成借、还功能 协作者:图书标题类图书标题类 责任:维护一个抽象书的数据,知道该书的可借数、预约数 协作者:图书书目类第12章 面向对象的分析
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。