第12章--面向对象的分析与设计课件.ppt

上传人:牧羊曲112 文档编号:3755309 上传时间:2023-03-19 格式:PPT 页数:67 大小:631.50KB
返回 下载 相关 举报
第12章--面向对象的分析与设计课件.ppt_第1页
第1页 / 共67页
第12章--面向对象的分析与设计课件.ppt_第2页
第2页 / 共67页
第12章--面向对象的分析与设计课件.ppt_第3页
第3页 / 共67页
第12章--面向对象的分析与设计课件.ppt_第4页
第4页 / 共67页
第12章--面向对象的分析与设计课件.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《第12章--面向对象的分析与设计课件.ppt》由会员分享,可在线阅读,更多相关《第12章--面向对象的分析与设计课件.ppt(67页珍藏版)》请在三一办公上搜索。

1、1,第12章 面向对象的分析与设计,2,面向对象开发方法,面向对象方法是一种基于对象(数据、属性、操作构成统一体)的方法。面向对象方法在概念和表示方法上的一致性,保证了软件工程各项开发活动之间的平滑(“无缝”)过渡。面向对象开发过程的核心是面向对象分析(OOA)和面向对象设计(OOD)两个阶段,但二者的界限比较模糊。OOA是分析使用实例,提取用户需求,建立问题域逻辑模型的过程;OOD是建立面向对象的求解域模型的过程。从OOA到OOD实际是一个多次反复、逐步迭代模型的过程。,3,12.1 面向对象建模,4,面向对象模型,面向对象方法开发软件的关键是对问题域的理解。采用面向对象观点建立问题域模型,

2、开发出尽可能完善的表现求解域模型的软件,是面向对象建模的目标。面向对象建模技术所建立的三种模型对象模型、动态模型和功能模型,分别从三个不同侧面描述了所要开发的系统。对象模型定义了“做什么”的实体,功能模型指明了系统应该“做什么”,动态模型明确规定在何种状态下,接受什么事件的触发而“做什么”。,5,对象模型,对象模型是一个类(属性和行为)、对象(类的实例)、类和(或)对象之间关系的定义集。对象模型表示静态的、结构化系统的“数据”性质,为建立动态模型和功能模型提供了实质性的框架。对象模型把面向对象的概念与常用的信息建模概念结合起来,增强了模型的可理解性和表达能力。对象模型还表示了类/对象之间的结构

3、关系。类/对象之间的关系一般可概括为关联、归纳(泛化)、组合(聚集)三类。,6,动态模型,动态模型表示瞬间的、行为化的系统“控制”性质,它规定了对象模型中对象的合法变化序列。对象有自己的运行周期,由多个阶段组成,每个特定阶段都有规范该对象的行为的一组运行规则。对象的状态是对象属性的一种抽象,事件是某个特定时刻发生的一个系统行为,是引起对象状态转换的控制信息。对象对事件的响应,取决于当时的状态,响应包括改变自己的状态,或者是形成一个新的触发行为(事件)。动态模型描绘对象的状态,触发状态转换的事件,以及对象行为(对事件的响应),即基于事件共享而互相关联的一组状态集合构成了系统的动态模型。,7,功能

4、模型,功能模型表示变化的系统的“功能”性质,指明了系统应该“做什么”。它更直接地反映了用户对目标系统的需求,有助于软件开发人员更深入地理解问题域,改进和完善自己的分析和设计。功能模型由一组数据流图组成。顶层数据流图中的处理,对应于复杂对象提供的服务;低层数据流图中的处理,对应于基本对象(复杂对象的组成部分)的服务。一个处理可能对应多个服务,或者是一个服务可能对应多个处理。功能模型的数据流图远不如在结构化方法中那样重要,但不能忽视功能模型的作用。,8,三种模型的关系,对象模型、动态模型和功能模型相辅相承,使得对系统的需求分析和设计描述更加直观、全面。对象模型是最基本、最重要的模型。为每个类建立的

