(2.9)--09章 面向对象方法学引论.ppt
《(2.9)--09章 面向对象方法学引论.ppt》由会员分享,可在线阅读,更多相关《(2.9)--09章 面向对象方法学引论.ppt(119页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9 9章章 面向对象方法学引论面向对象方法学引论软件工程导论(第软件工程导论(第6版)版)第第9 9章章 面向对象方法学引论面向对象方法学引论 面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物。面向对象的分析方法是利用面向对象的信息建模概念,如实体、关系、属性等,同时运用封装、继承、多态等机制来构造模拟现实系统的方法。引 言第第9 9章章 面向对象方法学引论面向对象方法学引论 传统的结构化设计方法的基本点是面向过程,系统被分解成若干个过程。而面向对象的方法是采用构造模型的观点,在系统的开发过
2、程中,各个步骤的共同的目标是建造一个问题域的模型。在面向对象的设计中,初始元素是对象,然后将具有共同特征的对象归纳成类,组织类之间的等级关系,构造类库。在应用时,在类库中选择相应的类。引 言章节目录章节目录 9.1 面向对象方法学概述面向对象方法学概述 9.2 面向对象的概念面向对象的概念 9.3 面向对象模型面向对象模型 9.4 对象模型对象模型 9.5 动态模型动态模型 9.6 功能模型功能模型 9.7 3种模型之间的关系种模型之间的关系主 要内 容 9.1 面向对象方法学概述面向对象方法学概述 9.2 面向对象的概念面向对象的概念 9.3 面向对象模型面向对象模型 9.4 对象模型对象模
3、型9.1 面向对象方法学概述面向对象方法学概述 面面向向对对象象方方法法学学的要点面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。9.1.1 面向对象方法学的要点面向对象方法学的要点9.1 面向对象方法学概述面向对象方法学概述 面面向向对对象象方方法法把对象作为由数据及可以施加在这些数据上的操作所构成的统一体。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。必须发消息请求对象主
4、动地执行它的某些操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。9.1.1 面向对象方法学的要点面向对象方法学的要点9.1 面向对象方法学概述面向对象方法学概述面向对象方法具有下述4个要点:(1)面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。(2)把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。(3)按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。(4)对象彼此之间仅能通过传递消
5、息互相联系。9.1.1 面向对象方法学的要点面向对象方法学的要点9.1 面向对象方法学概述面向对象方法学概述9.1.1 面向对象方法学的要点面向对象方法学的要点 面向对象的方法学可以用下列方程来概括:OO=objects+Classes+Inheritance+communication with messages,即:既使用对象又使用类和继承等机制,且对象之间仅能通过传递消息实现彼此通信。9.1 面向对象方法学概述面向对象方法学概述9.1.2 面向对象方法学的优点面向对象方法学的优点1.与人类习惯的思维方法一致与人类习惯的思维方法一致l面向对象的软件技术以对象为核心,用这种技术开发出的软件系
6、统由对象组成。对象是由描述内部状态表示静态属性的数据,以及可以对这些数据施加的操作(对象的动态行为),封装在一起所构成的统一体。l面向对象的设计方法基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。l面向对象方法学的基本原则是按照人类习惯的思维方法建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统。面向对象的软件系统中使用的对象,是对客观世界中实体的抽象。9.1 面向对象方法学概述面向对象方法学概述9.1.2 面向对象方法学的优点面向对象方法学的优点2.稳定性好稳定性好 面向对象的软件系统的结构是根据问题领域的模型建立起来的,而不是基于对系统应完成的功能的分解,所以
7、,当对系统的功能需求变化时并不会引起软件结构的整体变化,往往仅需要作一些局部性的修改。由于现实世界中的实体是相对稳定的,因此,以对象为中心构造的软件系统也是比较稳定稳定的。9.1 面向对象方法学概述面向对象方法学概述9.1.2 面向对象方法学的优点面向对象方法学的优点3.可重用性好可重用性好 对象固有的封装性和信息隐藏机制,使得对象的内部实现与外界隔离,具有较强的独立性。对象是比较理想的模块和可重用的软件成分。面向对象的软件技术在利用可重用的软件成分构造新的软件系统时,有很大的灵活性。有两种方法可以重复使用一个对象类:一种方法是创建该类的实例,从而直接使用它;另一种方法是从它派生出一个满足当前
8、需要的新类。9.1 面向对象方法学概述面向对象方法学概述9.1.2 面向对象方法学的优点面向对象方法学的优点4.较易开发大型软件产品较易开发大型软件产品 用面向对象方法学开发软件时,构成软件系统的每个对象就像一个微型程序,有自己的数据、操作、功能和用途,因此,可以把一个大型软件产品分解成一系列本质上相互独立的小产品来处理,这就不仅降低了开发的技术难度,而且也使得对开发工作的管理比较容易。9.1 面向对象方法学概述面向对象方法学概述9.1.2 面向对象方法学的优点面向对象方法学的优点5.可维护性好可维护性好(1)面向对象的软件稳定性比较好。(2)面向对象的软件比较容易修改。(3)面向对象的软件比
9、较容易理解。(4)易于测试和调试。1、面向对象方法学的要点2、面向对象方法学的优点本节小结本节小结主 要内 容 9.1 面向对象方法学概述面向对象方法学概述 9.2 面向对象的概念面向对象的概念 9.3 面向对象模型面向对象模型 9.4 对象模型对象模型 9.5 动态模型动态模型9.2 面向对象的概念面向对象的概念 面向对象方法学中的对对象象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。对象可以作的操作表示它的动态行为,在面向对象分析和面向对象设计中,通常把对象的操作称为服务或方法。1.对象的形象表示对象的形象表示 右图为对象的形象表示,形象地描绘了具有3个操
10、作的对象。9.2.1 对象对象9.2 面向对象的概念面向对象的概念1.对象的形象表示对象的形象表示 一个对象很像一台录音机。实现对象操作的代码和数据是隐藏在对象内部的,一个对象好像是一个黑盒子,表示它内部状态的数据和实现各个操作的代码及局部数据,都被封装在这个黑盒子内部,在外面是看不见的,更不能从外面去访问或修改这些数据或代码。9.2.1 对象对象9.2 面向对象的概念面向对象的概念 使用对象时只需知道它向外界提供的接口形式而无须知道它的内部实现算法,不仅使得对象的使用变得非常简单、方便,而且具有很高的安全性和可靠性。对象内部的数据只能通过对象的公有方法(如C+的公有成员函数)来访问或处理,这
11、就保证了对这些数据的访问或处理,在任何时候都是使用统一的方法进行的。9.2.1 对象对象9.2 面向对象的概念面向对象的概念 2.对象的定义对象的定义 人们从不同角度给出对象的不同定义如下:(含义相同)(1)定义定义1:对象是具有相同状态的一组操作的集合。这个定义主要是从面向对象程序设计的角度看“对象”。(2)定定义义2:对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也就是说,对象是对属性值和操作的封装。这个定义着重从信息模拟的角度看待“对象”。9.2.1 对象对象9.2 面向对象的概念面向对象的概念(3)定定义义3:对象=ID,MS,DS,MI。其
12、中,ID是对象的标识或名字,MS是对象中的操作集合,DS是对象的数据结构,MI是对象受理的消息名集合(即对外接口)。对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务(即公有的操作)。对象中的数据表示对象的状态,一个对象的状态只能由该对象的操作来改变。9.2.1 对象对象9.2 面向对象的概念面向对象的概念 从动态角度或对象的实现机制来看,对象是一台自动机。具有内部状态S,操作fi(i=1,2,n),且与操作 fi对 应 的 状 态 转 换 函 数 为gi(i=1,2,n)的一个对象,可用右图所示的自动机来模拟。9.2.1
13、对象对象9.2 面向对象的概念面向对象的概念3.对象的特点对象的特点对象有如下一些基本特点。(1)以以数数据据为为中中心心。操作围绕对其数据所需要做的处理来设置,不设置与这些数据无关的操作,而且操作的结果往往与当时所处的状态(数据的值)有关。(2)对对象象是是主主动动的的。它是进行处理的主体。不能从外部直接加工它的私有数据,必须通过它的公有接口向对象发消息,请求它执行它的某个操作,处理它的私有数据。9.2.1 对象对象9.2 面向对象的概念面向对象的概念3.对象的特点对象的特点(3)实实现现了了数数据据封封装装。对象好像是一只黑盒子,它的私有数据完全被封装在盒子内部,对外是隐藏的、不可见的,对
14、私有数据的访问或处理只能通过公有的操作进行。(4)本本质质上上具具有有并并行行性性。对象是描述其内部状态的数据及可以对这些数据施加的全部操作的集合。不同对象各自独立地处理自身的数据,彼此通过发消息传递信息完成通信。9.2.1 对象对象9.2 面向对象的概念面向对象的概念3.对象的特点对象的特点(5)模模块块独独立立性性好好。对象内部各种元素彼此结合得很紧密,内聚性相当强。由于完成对象功能所需要的元素(数据和方法)基本上都被封装在对象内部,它与外界的联系自然就比较少,因此,对象之间的耦合通常比较松。9.2.1 对象对象9.2 面向对象的概念面向对象的概念1.类(类(class)在面向对象的软件技
15、术中,“类”就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说明。右图是3个圆心位置、半径大小和颜色均不相同的圆,是3个不同的对象。但是,它们都有相同的数据(圆心坐标、半径、颜色)和相同的操作。因此,它们是同一类事物,可以用“Circle类”来定义。9.2.2 其他概念其他概念9.2 面向对象的概念面向对象的概念2.实例(实例(instance)l实例实例就是由某个特定的类所描述的一个具体的对象。l“对象”既可以指一个具体的对象,也可以泛指一般的对象,但是,“实例”必然是指一个具体的对象。
16、3.消息(消息(massage)消消息息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,一个消息由接收消息的对象、消息选择符(也称为消息名)、零个或多个变元3部分组成。9.2.2 其他概念其他概念9.2 面向对象的概念面向对象的概念 例如,MyCircle是一个半径为4cm、圆心位于(100,200)的Circle类的对象,也就是Circle类的一个实例例,当要求它以绿颜色在屏幕上显示自己时,在C+语言中应该向它发下列消息消息:MyCircle.Show(GREEN);其中,MyCircle是接收消息的对象的名字,Show是消息选择符(即消息名),圆括号内的GREEN是
17、消息的变元。当MyCircle接收到这个消息后,将执行在Circle类中所定义的Show操作。9.2.2 其他概念其他概念9.2 面向对象的概念面向对象的概念4.方法(方法(method)方方法法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。在C+语言中把方法称为成员函数。5.属性(属性(attribute)属属性性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。在C+语言中把属性称为数据成员。例如,Circle类中定义的代表圆心坐标、半径、颜色等的数据成员,就是圆的属性。9.2.2 其他概念其他概念
18、9.2 面向对象的概念面向对象的概念6.封装(封装(encapsulation)在面向对象的程序中,封装封装是指把数据和实现操作的代码集中起来放在对象内部。对象具有封装性的条件如下:(1)有一个清晰的边界有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接访问。9.2.2 其他概念其他概念9.2 面向对象的概念面向对象的概念6.封装(封装(encapsulation)对象具有封装性的条件如下:(2)有确定的接口(即协议)有确定的接口(即协议)。这些接口就是对象可以接受的消息,只能通过向对象发送消息来使用它。(3)受保护的内部实现受保护的内部实现。实现对象功
19、能的细节(私有数据和代码)不能在定义该对象的类的范围外访问。封装就是信息隐藏,通过封装对外界隐藏对象的实现细节。9.2.2 其他概念其他概念9.2 面向对象的概念面向对象的概念7.继承(继承(inheritance)在面向对象的软件技术中,继继承承是子类自动地共享基类中定义的数据和方法的机制。面向对象软件技术把类组成一个层次结构的系统(类等级):一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是继承性,一个类直接继承其父类的全部描述(数据和操作)。9.2.2 其他概念其他概念9.2 面向对象的概念面向对象的概念7.继承(继承(inheritance)右图为实现继承机制的原
20、理,图中以A、B两个类为例,其中B类是从A类派生出来的子类,它除了具有自己定义的特性(数据和操作)之外,还从父类A继承特性。9.2.2 其他概念其他概念9.2 面向对象的概念面向对象的概念l继承具有传递性,即一个类实际上继承了它所在的类等级中在它上层的全部基类的所有描述。l当类等级为树形结构时,类的继承是单继承;当允许一个类有多个父类时,类的继承是多重继承。多重继承的类可以组合多个父类的性质构成所需的性质,使用多重继承时要注意避免二义性。9.2.2 其他概念其他概念9.2 面向对象的概念面向对象的概念l当需要扩充原有的功能时,派生类的方法可以调用其基类的方法,并在此基础上增加必要的程序代码;当
21、需要完全改变原有操作的算法时,可以在派生类中实现一个与基类方法同名而算法不同的方法;当需要增加新的功能时,可以在派生类中实现一个新的方法。l有了继承性可以用把已有的一般性的解加以具体化的办法,来达到软件重用的目的。9.2.2 其他概念其他概念9.2 面向对象的概念面向对象的概念8.多态性(多态性(polymorphism)在面向对象的软件技术中,多多态态性性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。即,在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。多态性机制不仅增加了面向对象软件
22、系统的灵活性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。9.2.2 其他概念其他概念9.2 面向对象的概念面向对象的概念9.重载重载(overloading)有两种重载重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。重载进一步提高了面向对象系统的灵活性和可读性。9.2.2 其他概念其他概念1、对象概念2、面向对象其它概念本节小结本节小结主 要内 容 9.1 面向对象方法学概述面向对象方法学概述 9.2 面向对象的概念面向对象的概念 9.3 面向对象模型面向对象模型 9.4 对象模型对
23、象模型 9.5 动态模型动态模型 9.6 功能模型功能模型9.3 面向对象建模面向对象建模l模模型型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。l模型可以帮助人们思考问题、定义术语、在选择术语时作出适当的假设,并且有助于保持定义和假设的一致性。9.3 面向对象建模面向对象建模l对于因过分复杂而不能直接理解的系统,特别需要建立模型,建模的目的主要是为了减少复杂性。l面向对象方法最基本的原则,是按照人们习惯的思维方式,用面向对象观点建立问题域的模型,开发出尽可能自然地表现求解方
24、法的软件。9.3 面向对象建模面向对象建模l用面向对象方法开发软件,通常需要建立3种形式的模型,它们分别是描述系统数据结构的对对象象模模型型,描述系统控制结构的动动态态模模型型和描述系统功能的功能模型功能模型。l一个典型的软件系统使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。9.3 面向对象建模面向对象建模l对任何大系统来说,上述3种模型都是必不可少的。用面向对象方法开发软件,在任何情况下,对象模型始终都是最重要、最基本、最核心的。l在面向对象分析过程中,构造出完全独立于实现的应用域模型;在面向对象设计过程中,把求解域的结构逐渐加入到模型中;在实现阶段,把应
25、用域和求解域的结构都编成程序代码并进行严格的测试验证。9.3 面向对象建模面向对象建模 在面向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定了基础,人们依靠对象模型完成3种模型的集成。9.3 面向对象建模面向对象建模 在面向对象分析中,主要由对象模型、动态模型和功能模型组成。对象模型是最基本、最重要、最核心的。面向对象建模得到的模型包含系统的3个要素,即静态结构(对象模型)、交互次序(动态模型)和数据变换(功能模型)。解决的问题不同,这3个子模型的重要程度也不同。9.3 面向对象建模面向对象建模 (1)构造对象模型 分析需求的第一步是构造对象模型,对象模型表示了客观系统的静态数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2.9-09章 面向对象方法学引论 2.9 09 面向 对象 方法 引论
限制150内