软件工程第7章_第1页
软件工程第7章_第2页
软件工程第7章_第3页
软件工程第7章_第4页
软件工程第7章_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

软件工程第7章面向对象方法基础内容摘要面向对象的基本概念面向对象的分析和设计过程UML概述内容摘要面向对象的基本概念面向对象的分析和设计过程UML概述面向对象方法(OO)面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在对象概念(对象、类、和继承)基础上的方法,简称OO方法。PeterCoad和EdwardYourdon提出用下列等式识认面向对象方法:面向对象

=对象(object)

+分类(classification)

+继承(inheritance)

+通过消息的通信(communicationwithmessages)可以说,采用这四个概念开发的软件系统是面向对象的

面向对象方法的出现很快受到计算机软件界的青睐,并成为20世纪90年代的主流开发方法。分析其原因:从认知学的角度来看,面向对象方法符合人们对客观世界的认识规律面向对象方法开发的软件系统易于维护,其体系结构易于理解、扩充和修改面向对象方法中的继承机制有力支持软件的复用面向对象的基本概念1.对象(object)

对象是指一组属性以及这组属性上的专用操作的封装体

属性(attribute)通常是一些数据,有时它也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态。对象中的属性只能通过该对象所提供的操作来存取或修改

操作(operation)(也称方法或服务)规定了对象的行为,表示对象所能提供的服务封装(encapsulation)是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分离,使对象的定义和实现分开

一个对象通常可由对象名、属性和操作三部分组成2.类(class)类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例(instance)类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和行为轿车型号:字符串颜色:字符串牌照号:字符串....张经理的轿车型号=桑塔纳颜色=红色牌照号=沪AN2037....类实例对象3.继承(inheritance)继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法

矩形长宽对角线计算面积计算对角线

多边形顶点数顶点坐标计算面积旋转有时,我们定义一个类,它把一些类组织起来,提供一些公共的行为,但并不需要使用这个类的实例,而仅使用其子类的实例。我们把这种没有实例的类称为抽象类(abstractclass)。在抽象类中可以定义抽象操作,抽象操作指:只定义这个类的操作接口,不定义它的实现,其实现部分由其子类定义。抽象操作操作名用斜体字表示,也可以在操作特征(signature)后面加上特征字符串{abstract}交通工具飞行器汽车

船轿车货车

一般-特殊关系

如果一个子类只有唯一一个父类,这种继承称为单一继承。如果一个子类有一个以上的父类,这种继承称为多重继承水上交通工具

陆上交通工具

水陆两栖交通工具多重继承4.消息(message)消息传递是对象间通信的手段,一个对象通过向另一个对象发送消息来请求其服务。一个消息通常包括接收对象名、调用的操作名和适当的参数(如果有必要的话)。消息只告诉接收对象需要完成什么操作,但并不指示接收者怎样完成操作。消息完全由接收者解释,接收者独立决定采用什么方法完成所需的操作5.多态性(polymorphism)多态性是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形,作用在“圆”对象上,则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果6.动态绑定(dynamicbinding)动态绑定是指在程序运行时才将消息所请求的操作与实现该操作的方法连接起来传统的程序设计语言的过程调用与目标代码的连接(即调用哪个过程)放在程序运行前(即编译时)进行(称为静态绑定),而动态绑定则是把这种连接推迟到运行时才进行动态绑定是一种在运行时确定被执行代码的技术在一般与特殊关系中,子类是父类的一个特例,所以父类对象可以出现的地方,也允许其子类对象出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定if条件thenp:=t;elsep:=r;area:=p.getarea;getArea{abstract}polygonareahexagongetArearectanglegetArealengthwidthtrianglegetAreaVarp:polygon;Vart:triangle:=triangle.new;Varr:rectangle:=rectangle.new;内容摘要面向对象的基本概念面向对象的分析和设计过程UML概述面向对象分析

Object-OrientedAnalysis

面向对象分析的一般步骤如下:获取客户对系统的需求:包括标识场景(scenario)和用况(usecase,也称用例),以及建造需求模型用基本的需求为指南,来选择类和对象(包括属性和操作)。定义类的结构和层次。建造对象—关系模型。建造对象—行为模型。利用用况/场景来复审分析模型。分析过程1.