5、动态模型,描述了类和实例的运行周期。功能模型中的处理,可能产生动态模型中的事件。动态模型中的状态转换驱使行为发生。这些行为在数据流图中被映射成处理,同时与对象模型中的服务相对应。,9,三种模型的关系,功能模型中的处理,对应于对象模型中类/对象所提供的服务。功能模型中的数据存储、数据的源点/终点(在功能模型中称为动作对象)是对象模型中的对象;功能模型中的数据流是对象模型中的属性值,或者是整个对象。对象模型描述了功能模型中的动作对象、数据存储,以及数据流的结构。,10,统一建模语言(UML),面向对象开发范型阶段之间的过渡是“无缝”的,定义对象抽象类和建立面向对象系统的各类模型,需要一组便于描述的

6、图形符号,并规定用这些符号表示特定模型的语义规则。统一建模语言(UML)是专门设计的一种统一描述面向对象方法的符号系统。UML是一种基于面向对象的可视化建模语言,实现了基于面向对象的建模工具的统一,已成为国际、国内可视化建模语言实际上的工业标准。,11,UML的组成,UML用图形符号隐含表示了模型元素的语法,用这些图形符号组成元模型表达语义,组成模型描述系统结构(或称为静态特征)以及行为(或称为动态特征)。UML定义了两类模型元素。一类模型元素用于表示模型中的某个概念,如类、对象、用例、结点、构件、包、接口等;另一类模型元素用于表示模型元素之间相互连接的关系,主要有关联、泛化(表示一般与特殊的

7、关系)、依赖、聚集(表示整体与部分的关系)等。,12,UML部分模型元素的图形表示,13,UML模型结构,根据UML语义,UML模型结构可分为元元模型、元模型、模型和用户模型四个抽象层次结构。它们的层次关系是下一层是上一层的基础,上一层是下一层的实例。元元模型层定义描述元模型的语言,它是任何模型的基础。UML元元模型定义了元类、元属性、元操作等概念。元模型层定义描述模型的语言,它是组成UML模型的基本元素,包括面向对象和构件的概念。元模型是元元模型的一个实例。模型层定义描述信息领域的语言,它组成了UML模型。用户模型层表达一个模型的特定情况,是模型的实例。,14,UML模型结构和示例,15,U

8、ML模型,UML可以从不同视角为系统建模,形成不同的视图。每个视图是系统完整描述中的一个抽象,代表该系统一个特定的方面;每个视图又由一组图构成,图包含了强调系统某一方面的信息。UML提供了两类图:静态图和动态图(共计九种)。静态图包括用例图、类图、对象图、构件图和部署图。动态图包括状态图、时序图、协作图和活动图。UML提供了五种视图,包括用例视图、结构模型(逻辑)视图、行为模型(并发)视图、实现模型(构件)视图和部署视图。,16,UML的特点和应用,UML是面向对象的用例模型、类/对象模型、动态模型等不同系统模型的图形符号描述。它所提供的表示模型元素的图形和方法,能简洁明确地表达面向对象技术的

9、主要概念和建立各类系统模型。它的标准化定义、可视化描述、可扩展性机制等,显示了UML强大的生命力。UML作为面向对象技术最重要的一种建模语言工具,特别能从不同的视角为系统建模。UML适用于各种复杂类型的系统,乃至系统各个层次的建模,而且适用于系统开发过程的不同阶段。,17,12.2 面向对象分析模型,18,面向对象分析模型,面向对象分析(OOA,Object-Oriented Analysis)是采用面向对象思路进行需求分析建模的过程。面向对象的分析模型主要有用例模型、类/对象模型、对象-关系模型和对象-行为模型等。类/对象模型描述系统所涉及的全部类/对象,每个类/对象都通过属性、操作、协作者

10、进一步描述;对象-关系模型描述对象之间的静态关系,同时定义了系统所有重要的消息路径,它也可以涉及到对象的属性、操作、协作者;对象-行为模型描述了系统动态行为。,19,OOA模型的结构,OOA模型的核心是使用实例(简称用例)。需求分析通过创建一组场景,每个场景包含一个用例,从场景分析入手,进一步抽取和定义OOA模型。因此,OOA也可以说是一种半形式化的规格说明技术。,20,用例模型,用例模型是一种基于场景分析的,OOA的一个最基本、最重要的需求导出技术。一个用例是系统某个动作步骤的集合,主要由角色和动作组成。角色是存在于系统之外的任何事物;动作是系统的一次执行,由角色触动。建立用例模型主要是识别

