您好,欢迎访问三七文档
第1章面向对象技术1.1不同软件开发方法的比较分析1.2面向对象的基本概念1.3面向对象的分析、设计与实现1.4UML与面向对象的系统开发1.5UML的应用领域一般计算机软件的发展过程第一阶段,这个阶段计算机的应用领域比较窄,主要是科学计算,其研究、开发的主要内容是顺序程序,对数据的考虑非常少。在这个阶段主要是考虑程序设计,而数据是依附于程序中的,注重对系统功能的实现,是典型的面向过程的软件开发方式。第二阶段,这个阶段计算机应用领域逐步拓宽,出现了大量的数据处理问题。这个阶段的软件特点是数据量非常大,并要求把这些数据存储在文件系统及数据库中以实现数据的独立和共享,而对数据的处理则相对简单。这个阶段主要考虑数据设计,而程序则是依附于数据的,注重对系统数据的实现,是典型的面向数据的软件开发方式。常用软件开发方法面向过程的方法:面向过程的方法主要考虑事务流和要完成的功能,数据被当作系统整体的一个部分来处理,常常是分析过程的一个副产品。其代表方法是结构化分析与设计方法.面向数据的方法:面向数据的方法将数据作为一种独立的资源对待,数据是支持所有应用项目的基础,处理过程也是重要的,但是它们必须存取数据库中的数据。其代表方法是数据库设计方法。信息工程的方法:信息工程是在软件工程和数据库基础上形成和发展起来的,其方法采用的前提是数据位于现代数据处理系统的中心,数据类型不会发生很大的变化,因此这种方法是面向数据的方法。组成系统部分的稳定程度系统各部分之间的接口极其不稳定功能模块非常不稳定各模块的先后顺序非常不稳定一直保持的数据则较稳定问题空间的对象最稳定面向过程方法主要考虑事务流和需要完成的功能,它侧重于功能与功能抽象,而恰恰忽视了功能的主体——对象,任何成功的系统在其生存期内不可避免地要经历多次变动,其中变动最多的是系统功能,而对象才是问题空间中最稳定的部分。由于面向过程的方法的基础建立在非常不稳定的系统功能上,因此面向过程的方法不能解决数据抽象和信息隐藏,不能很好地适应极度复杂系统的扩展。面向数据方法建立在较为稳定的系统数据基础上,将数据作为一种独立的资源对待,对数据进行抽象。但面向数据的方法在对数据进行抽象时只注重对客观实体及实体属性的抽象,而客观实体不仅有属性还有操作属性的行为,因为最终每个数据处理系统都必须有数据与处理。由于面向数据方法在系统开发过程中很少考虑实体的行为处理,因而只是部分地实现了问题空间到解空间的映射。信息工程方法既是面向数据的方法,又具有面向过程的特征,是一种比较灵活的系统开发方法。但该方法在对面向过程和面向数据的综合过程中,在进行数据抽象时,对属性和操作属性的方法(行为)是分开考虑的,而没有把属性和方法当作一个不可分割的整体,而这种属性和方法的封装对一个系统模型的稳定性有很大的影响,因此信息工程的方法也没能很好地解决数据抽象和信息隐藏问题,也是部分地实现了问题域空间到解空间的映射。面向对象方法的特点与人类习惯的思维方法一致稳定性好可重用性好较易开发大型软件产品可维护性好对象面向对象方法进行软件开发时,需要区分三种不同含义的对象:客观对象、问题对象和计算机对象。现实世界问题域计算机系统客观对象问题对象计算机对象抽象表示模拟对象的表示应包括属性与行为(数据与操作),且对象之间并非彼此孤立,可以通过通信互相交互,因此计算机对象可以表示为一个三元组:对象≡(接口,数据,操作)即对象是面向对象系统中运行时刻的基本成分,它是属性和行为(数据和操作)的封装体,其中还包括和其他对象进行通信的设施。可从不同的角度来考察对象的概念:首先从宏观上看,对象是客观对象在计算机中的表示。其次从微观上看,对象是由能对外通信的数据及其上的操作组成的封装体。最后从形式描述上看,对象是具有输入和输出的有限自动机。对象具有如下特点:(1)自治性:对象的自治性是指对象具有一定的独立计算能力。(2)封闭性:对象的封闭性指对象具有信息隐蔽的能力。(3)通信性:对象的通信性指对象具有与其他对象通信的能力。(4)被动性:对象的被动性指对象的存在和状态转换都是由来自外界的某种刺激引发的。(5)暂存性:对象的暂存性有两层含义。一是指对象的存在是可以动态地引发的,而不是必须在计算的一开始就存在;二是指对象随时可以消亡。类对象是系统中运行时刻的基本成分,它们在程序中又如何反映呢?事实上,系统中往往存在多个具有共同特性的对象,类刻划了一组具有共同特性的对象。类的作用可归纳为两种:一是作为对象的描述机制,刻划一组对象的公共属性和行为;二是作为程序的基本单位,它是支持模块化设计的设施,并且类上的分类关系是模块划分的规范标准。类有三个组成部分:数据、操作和接口。数据刻划对象的状态,操作刻划对象的行为,类中所有数据均为私有,接口使操作对外可见。从类自身的内容看,它描述了一组数据及其上的操作,这些数据为类所私有,只有操作对外可见。类的概念可从下面四个方面去理解:(1)类是面向对象程序唯一的构造单位(2)类是面向对象程序设计语言的基本成分(3)类是抽象数据类型的具体实现(4)类描写了一组相似对象的共同特性类与对象的关系类是面向对象程序中的概念,而对象则是面向对象程序运行时的概念。程序由一组相关的类构成,所以类是静态的。程序的执行体现为一组相互通信的对象的活动,所以对象是动态的。类描述了一组相似对象的共同特性,这一组相似的对象被称为该类的实例。类作为一种模式,对象是具有这种模式的具体例子。类与对象的关系很象类型与值的关系。事实上,完全可以把类理解成对象所具的类型,而把对象理解成是相应类作为类型的值。消息对象是一个相对独立的具有一定计算能力的自治体,对象之间不是彼此孤立而是互相通信的,面向对象程序的执行体现为一组相互通信的对象的活动。面向对象计算中,每一计算任务都表示为一消息,实施计算任务的若干相关联的对象组成一个面向对象系统。提交计算任务即由任务提交者(系统外对象)向承担计算任务的面向对象系统中的某对象发送表示该计算任务的消息。计算的实施过程是面向对象系统接收到该消息后所产生的状态变化过程,计算的结果通过面向对象系统中的对象向任务提交者回送的消息体现。消息一般由三个部分组成:(接受消息的对象,接受对象应采用的方法,方法所需要的参数)。计算任务通常先由某一对象受理(该对象接收到某种消息),然后,通过对象间的通信,计算任务就分散到各个有关对象中,最后,再由某些对象给出结果(通过发送消息)。对象可以动态地创建,创建后即可以活动。对象在不同时刻可处于不同状态,对象的活动是指对象状态的改变,它是由对象所接收的消息引发的。对象一经创建,就能接收消息,并向其他对象发送消息。对象接收到消息后,可能出现:(1)自身状态改变(2)创建新对象(3)向其他对象发送消息。从对象之间的消息通信机制可反映出面向对象计算具有如下特性:(1)协同性:协同性表现在计算是由若干对象共同协作完成的。(2)动态性:动态性表现在计算过程中对象依通信关系组成的结构会动态地改变,新对象会不断创建,老对象也会不断消亡。(3)封闭性:封闭性表现在计算是由一组相对封闭的对象完成的。(4)自治性:自治性表现在计算是由一组自治的对象完成的。方法方法反映对象的行为,是对象固有的动态表示,可审视并改变对象的内部状态。一个对象往往可以用若干方法表示其动态行为,在计算机中,方法也可称为操作。它的定义与表示包含两部分:一是方法的接口,它给出了方法的外部表示,包括方法的名称、参数及结果类型;二是方法的实现,它用一段程序代码表示,这段代码实现了方法的功能。把所有对象抽象成各种类,每个类都定义一组方法,代表允许作用于该类对象上的各种操作。方法描述了对象执行操作的算法,响应消息的方法。继承类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性和操作的共享。继承是类与类之间的一种关系,它使程序人员可以在已有类的基础上定义和实现新类。继承是实现利用可重用软件构件构造系统的有效语言机制。继承能有效地支持软件构件的重用,使得当需要在系统中增加新特征时所需的新代码最少,并且当继承和多态、动态绑定结合使用时,为修改系统所需变动的原代码最少。当类Y继承了类Z时,称Z是基类,Y是Z的子类。在这种情形下,Y由两部分组成,继承部分和新增部分。继承部分是从类Z继承得到的,新增部分是专为Y所编写的新代码。人教职员工学生教员行政人员工人研究生本科生多态多态的一般含义是,某一论域中的元素可以有多种解释,程序设计语言中的一名多用即是支持多态的设施,继承机制是面向对象程序设计语言中所特有的另一种支持多态的设施。在面向对象的软件技术中,多态是指在类继承层次中的类可以共享一个行为的名字,而不同层次的类却各自按自己的需要实现这个行为。当对象接收到发送给它的消息时,根据该对象所属的类动态地选择在该类中定义的行为实现。动态绑定绑定是指结构成分与其有关性质的确定和关连。在程序设计语言中,通常是指变量与其值、过程调用与相应可执行代码的确定和关连。能在编译时刻完成的绑定称静态绑定,反之,则称动态绑定。动态绑定是与多态相关联的实现级的概念。既然变量或操作具有多态性,那么它们运行时的实际形态就无法在编译时刻确定。事实上,对多态变量来说,编译时刻只能确定其多态变化的范围(即动态类型集)。对多态操作来说,实现该操作的实际代码只能在运行时刻确定。面向对象分析与设计方法迅速发展的重要因素软件领域中面向对象方法的基本概念经历了几十年的成长道路,人们的注意力逐渐从编码问题转移到设计与分析问题构造系统的基本技术变得更加有力,设计思想受预想的如何编码的思想影响,而编码思想受人们可用的程序设计语言的强烈影响。现代软件系统规模更大,更复杂也更多变,传统的软件分析与设计方法难以满足要求,而面向对象的分析与设计方法将导致比较稳定的系统。另外现代软件系统更注重系统用户界面的开发,对于此类系统采用面向对象方法进行分析、设计和编码是一种非常自然的途径。现代软件系统构造比七十年代和八十年代更加面向领域,对功能复杂性的关心比以前少,数据建模的优先程度较为适当,问题域模型的理解及系统职能处于较高的优先地位。面向对象分析对象模型。对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。面向对象方法强调围绕对象而不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。在建立对象模型时,人们的目标是从客观世界中提炼出对具体应用有价值的概念。动态模型。动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。功能模型。功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。面向对象的设计准则模块化抽象信息隐藏弱耦合强内聚可重用面向对象设计方法的具体分析步骤问题域部分的设计人一机界面部分的设计任务管理部分的设计数据管理部分的设计面向对象的实现任务是具体实现软件功能,包括每个对象的内部功能实现、确立对象的哪些处理功能应在哪些类中进行描述、确定并实现系统的界面、输出形式及其它控制机制等,OOI可以采用不同的面向对象程序设计语言来实现。面向对象程序设计方法的主要特征识认性:系统中的基本构件可识认为一组离散的、可以识认的相异对象。类别性:系统中具有相同数据结构和行为的所有对象组成一类。多态性:论域中的同一元素可以有多种解释。继承性:在基于层次关系的不同的类中共享属性和操作。软件工程中的分析与设计软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。所谓管理就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。软件工程方法学包含3个要素:方
本文标题:面向对象技术概述.
链接地址:https://www.777doc.com/doc-1960735 .html