获取客户对系统的需求需求获取必须让客户与开发者充分地交流分析员首先标识使用该系统的不同的执行者(actor),执行者代表使用该系统的不同的角色每个执行者可以叙述他如何使用系统,或者说他需要系统提供什么功能执行者提出的每一个使用场景(或功能)都是系统的一个用况的实例,用况描述了系统的一种用法(或一个功能)所有执行者提出的所有用况构成系统的完整的功能需求

注意执行者与用户是不同的两个概念,一个用户可以扮演几个角色(执行者),一个执行者可以是用户,也可以是其他系统(应用程序或设备)得到的用况必须进行复审,以使需求完整2.

标识类和对象类和对象来自问题领域。可以先标识候选类,然后进行筛选3.定义类的结构和层次类的结构主要有两种:一般—特殊结构整体—部分结构

一般—特殊结构是一种分类结构,反映了类间的一般与特殊的关系。一般类与特殊类之间是一种“isa”的关系,如:汽车是一种交通工具。同样,特殊类还可以分为更特殊的类,这样可形成类的层次结构

整体—部分结构反映了类间的整体与部分关系。值得注意的是,整体—部分关系是对对象而言的,而不是对类的。整体—部分关系是一种“hasa”的关系,如“汽车”有“发动机”。同样,整体—部分结构也具有层次结构有的面向对象方法中,把互相协作以完成一组紧密结合在一起的责任的类的集合定义为主题(subject)或子系统(subsystem)。主题和子系统都是一种抽象,从外界观察系统时,主题或子系统可看作黑盒,它有自己的一组责任和协作者,观察者不必关心其细节。观察一个主题或子系统的内部时,观察者可以把注意力集中在系统的某一个方面。因此,主题或子系统实际上是系统更高抽象层次上的一种描述4.

建造对象——关系模型对象--关系模型描述了系统的静态结构,它指出了类间的关系(relationship)类之间的关系有关联、依赖、泛化、实现等5.

建立对象——行为模型对象--行为模型描述了系统的动态行为,它们指明系统如何响应外部的事件或激励(stimulus)建模的步骤如下评估所有的用况,以完全理解系统中交互的序列标识驱动交互序列的事件,理解这些事件如何和特定的对象相关联为每个用况创建事件轨迹(eventtrace)为系统建造状态机图复审对象--行为模型,以验证准确性和一致性

面向对象设计

(Object_OrientedDesign)

面向对象设计的一般步骤如下:系统设计将子系统分配到处理器选择实现数据管理、界面支持和任务管理的设计策略为系统设计合适的控制机制复审并考虑权衡(折衷)对象设计在过程级别(procedurallavel)设计每个操作,即设计每个操作的实现细节定义内部类为类的属性设计内部数据结构消息设计使用对象间的协作和对象--关系模型,设计消息模型复审复审设计模型并在需要时迭代。1.系统设计1)

将分析模型划分成子系统在OO系统设计中,我们把分析模型中紧密相关的类、关系等设计元素包装成子系统通常,子系统的所有元素共享某些公共的性质,它们可能都涉及完成相同的功能;它们可能驻留在相同的产品硬件中;或者它们可能管理相同的类和资源

子系统由它们的责任所刻画,即,一个子系统可以通过它提供的服务来标识。在OOD中,这种服务是完成特定功能的一组操作

子系统的设计准则是:(1)子系统应具有定义良好的接口,通过接口和系统的其它部分通信(2)除了少数的“通信类”外,子系统中的类应只和该子系统中的其它类协作(3)子系统的数量不宜太多(4)可以在子系统内部再次划分,以降低复杂性2)标识问题本身的并发性,并为子系统分配处理器通过对对象--行为模型的分析,可发现系统的并发性。如果对象(或子系统)不是同时活动的,则它们不需并发处理,此时这些对象(或子系统)可以在同一个处理器上实现。反之,如果对象(或子系统)必须对一些事件同时异步地动作,则它们被视为并发的,此时,可以将并发的子系统分别分配到不同的处理器,或者分配在同一个处理器,而由操作系统提供并发支持3)任务管理设计Coad和Yourdon提出如下管理任务对象的设计策略:(1)确定任务的类型(2)必要时,定义协调者任务和关联的对象(3)将协调者任务和其它任务集成通常可通过了解任务是如何被启动的来确定任务的类型,如事件驱动任务,时钟驱动任务。每个任务应该定义其优先级,并识别关键任务。当有多个任务时还可以考虑增加一个协调者任务,以控制这些任务协同工作4)数据管理设计通常数据管理设计成层次模式,其目的是将数据的物理存储及操纵与系统的业务逻辑加以分离数据管理的设计包括设计系统中各种数据对象的存储方式(如内部数据结构、文件、数据库),以及设计相应的服务,即为要储存的对象增加所需的属性和操作5)资源管理设计