11、角色和用例,给出系统用例视图(可以分层次的)描述和每个用例的实例脚本(文字)描述。,21,用例视图及示例,UML中,用例视图由角色、用例、关联和系统边界组成。,22,对象-关系模型,UML中,对象-关系模型分别用类图和对象图描述。类图包括类、类之间的关联、类关联重数和继承等基本元素。对象图是系统运行某个时刻对象之间的关联关系。对象图是类图的一个实例,类似于对象是类的一个实例。对象图和类图的区别是类图中的关联表示两个类是有联系的,而在某个时刻它们可能没有联系,表现在对象图中它们之间就没有关系,也就是说,只要在某个时刻对象之间有过联系,那么在类图中就认为它们存在连接关系。,23,类图和对象图示例,

12、24,对象-行为(动态)模型,对象行为模型(动态模型),说明对象的操作是如何进行的。UML中,对象-行为模型采用时序图、协作图和状态(转换)图描述。时序图和协作图都是描述对象的动态行为,两者从不同的侧面,反映了系统中对象是如何交互完成功能的;不同之处是时序图注重对象交互的时间关系,协作图注重对象的空间协作关系。状态图描述系统中对象的状态变化,常用于单个对象对不同事件的响应行为状态建模。,25,时序图,时序图描述对象间的事件序列的交换和相互关系,常用于对一群对象的组合行为建模。UML的时序图主要包括对象、事件(对象发送的消息)、激活区(对象被事件激活和处理事件的过程)和生命线(对象实例化后的生存

13、期)等。,26,时序图示例,27,协作图及示例,协作图描述对象间的协作关系。协作图主要包括对象、事件、关联和消息去向四个部分。,28,功能模型,OOA的功能模型采用类似于数据流图的形式。它表示产品在不考虑动作次序的情况下,各种不同动作操作(功能)的相关性。结构化方法的数据流图和面向对象的功能模型之间的差别主要和数据存储有关。结构化方法的数据存储是当做文件保存的,而面向对象一个类的状态变量也是数据存储,所以功能模型的数据存储包含类的存储和不属于类的数据存储两种。,29,面向对象分析过程,面向对象分析在定义了使用方式后,即开始软件的建模过程。面向对象分析过程并不是从考虑对象开始,而是从理解系统的使

14、用方式开始。如果系统是人机交互的,则考虑被人使用的方式;如果系统是涉及过程控制的,则考虑被机器使用的方式;如果系统是协调和控制应用的,则考虑被其他程序使用的方式。,30,面向对象分析步骤,1标识角色和创建用例模型2类-责任-协作者(CRC)建模3定义结构和层次 4定义主题和子系统 5建立各种系统模型(对象-关系模型、对象-行为模型和功能模型),31,12.3 面向对象设计(OOD),32,面向对象设计(OOD),面向对象设计(OOD,Object-Oriented Design)是根据面向对象分析(OOA)中确定的类和对象设计软件系统。从OOA到OOD是一个逐步建立和扩充对象模型的过程。面向对

15、象设计模型是对系统中包含的对象或对象类,以及它们之间的不同类型关系的描述。OOD设计过程的一个重要步骤,就是根据所开发的系统类型,选择设计模型和设计模型的细节层次,并尽量减少模型使用的数量。,33,面向对象设计模型,面向对象的设计一般通过以下两类设计模型描述:静态模型是通过系统对象类及其之间的关系描述系统的静态结构。UML中常用分析模型的类图、用例图、构件图等描述系统中元素的关系。动态模型是描述系统的动态结构和系统对象之间的交互。UML中常用分析模型的时序图、协作图、状态图等来描述系统的行为。UML的设计模型,还有域类模型、包模型(包图)等。,34,域类模型,应用领域的商业模型分析,需要确定所

16、有处理的概念及概念间的关系,给出域类的基本关系和类中的部分方法和数据的定义。一般是通过版类来定义域类的。版类可以用来表示类的对象,是关键域的一部分,应永久地保存在系统中。域类模型描述的只是一个“草图”状态,定义的属性和操作不是最后的版本,只是在“当前”看来这些属性和操作是比较合适的。某些域类的状态需要用状态图进一步分析。,35,包模型,在UML中,包模型是一个封装结构,它不直接反映系统中的实体,而是某一指定功能域或技术域的处理。然而,它们能由构造结构(如Java程序库)构成。由于包模型能清晰地说明设计是如何由一组逻辑上相关联的对象构成的,所以它是一种最有效的静态模型。包模型的描述工具是包图。包

