信息系统分析与设计-第5章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

面向对象的系统分析与设计面向对象的分析与设计方法面向对象是近20年来国内外IT行业最为关注的技术之一,面向对象技术是一种按照人们对现实世界习惯的认识论和思维方式来研究和模拟客观世界的方法学。它将现实世界中的任何事物都视为“对象”,将客观世界看成是由许多不同种类的对象构成的,每一个对象都有自己的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了完整的客观世界。面向对象的方法――概念与思想所谓面向对象技术,顾名思义,就是以对象观点来分析现实世界中的问题。从普通人认识世界的观点出发,把事物归类、综合,提取共性并加以描述。在面向对象的系统中,世界被看成是独立对象的集合,对象之间通过过程(在面向对象术语中称之为“消息”)相互通信。面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送和多态性等概念来构造系统的软件开发方法。OO方法的产生和发展结构化生命周期法难以控制、处理和适应变化的矛盾,因此产生了原型化方法来进行弥补,原型化方法又需要有快速原型生成工具来支持。这两种方法都是从一般系统工程的角度采用计算机语言来描述、处理自然世界,这样必然造成系统分析、设计与其事物管理的差距,使管理信息系统在应用上产生了许多困难和矛盾。在20世纪80年代初期产生了面向对象的设计方法(OOP),面向对象设计方法既吸取了以前开发方法的优点,同时又正视和顺应了现实世界由物质和意识两部分组成,是近20年来发展起来的基于问题对象的一种自底向上的系统开发方法。面向对象的思想首先出现在程序设计的语言中,产生了面向对象的程序设计方法(Object-OrientedProgramming,OOP),并进而产生面向对象技术和方法。一般认为,面向对象的概念起源于20世纪70年代挪威的K.Nyguarded等人开发的模拟离散事件的程序设计语言Simula67。但真正的面向对象设计(OOP)还是来源于AlanKeyz主持设计的Smalltalk语言。由XeroxLearningResearchGroup所研制的Smalltalk-80系统,则是较全面地体现了面向对象程序设计语言的特征,标志面向对象程序设计方法得到比较完善实现,从而兴起了面向对象研究的高潮。面向对象的基本概念对象面向对象方法就是以对象为中心、以对象为出发点的方法,所以对象的概念相当重要。在应用领域中有意义的、与所要解决的问题有关系的任何人或事物(即我们说的实体)都可以作为对象,它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的事物或东西。在面向对象方法中,对象是一组数据(属性)和施加于这些数据上的一组操作代码(操作)构成的独立类体。换言之,对象是一个有着各种特殊属性(数据)和行为方式(方法)的逻辑实体。对象是一个封闭体,它向外界提供一组接口界面,外界通过这些接口与对象进行交互,这样对象就具有较强的独立性、自治性和模块性,从而为软件的重用奠定了坚实的基础。从传统的结构化编程观点来看,数据和处理它们的代码(操作过程)是两个不同的独立实体,它们之间的正确联系、选择与匹配需要应用系统的设计者时刻考虑、操心和进行统一。而在OO中,一个对象则是由私有数据和其上的一组操作代码组成的一个统一体。消息对象通过对外提供服务发挥自身作用,对象之间的相互服务是通过消息来连接实现的。消息是为了实现某一功能而要求某个对象执行其中某个功能操作的规格说明。它一般含有下述信息:提供服务的对象标识、服务标识、输入信息和响应信息。对象接收消息,根据消息及消息参数调用自己的服务,处理并予以响应,从而实现系统功能。消息是对象之间相互作用和相互协作的一种机制,更通俗地讲,OOP中的术语“消息”只不过是现实世界中的“请求”、“命令”等日常生活用语的同义词。方法“方法”对应于对象的能力,它是实现对象所具有的功能操作代码段,是响应消息的“方法”。在C+十中,方法即是类中定义的成员函数,它只不过是该类对象所能执行的操作的算法实现。方法与消息是一一对应的,每当对象收到一个消息,它除了能用其“智能化”的选择机制知道和决定应该去做什么(whattodo)外,还要知道和决定该怎样做(howtodo)。而方法正是与对象相连决定怎么做的操作执行代码。所以方法是实现每条消息具体功能的手段。类在面向对象的软件技术中,类可以定义为由数据结构及相关操作所形成的集合,或所有相似对象的状态变量和行为构成的模板。类是对一组对象的抽象归纳与概括,更确切地说,类是对一组具有相同数据成员和相同操作成员的对象的定义或说明。而每个对象都是某个类的一个具体实例。在OOP中,每个对象由一个类来定义或说明,类可以看作生产具有相同属性和行为方式对象的模板。与成语“物以类聚,人以群分”的意思一样,“类”就是具有相似性质的事物的同类特征的集中。在面向对象系统中,我们一般就是根据对象的相似性(包括相似的存储特征和相似的操作特征)来组织类的。简而言之,按照对象的相似性,我们把对象分成一些类和子类,将相似对象的集合即称为“类”。对c+十程序员而言,类实际只是一种对象类型、它描述属于该类型的具有相同结构和功能的对象的一般性质。继承继承是对象类间的一种相关关系,指对象继承它所在类的结构、操作和约束,也指一个类继承另外一个类的结构、操作和约束。继承体现了一种共享机制。继承机制既是一个对象类获得另一对象类特征的过程,也是一个以分层分级结构组织、构造和重用类的工具。它是解决客观对象“相似但又不同”的妙法。继承机制具有能清晰体现相似类间的层次结构关系;能减小代码和数据的重复冗余度,大大增强程序的重用性;能通过增强一致性来减少模块间的接口和界面,大大增强程序的易维护性等特点。如果没有继承概念的支持,则OOP中所有的类就象一盘各自为阵、彼此独立的散沙,每次软件开发都要从“一无所有”开始。封装封装(encapsulation)即信息隐藏。它保证软件部件具有较好的模块性,可以说封装是所有主流信息系统方法学中的共同特征,它对于提高软件清晰度和可维护性,以及软件的分工有重要的意义。我们从两个方面来理解封装的含义。(1)当设计一个程序的总体结构时,程序的每个成分应该封装或隐藏为一个独立的模块,定义每一模块时应主要考虑其实现的功能,而尽可能少地显露其内部处理逻辑。(2)封装表现在对象概念上。对象是一个很好的封装体,它把数据和服务封装于一个内在的整体。对象向外提供某种界面(接口),可能包括一组数据(属性)和一组操作(服务),而把内部的实现细节(如函数体)隐藏起来,外部需要该对象时,只需要了解它的界面就可以,即只能通过特定方式才能使用对象的属性或对象。这样既提供了服务,又保护自己不轻易受外界的影响。多态性多态性(polymorphism)指相同的操作(或函数,过程)可作用于多种类型的对象并获得不同的结果。在面向对象方法中,可给不同类型的对象发送相同的消息,而不同的对象分别做出不同的处理。例如给整数对象和复数对象定义不同的数据结构和加法运算,但可以给它们发送相同的消息“做加法运算”,整数对象接收此消息后做整数加法运算,复数对象则做复数加法运算,产生不同的结果。多态性增强了软件的灵活性、重用性、可理解性。面向对象的思想按设计思想来分,传统的软件系统开发可分为自顶向下和自底向上两种。流行的结构化方法采用自顶向下的设计思想。但是,面向对象方法既不是自顶向下方法也不是自底向上方法。尽管它兼有这两者的一些特点。一方面,面向对象方法鼓励人们从问题的基本的、简单的方面入手,用对象来考虑如何描述问题的解决,然后抽象并确定类,得到具有一般性的解决问题的方法,这正是自底向上的本质;另一方面,面向对象的方法又要求人们面向目标,考虑为达到这一目标如何建立这些基本的对象,这正体现了自顶向下的思想。面向对象方法从一开始就强调结构与代码的共享与重用。它与传统的结构化设计思想比起来,有着明显的优点。代码的可重用性好:随着开发平台以及应用要求越来越复杂,应用程序的规模变得越来越庞大,代码重用成了提高程序设计效率的关键。可维护性和可扩充性好:用传统的面向过程语言开发出来的软件很难维护,是长期困扰人们的一个严重问题,也是软件危机的突出表现稳定性好:结构化程序设计也存在模块的独立性,因此结构化软件也有一定的稳定性。但结构化设计是通过过程(函数、子程序)的概念来实现的。对象模型技术模型是为了在构造事物前理解事物而对事物作出的一种抽象,它忽略事物的非本质内容。对象模型技术(ObjectModelingTechnique,OMT)是建立系统模型的方法学,它由三种模型组成。对象模型表示系统的静态的、结构化的数据,描述一个根据对象和相对实体关系的系统的静态结构;动态模型表示系统的动态的、行为的控制方式,是根据事件和状态描述系统的控制结构;功能模型则表示了系统的转换功能,是根据属性值和功能来描述系统的计算结构。软件过程是三方面的结合:使用数据结构(对象模型),按时间调整操作顺序(动态模型)和转换属性值(功能模型)。对象模型对象模型描述了系统中对象结构,包括对象的标识、与其他对象的关系、属性和操作。对象模型提供了动态模型和功能模型都适用的基本框架,对象是现实世界划分事件的单元,是模型中的组成成分。对象模型用包含对象类的对象图来表示。类按层次排列,并共享公共结构和行为特征,类与其他类相关联。类定义了每个对象实例所取的属性值和每个对象执行的操作。动态模型动态模型描述了系统中与时间和操作序列有关的内容,即标志改变的事件、事件序列、定义事件上下文状态以及事件和状态的组织。动态模型眼于控制,即描述系统中发生的操作序列。动态模型用状态图表示。每个状态图展示了系统中对象类所允许的状态和事件序列。状态图中的动作对应于功能模型中的功能,状态图中的事件为对象模型中对对象的操作。功能模型功能模型描述了系统与值转换有关的诸方面内容,即功能、映像、约束和功能性依赖。功能模型只着眼于系统做什么,而不考虑如何做、什么时候做。功能模型用数据流图表示。数据流图表示根据输入值和函数进行的输出值的计算与值之间的相关性,而不考虑功能是否执行和什么时候执行。在动态模型中,功能作为动作被唤醒,而在对象模型中则作为对对象的操作。三种模型的联系对象模型描述了动态模型和功能模型操作的数据结构。对象模型中的操作对应于动态模型中的事件和功能模型中的功能。动态模型描述对象的控制结构,它展示了依赖于对象值并导致改变对象值和唤醒功能的动作的决策。功能模型描述由对象模型中的操作和动态模型的动作唤醒的功能,功能是对象模型指定的数据值上的操作,功能模型给出对象值上的约束。面向对象的分析方法面向对象分析(OOA)是面向对象(OO)方法的一个组成部分,它利用面向对象的方法进行系统分析,即在明确的用户需求的基础上,通过对问题空间的分析,把问题分解成一些类或对象,找出这些对象的特点(即属性和服务),以及对象间的关系(一般/特殊,整体/部分关系),并由此产生一个规格说明,建立以对象为单元的信息系统逻辑模型,为面向对象设计(OOD)和面向对象程序设计(OOP)提供指导。到目前为止,面向对象分析方法有许多种,有Booch方法(OOD)、Coad和Yourdon方法(OOA&D)、Jacobson方法(OOSE)、Rumbauph方法(OMT)、Wassman-Pircher方法(OOSD)等,这些方法从不同角度进行分析,各有特色,但距问题的全面解决还有一定的距离。OOA的系统模型OOA的主要目标是利用面向对象的方法,站在对象的角度对所要研究的问题空间及系统进行深刻的理解,正确认识问题空间中的事务及其事务之间的关系,识别描述问题空间及系统所需的对象、类,定义对象及类的属性与服务,建立与问题空间相映射、相对应的系统对象模型。OOA的系统模型包括三大部分,即基本模型、补充模型及系统的详细说明。OOA的系统模型---基本模型基本模型是以类图的形式来表达系统最重要的信息,而类图则由类、属性、服务、泛化-特化结构、整体-部分结构、实例连接和消息连接等主要成分所构成。这些成分所表达的模型信息可分为三个层次,即对象层、特征层和关系层。OO

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功