OO系统可利用一系列不同的资源(如磁盘驱动器、处理器、通信线路等外部实体或数据库、对象等抽象资源),很多情况下,子系统同时竞争这些资源,因此要设计一套控制机制和安全机制,以控制对资源的访问,避免对资源使用的冲突

6)人机界面设计对大多数应用系统而言,人机界面本身是一个非常重要的子系统。人机界面主要强调人如何命令系统,以及系统如何向人提交信息。它包括窗口、菜单、报告的设计7)子系统间的通信子系统之间可以通过建立客户/服务器连接进行通信,也可以通过端对端(peertopeer)连接进行通信。我们必须确定子系统间通信的合约(contract),合约提供了一个子系统和另一个子系统交互的方式2.

对象设计对象设计是为每个类的属性和操作作出详细的设计,并设计连接类与它的协作者之间的消息规约(1)

对象描述对象设计的描述可以采取以下形式之一:a.协议描述:描述对象的接口,即定义对象可以接收的消息以及当对象接收到消息后完成的相关操作b.实现描述:描述传送给对象的消息所蕴含的每个操作的实现细节,实现细节包括有关对象私有部分的信息,即关于描述对象属性的数据结构的内部细节和描述操作的过程细节对对象的使用者来说,只需要协议描述就够了2)设计算法和数据结构为对象中的属性和操作设计数据结构和实现算法3.

设计模式(designpatterns)在许多面向对象系统中,存在一些类和对象的重复出现的模式。这些模式求解特定的设计问题,使面向对象设计更灵活,并最终可复用。这些模式帮助设计者复用以前成功的设计,设计者可以把这些模式应用到新的设计中一个设计模式通常可用4个基本要素来描述:1)模式名称

用于描述模式的助忆符。设计模式名应具有实际的含义,能反映模式的适用性和意图2)问题

描述何时使用模式,解释设计问题以及应用模式所必须的环境和条件3)解决方案

描述构成设计方案的各元素、它们之间的关系、各自的职责和协作方式4)效果(consequences)

描述模式应用的效果以及使用模式时的折中问题内容摘要面向对象的基本概念面向对象的分析和设计过程UML概述统一建模语言UMLUnifiedModelingLanguageUML概述为何研究UML—结束方法大战发展历史

1994年Booch和Rumbaugh在RationalSoftwareCorporation开始了UML的工作,其目标是创建一个“统一的方法”,

1995年OOSE的创始人Jacobson加盟到这项工作中,工作重点转移到创建一种统一的建模语言UML1996年6月、10月、1997年1月、11月分别推出了UML0.9、UML0.91、UML1.0、UML1.1UML是一种描绘软件蓝图的标准语言,是一种定义良好,易于表达,功能强大且普遍适用的建模语言。UML后来被对象管理组织采纳为业界标准。因此,它已成为国际标准的面向对象建模语言。JimRumbaughGradyBoochIvarJacobsonUML概述1997年11月,OMG(ObjectManagementGroup)批准把UML1.1作为基于面向对象技术的标准建模语言之后,UML进行了持续的修订和改进,先后产生了UML1.2、1.3、1.4、1.5版本2004年推出了UML2.0,UML2.0对UML1.x作了重大的修改。UML是一种通用的、统一的、可视化建模语言,即UML是采用图形方式对待开发的软件系统进行描述的语言,可以把复杂问题简单化和直观化,帮助软件设计人员理解和认识系统,抓住问题的本质,忽略非本质因素,促进问题的解决。模型元素

模型元素指模型中的实体以及实体间相互连接的关系

部分模型元素注解类属性操作对象:类属性操作状态用况