17、图由包和包之间的联系组成。一般,简单描述包可直接在大矩形中给出包的名称。如果包中还包含了其他子包,则可以嵌套描述。,36,包图示例,37,面向对象设计过程,面向对象设计可直接继承分析阶段的类图和交互图等分析结果,然后确定每个类内部的数据和方法,以及每个方法的处理算法、过程和接口等。面向对象设计过程一般仍分为结构设计和详细设计。结构设计主要定义包或子系统、以及包或子系统间的关系和基本的通信机制。结构设计的原则是包或子系统间的相关性要尽可能少,要尽可能避免双方相关性。,38,面向对象设计过程,详细设计主要是描述用户接口和数据库包中的类,扩展和细化业务对象类的描述,将包或子系统的内容细化,即尽可能详

18、细地描述每一个类,使得编程人员根据它们可以很容易地编码。细节设计的方法是更详细地产生新的类图、状态图和活动图等,这些图涉及到更多的技术细节。,39,系统上下文和使用模型,系统上下文和使用模型是表达系统和环境之间关系的两个补充模型。系统上下文模型是一个静态模型,描述环境中与之相关的其他系统(这实际是系统总的体系结构描述),通常用关联模型表示。系统使用模型是一个动态模型,描述系统是如何与环境交互的,通常用UML中的用例模型描述与系统的交互,用脚本描述每一个用例的交互细节(对象和操作)。,40,体系结构设计,体系结构设计基于系统上下文和交互环境的分析,并结合有关体系结构设计的一般性知识和具体的领域知

19、识。体系结构描述的关键:标识和建立包间相关性规则,使得包间不存在双方相关性;明确必须的标准库和其他库,如用户接口、数据库和通信包等。体系结构设计一般采用包模型加上对象模型描述系统的逻辑分组。可以使用UML的包图来表示子系统模型,并能对系统体系结构进行有效得分层次的分解。,41,对象识别,面向对象分析已有了系统的主要对象,而设计过程还会有很多对象浮现出来,必须识别、细化和记录相关的其他对象,并多次反复对象识别工作。在设计过程中,需要综合使用许多知识来发现对象和对象类。先是从非形式化的系统描述中识别出对象和操作,然后再使用应用领域知识和脚本来分析细化和扩展这些对象。,42,对象接口的描述,对不同组

20、件之间的接口描述是设计过程的重要部分。对象接口设计关心的是如何详细描述一个对象或一组对象的接口细节,这需要定义服务目标和语义。对象和接口之间没有必要是简单的一对一的关系。同一个对象可能有多个接口,从不同角度观察对象,可以得到不同的接口。接口设计中应避免涉及接口的具体表示,而是将接口的具体实现隐藏起来,只提供访问对象操作和修改数据,这样将利于该组件和其他组件对象并行设计。,43,构件类设计,面向对象方法软件设计质量的一个重要方面,是定义对象和构件连接的程序构件,并标识存在对象间的接口和对象的整体结构。1任务管理构件设计设计管理并发任务构件的策略:确定任务的特征、定义协调者任务和关联的对象、集成协

21、调者和其他任务。2数据管理构件设计数据管理构件的设计包括管理对象所需的属性和操作的设计,相关的属性被附加于问题域中的每个对象。,44,构件类设计,3资源管理构件设计面向对象软件(产品)子系统往往同时竞争系统资源,应该为其设计一个良好的控制机制。4人机界面构件设计OOA模型通过用例和角色定义参与者使用场景,并标识一个操作命令层次。命令层次定义了系统菜单类别,以及系统菜单类别内可用的所有子功能。界面设计只需要针对问题域的要求,实例化具有合适特征的对象。人机界面类构件一般可以通过商用的类库构造。,45,实例1:图书馆系统,问题描述:一个图书馆藏有图书和期刊杂志两大类书籍,每种图书/杂志可以有多册。图

