《面向对象系统的分析与设计.doc》由会员分享,可在线阅读,更多相关《面向对象系统的分析与设计.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、?面向对象系统的分析与设计?学习报告面向对象系统的分析与设计课程是本专业的一门重要的专业课。通过本课程的学习,使我在已有的计算机软硬件根底知识、程序设计知识、数据库和网络通信知识的根底上系统掌握了面向对象系统的分析与设计方法和技术,并初步具备了针对特定环境下的应用问题进展信息系统开发包括系统分析、设计与实现的能力。现将学习情况作以下汇报。一、面向对象概述在20世纪60年代以前,软件开发者构造的软件系统大多都是较小的,且相对简单。编程语言及编程环境也相对简单,随着软件复杂性的增长,为了更好地维护代码,软件开发也需要方法来进展约束。传统的方法中,构造化方法和基于建模方法是典型的软件开发方法。构造化
2、方法是构造化分析、构造化设计和构造化编程的总称。构造化方法的思想萌发于20世纪60年代,是在70年代由Tom De Macro和Ed Yourdon等人被系统地进出来。其目的在于,提供一个有序的机制,通过抽象来理解待开发的系统,试图产生构造良好的软件系统。但对于较复杂的系统而言,容易导致模块的低内聚和模块间的高耦合,从面使得系统缺乏灵活性和可维护性。基于建模方法在20世纪70年代末提出,即Peter Chen的实体关系法与Ed Codd的关系数据库理论相结合提出的一种新的软件开发方法。其强调对信息实体建模,而不是对象建模。构造化方法和基于建模方法都没有较强地描述系统的动态行为的能力。随着计算机
3、技术的飞速开展,计算机管理系统应用的普及,企业信息化势在必行。传统开发方法构造化开发的软件存在很多问题,其有稳定性、可修改性和可重用性都比拟差,生产效率低等缺陷,这是因为传统的软件开发是面向过程的。然而,用户需求的变化大局部是针对功能的,采用面向对象方法开发可以满足用户的需求,因为面向对象有以下优点:能够比拟自然地反映现实事物,可重用性、可维护性和可扩展性比拟强。什么是面向对象呢?“面向对象本身没有任何意义。“对象大概是英语中最普通的一个单词。它在字典中的定义是这样的。对象:能感觉到或能够被感觉到的东西。换句话说,对象可以是任何东西!“面向也没有任何特别的含义,它的定义是“指向。在这种定义下,
4、“面向对象被理解为形容词。因此,面向对象可以定义成这样,面向对象:指向你可以想到的任何东西。毫无疑问,软件工业无法为“面向对象下一个统一的定义。这种模糊性使得任何一个软件零售商都声称他们的商品是“面向对象的。1面向对象的根本概念尽管权威人士对面向对象的概念没有达成一致的意见,但从程序设计方法的角度来看,面向对象是一种新的程序设计范型。其根本思想是使用对象、类、封装、继承、关联、聚合、消息、多态性等根本概念来进展程序设计。1.1对象(Object)对象是人们要进展研究的任何事物,它可以是有形的(比方一辆汽车),也可以是无形的(比方一项方案)。对象是构成世界的一个独立单位,它具有自己的静态特征和动
5、态特征。对象是系统中用来描述客观事物的一个实体,它是构成系统的一个根本单位。一个对象由一组属性和对这组属性进展操作的一组效劳构成。1.2类(Class)具有一样或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。类确实定主要是确定该类的所有对象有哪些属性和哪些行为。这些属性和行为必须覆盖该类中的所有对象。例如在一个学生类中,它的属性有姓名、学号、性别、所在院系,它的行为有选课、注册等。抽象是指忽略事物的非本质特征,只注意那些与当前目标有拳本质特征,从而找出事物的共性;而分类是把具有共同性质的事物划分为一类,得出一个抽象的概念。另外,每一个属性与行为都
6、被封装后,只能在类的内部起作用。1.3封装Encapsulation为了实现信息的隐蔽,又提出了封装,就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。1.4继承Inheritance任何一个子类都具有其父类所有的属性、方法、事件。这一特性叫做类的继承。如果父类的特性发生变化,其子类也相应改变。面向对象的编程技术强调了代码的重用性,而可重用性即是能过继承来实现的。简化了人们对事物的认识和描述,也简化了系统的构造强度及其文档,非常有益于软件复用。类之间的静态联系称为关联。关联表示了类与类之间的关系,在实现这种关系时,可以通过对象的属性表达出来。例如“,学生与“课程类之间存在
7、着关联“选课,用类“学生的对象的属性来记录该对象具体选课的课程对象(由“课程类创立)。是关联的一种,只是关联的语义没有聚合那么明显。聚合是具有整体一局部关系语义的关联。1.7消息Message在面向对象方法中,把向对象发出的操作请求称为消息。对象之间通过消息进展通信,实现了对象之间的动态联系。面向对象设计借鉴了客观世界的多态性,表达在不同的对象收到一样的消息时产生多种不同的行为方式。例如,在一般类“几何图形中定义了一个行为“绘图,但并不确定执行时到底画一个什么图形。特殊类“椭圆和“多边形都继承了几何图形类的绘图行为,但其功能却不同,一个是要画出一个椭圆,另一个是要画出一个多边形。这样一个绘图的
8、消息发出后,椭圆、多边形等类的对象接收到这个消息后各自执行不同的绘图函数。面向对象方法是一种运用对象、类、封装、继承、关联、聚合、消息、多态性等概念来构造系统的软件开发方法。2面向对象的特征面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物。面向对象技术的根本特征主要有对象唯一性、分类性、继承性和多态性。每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有一样的标识。分类性是指将具有一致的数据构造(属性)和行为(操作)的对象抽象成类。
9、一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。继承性是子类自动共享父类数据构造和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的根底之上来进展,把这个已经存在的类所定义的内容作为自己的内容,并参加假设干新的内容。继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。采用继承性,提供了类的标准的等级构造。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。2.4多态性(多形性)多态性使指一样的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。
10、不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。3面向对象开发的工作过程面向对象开发的过程一般包括:系统调查和需求分析、分析问题的性质和求解问题、整理问题、程序实现。对系统将要面临的具体管理问题以及用户对系统开发的需求进展调查研究,即先弄清要干什么的问题。面向对象系统分析(ObjectOrientedAnalysisOOA),在繁杂的问题域中抽象地识别出对象以及其行为、构造、属性、方法等。面向对象系统设计(ObjectOrientedDesignOOD)即对分析的结果作进一步地抽象、归类、整理
11、,并最终以范式的形式将它们确定下来。面向对象的程序设计(ObjectOrientedProgramming)即用面向对象的程序设计语言将上一步整理的范式直接映射直接用程序语言来取代为应用程序软件。4面向对象开发的常用方法目前,面向对象开发方法的研究已日趋成熟,国际上已有不少面向对象产品出现。面向对象开发方法有Coad方法、Booch方法、OMT方法和UML(UnifiedModelingLanguage)语言等。Booch最先描述了面向对象的软件开发方法的根底问题,指出面向对象开发是一种根本不同于传统的功能分解的设计方法。面向对象的软件分解更接近人对客观事务的理解,而功能分解只通过问题空间的转
12、换来获得。Coad方法是1989年Coad和Yourdon提出的面向对象开发方法。该方法的主要优点是通过多年来大系统开发的经历与面向对象概念的有机结合,在对象、构造、属性和操作的认定方面,提出了一套系统的原那么。该方法完成了从需求角度进一步进展类和类层次构造的认定。尽管Coad方法没有引入类和类层次构造的术语,但事实上已经在分类构造、属性、操作、消息关联等概念中表达了类和类层次构造的特征。OMT方法是1991年由JamesRumbaugh等5人提出来的,其经典著作为“面向对象的建模与设计。该方法是一种新兴的面向对象的开发方法,开发工作的根底是对真实世界的对象建模,然后围绕这些对象使用分析模型来
13、进展独立于语言的设计,面向对象的建模和设计促进了对需求的理解,有利于开发得更清晰、更容易维护的软件系统。该方法为大多数应用领域的软件开发提供了一种实际的、高效的保证,努力寻求一种问题求解的实际方法。4.4UML(UnifiedModelingLanguage)语言软件工程领域在1995年1997年取得了前所未有的进展,其成果超过软件工程领域过去15年的成就总和,其中最重要的成果之一就是统一建模语言UML)的出现。UML将是面向对象技术领域内占主导地位的标准建模语言。UML不仅统一了Booch方法、OMT方法、OOSE方法的表示方法,而且对其作了进一步的开展,最终统一为群众承受的标准建模语言。U
14、ML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开场的软件开发全过程。二、面向对象系统的分析在进展了需求分析和业务流程分析并得到客户的认可之后,对工程进展系统分析是极其重要的。系统分析是能表达整个系统的灵魂的文档,将客户的需求从具体到抽象的一个过程,并制定编码人员可实施的标准和标准。在系统分析的过程中需要对需求分析进展进一步的深化和分析,通常客户及业务人员在需求分析和流程分析的过程中比拟注重功能上的表现和定义,即使是做出正规的用户界面原型,对系统的需求也是不完整的,处于非技术人员
15、的缘故,很难苛求能提出完整清晰专业的性能需求,但不意味着这需求不存在,而且这隐藏的需求对编码人员来说是极其重要的。如果眼光仅仅放在满足客户眼下的需求,当问题不断出现时再不断修补,头痛医头,脚痛医脚,甚至系统构架需要不断调整或重新设计,那么,很快就会陷入代码泥潭或坠入系统重复开发的无底深渊,当初工程完成时的成就感将被无止境的沮丧所代替。因此,客户的需求能否在系统中得到真正的表达和实施,系统分析是至关重要的。1.对象的特性根本上,软件对象本身具有三项特性,分别是继承、封装、动态连结(即多态)。“继承特在面向对象设计上,是非常重要的一项观念,同样的数据和程序代码,不必在每个需要的地方在重写一遍。只要
16、归纳整理成一个class,需要时再重制出所需要的instance即可。简单的说,继承性是class之间的一种再分类关系,它会让几个class之间会具有一样的数据构造或操作程序,减少重复的程序代码,到达对象重复使用的目的。封装性的意思是整个对象的数据和处理程序包在一起,透过一个标准、简单的接口才能存取对象内的数据及使用对象提供的功能,这里所谓的接口就是指对象的属性properity和方法method由于软件的开发功能越强,相对的也使得系统变得更复杂,为了降低整个系统的复杂度,所以就把整体分成许多块对象,将每一块对象的复杂度降低到一般软件开发者可以负荷的程度,而且让开发者能针对每一块对象去作分析、
17、设计的工作,不会影响到其它块对象,这就是对象必须有的独立特性,而对象封装的目的就是为了到达对象的独立。但是,对象封装的前提是;对象里面封装的程序代码必须是正确的,而且要符合当初设计的需求。所谓动态连结是指在程序执行时,系统才将message和method连结在一起,而不是在编译的时候。message是送到对象的接口,用来启动对象的工具,而method那么是在message送达对象接口后,被选取的操作程序。透过动态连结的功能,我们不用事先考虑使用对象的型别,只要把message送出即可。等到程序执行中,看哪个对象应该配合这个message,再把message和这个对象的method连结,然后执行
18、这个method。一个对象是由数据Data与方法Method两局部所组成。在传统的构造化程序设计中,数据构造与函数是别离的,这样我们维护程序时会产生很大的困扰;而在对象导向中将这两个东西严密的包围在一起,使得对象内的数据只有透过适当的接口方法才能予以修改,这便是信息隐藏InformationHiding。面向对象分析的主要任务是根基用户的需求,建立一个准确的、完整的、一致的系统模型。使用面向对象分析方法能将客户变化的需求映射到模型中,大大提高系统的扩展性和开发效率。面向对象的分析方法要求在设计中要映射现实世界中指定问题域中的对象和实体,例如:房子,楼盘,开发商,业主等。这就需要设计要尽可能地接
19、近现实世界,即以最自然的方式表述实体。所以面向对象技术的优点即为能够构建与现实世界相对应的问题模型,并保持他们的构造、关系和行为为模式。面向对象的概念是在近10年才进入中国的,而它的思想至今也没有真正意义上得到普及。简单的说,面向对象就是面向世界,世界上的任何事物都是对象,因此面向对象是很自然的思想,是符合我们的思维习惯的。面向对象的语言包括了Smalltalk、C+、Java,C#需求是不稳定的,那么需求之中是不是没有稳定的东西呢?有的,就是对象。世界都是由对象组成的,而对象都是持久的,例如动物、植物已经有相当长的时间。虽然对象也在变化,动物,植物也在不断的进化。但对象在一个相当长的时期内都
20、存在,动植物的存在时间肯定比任何一家企业长久。面向对象的开发方法的精华就是从企业的不稳定需求中分析出企业的稳定对象,以企业对象为根底来组织需求、构架系统。这样得出的系统就会比传统的系统要稳定得多,因为企业的模式一旦变化,只需要将稳定的企业对象重新组织就行了。这种开发的方法就被称为面向对象的分析和设计,而分析出的企业对象就被称为BusinessObject。3.面向对象系统的分析方法面向对象分析的关键,是识别出问题域内的对象,并分析它们之间的关系,最终建立起问题域简洁、准确、可理解的正确模型。面向对象分析建模需要建立的是软件系统的用户领域模型,需要着重了解的是该软件系统的需求概念与术语,其分析内
21、容是现实世界中的实体对象和各对象之间的关系,并不涉及编程概念。3.1用况图需求模型UML建模语言中,用况图被用来描述用户与系统之间的交互关系,说明系统所具有的业务能力和业务流程,能够方便开发者理解用户领域的专有术术语和业务内容。参入者Actor:系统之外与系统有关的类,涉及与系统交互的人,机器或其他系统,用于反映系统跟周围环境的关系。关系分为通信关系、使用关系和扩展关系。通信关系CommunicatesRelationship:描述参入者与用例之间的关系,其中单个参入者可以与多个用例联系,反之,一个用例也可与多个参入者联系。清晰的描述了“谁使用了哪个用例。用况图况例之间的关系。扩展关系Exte
22、ndsRelationship:当一个根本用例由需要附加一个用例来扩展或延伸其原有功能时,附加的扩展用例和原有用例之间的关系就表达为扩展关系。扩展用例可以继承原有根本用例的一些功能,同时它又可以具有一些新的特有功能。使用关系UsesRelationship:当在一个根本用例中使用到了另一个用例时,那么这两个用例之间就构成了使用关系。一般说来,如果多个用例中有一些共同的功能,那么可以把这些共同的功能提取出来单独构成为一个实例,而其他用例那么可以通过“使用关系共同使用这些用例。3.2类图建立根本模型类图的获取是一个不断细化的过程,一般我们先从分析类开场。分析类是概念层面上的类,是进展类设计的根底,
23、获取分析类是系统分析中一项很重要的工作。获取分析类的是一个需要大量技巧的工作,我们主要根据用例描述来确定分析类。属性与操作1属性:属性用来描述类的特征,表示需要处理的数据。2操作:对数据的具体处理方法的描述那么放在操作局部,操作说明了该类能做些什么工作,完成什么任务。操作通常称为函数,它是类的一个组成局部,只能作用于该类的对象上。确定关系3.3建立辅助模型顺序图:是一种交互图,描述对象之间的动态合作关系以及合作过程,常用来描述一个用例的行为。通信图:通信图是一种强调发送和承受消息的对象构造组织的图,用以展示围绕对象以及他们之间的连接器而组织的交互。活动图:描述操作实现中完成的工作以及用例实例或
24、对象中的活动,活动图是状态图的一个变种。状态图:描述某个对象,子系统,系统的生命周期。包图:描述对模型元素分组以及分组之间的依赖的图,其中要用到的包是对模型元素进展分组的机制。四、面向对象系统的设计设计建模需要把分析阶段的结果扩展成技术解决方案。需要建立的是软件系统的技术构造模型。从OOA到OOD不是转换;而是调整和增补。增补人机交互局部、构建及部属局部、控制驱动局部、数据管理局部。问题域局部的设计问题域局部的设计要对OOA结果按实现条件进展补充与调整。即要继续运用OOA的方法,包括概念、表示法及一局部策略。不但要根据实现条件进展OOD设计,而且由于需求变化或新发现了错误,也要对OOA的结果进
25、展修改。人机交互局部的设计把人机交互局部作为系统中一个独立的组成局部,进展分析和设计,有利于隔离界面支持系统的变化对问题域局部的影响。控制驱动局部的设计为了描述问题域固有的并发行为,表达实现所需的设计决策,需要在OOD局部对控制驱动局部进展建模。控制流驱动局部,用于定义和表示并发系统中的每个控制流。用主动对象表示每个控制流进程、线程所有的主动类构成控制流驱动局部。数据管理局部的设计数据管理局部是负责在特定的数据管理系统中存储和检索对象的组成局部。其目的是,存储问题域的持久对象、封装这些对象的查找和存储机制,以及为了隔离数据管理方案的影响。在传统的构造化设计方法中,很容易将实体关系图映射到关系数
26、据库中。而在面向对象设计中,我们可以将UML类图看作是数据库的概念模型,但在UML类图中除了类之间的关联关系外,还有继承关系。构件及部署局部的设计当前的一种主流的做法是在面向对象的系统设计阶段的后期,考虑如何对系统的构件进展描述、构造和组织,以及构件如何在节点上进展分布。五、面向对象分析与设计的开展趋势迄今为止,“面向对象本身还没有一个统一的让所有人都能承受的概念。然而,面向对象中的一些最根本的概念已经和正在被人们所承受,比方类、对象、继承、封装等;一些最有效的表示方法也正在被人们所共同采用,比方图形表示、根本输入要求和输出结果等。并且这种趋势在越是较晚出现的方法和工具中越是明显,面向对象的方
27、法学研究在计算机领域正在朝着普及化的方向开展。新的分析与设计的方法和工具将不断涌现随着SDL92和ObjectTime的问世,新的分析方法和工具将朝着动态化、标准化、可执行性、可测试性的方向开展。同时,新的面向对象的设计方法也以越来越成熟的面孔出现。新方法和工具的相继出现,将会大大缩短软件开发周期,节省软件开发本钱。集成面向对象分析和设计将成为趋势由于设计过程本身也涵盖有局部的分析,分析过程中也有设计的成分。基于这种关系,集成了分析和设计两方面的方法和工具的研究也将成为面向对象分析与设计领域的一个趋势。它的主要特点就是有机地集成比拟著名的分析方法和设计方法来共同完成从分析到设计甚至到实现的全部
28、任务。集成分析与设计方法最重要的环节是要能够把分析方法的输出结果变换成为一个设计方法的工具的输入,即需要一个“翻译程序。然而,它与普通的翻译程序是不同的,比普通的“翻译程序更智能化。集成分析和设计方法虽然还处于尝试阶段,但这个方向对于软件开发界是很有吸引力的。六、小结面向对象的开发方法的精华就是从企业的不稳定需求中分析出企业的稳定对象,以企业对象为根底来组织需求、构架系统。这样得出的系统就会比传统的系统要稳定得多,因为企业的模式一旦变化,只需要将稳定的企业对象重新组织就行了。这种开发的方法就被称为OOADObject Orient Analysis & Design 面向对象的分析和设计,而分析出的企业对象就被称为Common Business Object。OOAD是现代软件企业广为采用的一项有效技术,要求在设计中要映射现实世界中指定问题域中的对象和实体。面向对象技术的优点即为能够构建与现实世界相对应的问题模型,并保持他们的构造、关系和行为为模式。目前,面向对象的分析与设计方法正处于开展阶段,实际上都还没有真正解决从应用领域知识到需求模型的演变问题。要解决这个问题,毋庸置疑,还有很长的路要走。因为这不仅是OOA与OOD的任务,还包括分析设计人员的实践和经历的积累,同时还依赖于人工智能等相关学科的开展水平。