结点供应接口包依赖关联泛化主动类属性操作请求接口构件实现视图与图主题域视图(view)图(diagram)结构化静态视图类图(class)设计视图内部结构(internalstructure)协作图(collaboration)构件图(component)用况视图用况图(usecase)动态的状态机视图状态机图(statemachine)活动视图活动图(activity)交互视图顺序图(sequence)通信图(communication)物理的部署视图部署图(deployment)模型管理模型管理视图包图(package)剖面包图(package)静态视图静态视图对应用领域中的概念以及与系统实现有关的内部概念建模,主要由类以及类之间的相互关系组成,在静态视图中不描述依赖于时间的系统行为。静态视图用类图来展示设计视图设计视图对应用自身的设计结构建模,例如,将设计结构扩展成:结构化类元(classifier)、为实现功能所需的协作以及良定义接口的构件的组装。设计视图由内部结构图、协作图和构件图实现用况视图用况视图对被称为执行者的外部代理(他与特定视点的主题交互)所感受到的主题(如系统)功能建模。用况视图的意图是列出系统中的用况和执行者,并显示哪个执行者参与了哪个用况的执行。用况的行为用动态视图,特别是交互视图来表示。用况视图用用况图来展示状态机视图状态机视图对一个类的对象的可能生命历程建模。一个状态机包括用迁移连接的状态,每个状态对一个对象在其生命期中满足某种条件的一个时间段建模。当一个事件发生时,它会导致触发对象的一个状态向另一个新状态的迁移,附加在迁移上的动作或活动也同时被执行。状态机视图用状态机图来展示活动视图活动展示了包含在执行计算或工作流中的计算活动的控制流。一个动作是一个基本的计算步,一个活动结点是一组动作或子活动,一个活动可描述顺序的和并发的计算。活动视图用活动图来展示交互视图交互视图描述系统各部分中消息交换的顺序。交互视图提供了系统中行为的整体视图,也就是说,它展示了多个对象间交叉的控制流。交互视图用顺序图和通信图来展示部署视图部署视图描述了运行时结点上制品的分布。制品是一个物理实现单元,如一个文件,它也可以表示一或多个构件的实现(一种表现形式)。结点是运行时表示计算资源的物理对象,如,计算机、设备或内存。部署视图允许对分配的结果和资源分配进行评估。部署视图用部署图来展示模型管理视图模型管理视图对模型自身的组织建模。一个模型由一组保存模型元素(如类、状态机、用况)的包组成。包还可以包含其它的包,因此,一个模型从一个间接包含所有模型内容的根包(rootpackage)开始。包是操纵模型内容的单元,也是访问控制和配置控制的单元。每个模型元素可以被一个包或另一个元素拥有。模型管理信息通常展示在包图中,它是类图的变种剖面(profile)UML是用一个元模型(metamodel)定义的,元模型是指描述建模语言自身的模型。通常元模型的改变是复杂的,也是危险的。剖面机制允许在不修改基础元模型的前提下对UML作有限的变化。UML包含三个主要的可扩展结构:约束(constraints)、版型(stereotypes)和标签值(taggedvalues)约束是以自然语言或特定形式语言的正文表示的语义条件或限制,约束写在花括号中({}),如{value≥0},{or}。版型是在基于现有各类模型元素的外形中定义模型元素的新类型,它本质上是一种新元类(metaclass)。版型可以扩展语义,但不能扩展原元模型类的结构。用《

》标记版型,如《signal》。标签值是贴在任何模型元素上的被命名的信息片。下图给出了版型和标签值的应用实例版型和标签值《authorship》Schedulingtaggedvalues《authorship》author=“FrankMartin”due=Dec.31,2009

类图类图展示了系统中类的静态结构,即类与类之间的相互联系。类之间有多种联系方式,如关联(相互连接)、依赖(一个类依赖或使用另一个类)、泛化(一个类是另一个类的特殊情况)等。可以把若干个相关的类包装在一起作为一个单元(包),相当于一个子系统。一个系统可以有多张类图,一个类也可以出现在几张类图中对象图对象图是类图的实例,它展示了系统执行在某一时间点上的一个可能的快照。对象图使用与类图相同的符号,只是在对象名下面加上下划线,同时它还显示了对象间的实例链接(link)关系内部结构图内部结构图展示了类的分解,给出了组成一个结构化类元的相互连接的部分、端口和连接器手册:演出手册数据库:演出数据库售票员:售票员售票处售票内部结构图协作图协作图展示了协作的定义,是一种合成的结构图。协作是为了完成某一目的而一起工作的一组对象间的上下文关系剧院售票*

1售票亭:售票亭[*]:售票处1*终端:售票终端[*]协作图构件图构件图展示了系统中的构件(即来自应用的软件单元)

温馨提示

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

评论

0/150

提交评论