22、书馆可以维护(注册、更新和删除)图书资料。图书管理员在系统的支持下,负责与借书者打交道。借书者可以预约目前借不到的书或杂志。所有人员都可以浏览图书馆的图书信息和各种告示。系统能够在所有流行的技术环境下运行,有一个良好的图形交互界面。系统应该具有良好的可扩展性。,46,图书馆系统的OOA,采用面向对象方法开发的图书馆系统,主要从借书者的角度分析系统的各种行为。图书馆系统有借书者、管理员、系统管理员和一般浏览者四种角色。1.建立用例模型 给出图书馆系统的用例视图。给出系统每个用例的脚本描述,包括正常情景和异常情景的脚本描述。,47,图书馆系统的用例视图,48,图书馆系统的OOA,2.建立侯选类给出

23、非形式化描述:借书者可以借、还、续借图书馆的图书;图书馆的管理员维护借书者、图书目录和书目信息;借书者还可以预约没有归还的图书或新书,也可以取消预约,浏览和查询个人和图书信息;每本图书可以有多本,借书者不能借超过规定数目的图书;如果借书者有超期的图书或罚金额度超过2元,则不能借书。通过筛选的侯选类有:借书者、图书标题和图书书目,分别建立它们的CRC卡。,49,图书馆系统的CRC卡,50,图书馆系统的OOA,3.构建类图需要一个“借/还”类来存储借书者的借书记录,一个预约者的“预约”类来存储预约记录。最终的类:借书者、图书标题、图书书目、借/还、预约。建立图书馆系统的类图。,51,图书馆系统的类

24、图,借/还类和预约类,也称为关联类分别画在借/还/续借和预约/删除预约关联上,表明它们不仅仅与借书者、图书标题、图书书目之中的某个类关联,而且与它们的关联相关。,52,图书馆系统的OOA,4.动态建模 图书馆系统借书(未预约)功能的动态建模可以选择使用时序图、协作图、状态图和活动图描述。,53,图书馆系统的时序图,54,图书馆系统的协作图,55,图书馆系统的活动图,56,图书馆系统的OOD,1领域建模对图书馆系统进一步分析,将系统中的领域和关键类条理化,得出商业域类模型。图书馆系统类操作的细化,分析时通过协作图、时序图、活动图等给出描述了。其中,当使用时序图建模时,很显然需要窗口(或对话框)作

25、为与角色的接口。借书、还书、预约、续借等都需要窗口,维护窗口也是必要的。,57,图书馆系统商业域类模型,58,图书馆系统时序图(有借书窗口),59,图书馆系统的OOD,2结构设计图书馆系统的架构用UML的包图描述。图书馆系统架构设计成四个子系统包:用户接口包 业务对象包 数据库包 应用包,60,图书馆系统的系统架构包图,61,图书借阅子系统包图,62,图书馆系统的OOD,3细节设计 UML中的动态模型被用来显示类的对象在指定的情况下如何动作,用例描述被用来验证用例在设计中的处理。还必须进行以下一些类/对象的细节设计:永久存储对象 细化业务对象 用户界面类,63,图书馆系统(部分)类属性和操作,

26、64,用户接口(部分)包类图,65,图书馆系统的OOD,4设计进化面向对象设计方法一个重要优势是开发的系统易维护。这是因为对象是可以被当作一个独立的实体去理解和修改的,变更对象的实现和添加新的服务不会影响系统中其他对象;对象也可以作为可复用的组件,这减少了设计、编程和维护的成本,降低了开发的风险。例如,在图书馆的借/还书功能中,若现在要考虑预约功能,那么只需要增加一个预约类,同时在“Borrower”类中增加预约操作就可以了。,66,小结,面向对象方法是一种基于对象(数据、属性、操作所构成的统一体)的方法。面向对象方法在概念和表示方法上的一致性,保证了软件工程各项开发活动之间的平滑(“无缝”)过渡。这是面向对象方法能有效跟踪整个系统开发过程的优势。用面向对象观点建立系统的模型,能促进和加深对系统的理解,有助于开发出更容易理解、更容易维护的软件。面向对象建模的描述工具是统一建模语言UML。,67,小结,面向对象的三种模型分别是描述系统静态结构的类模型和对象模型、描述系统控制结构的动态模型、描述系统功能结构的功能模型。其中,类/对象模型是最基本、最重要的模型。在面向对象的软件开发过程中,分析与设计活动二者之间的界限是模糊的。它们分析和设计系统的对象和对象类,通过构造类模型、对象模型、动态模型和功能模型等,进而映射成系统的设计和实现。这是一个多次反复、逐次迭代、逐步精化的过程。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号