第7章-面向对象方法学引论课件.ppt

上传人:小飞机 文档编号:4095810 上传时间:2023-04-03 格式:PPT 页数:49 大小:718KB
返回 下载 相关 举报
第7章-面向对象方法学引论课件.ppt_第1页
第1页 / 共49页
第7章-面向对象方法学引论课件.ppt_第2页
第2页 / 共49页
第7章-面向对象方法学引论课件.ppt_第3页
第3页 / 共49页
第7章-面向对象方法学引论课件.ppt_第4页
第4页 / 共49页
第7章-面向对象方法学引论课件.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《第7章-面向对象方法学引论课件.ppt》由会员分享,可在线阅读,更多相关《第7章-面向对象方法学引论课件.ppt(49页珍藏版)》请在三一办公上搜索。

1、 面向对象(Object-Oriented,缩写为OO)方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。,7.1 面向对象方法学概述,通常,客观世界中的实体既具有静态的属性又具有动态的行为。然而传统语言提供的解空间对象实质上却仅是描述实体属性的数据,必须在程序中从外部对它施加操作,才能模拟它的行为。,与传统方法相反,面向对象方法是一种以数据或信息为主线,把数据和处理相结合的方法。面向对象方法把对象作为由数据及可以施加在这些数

2、据上的操作所构成的统一体,概括地说,面向对象方法具有下述四个要点。认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。,把所有对象都划分成各种对象类(简称为类,Class),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。类中定义的方法,是允许施加于该类对象上的操作,是该类所有对象共享的,并不需要为每个对象都复制操作的代码。,按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。对象彼此之间仅能通过传递消息互相联系。,面向对象的方法学可以用下列方程来概括:OO

3、=Objects+Classes+Inheritance+Communication with messages 也就是说,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。,7.2面向对象方法学的主要优点,1.与人类习惯的思维方法一致 2.稳定性好 3.可重用性好 4.较易开发大型软件产品,5.可维护性好 由于下述因素的存在,使得用面向对象方法所开发的软件可维护性好。面向对象的软件稳定性比较好。面向对象的软件比较容易修改。面向对象的软件比较容易理解。易于测试和调试。,7.3 面向对象的概念,7.3.1 对象 在应用领域中有意义的、与所要解决的问题有关系的任

4、何事物都可以作为对象(Object),它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。例如,一名职工、一家公司、一个窗口、一座图书馆、一本图书、贷款和借款等,都可以作为一个对象。总之,对象是对问题域中某个实体的抽象,设立某个对象就反映了软件系统保存有关它的信息并具与它进行交互的能力。,图7.1 对象的形象表示,1.对象的形象表示 2.对象的定义(1)定义1 对象是具有相同状态的一组操作的集合。这个定义主要是从面向对象程序设计的角度看“对象”。(2)定义2 对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也就是说,对

5、象是对属性值和操作的封装。这个定义着重从信息模拟的角度看待“对象”。,(3)定义3对象=其中,ID是对象的标识或名字MS是对象中的操作集合DS是对象的数据结构MI是对象受理的消息名集合(即对外接口)这个定义是一个形式化的定义。,从动态角度或对象的实现机制来看,对象是一台自动机。具有内部状态S,操作fi(i=1,2,n),且与操作fi对应的状态转换函数为gi(i=1,2,n)的一个对象,可以用图7.2所示的自动机来模拟。,图7.2 用自动机模拟对象,3.对象的特点 以数据为中心。对象是主动的。实现了数据封装。本质上具有并行性。模块独立性好。,7.3.2 其他概念 1.类(Class)在面向对象的

6、软件技术中,“类”就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说明。2.实例(Instance)实例就是由某个特定的类所描述的一个具体的对象。,3.消息(Message)消息,就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,一个消息由下述三部分组成:接收消息的对象;消息选择符(也称为消息名);零个或多个变元。,4.方法(Method)方法,就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。5.属性(Attribute)

7、属性,就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。,9.封装(Encapsulation)从字面上理解,所谓封装就是把某个事物包起来,使外界不知道该事物的具体内容。综上所述,具有封装性的条件如下。有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接访问。有确定的接口(即协议)。这些接口就是对象可以接受的消息,只能通过向对象发送消息来使用它。受保护的内部实现。实现对象功能的细节(私有数据和代码)不能在定义该对象的类的范围外进行访问。封装性也就是信息隐藏,通过封装把对象的实现细节对外界隐藏起来了。,7.继承(I

8、nheritance)广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。当一个类只允许有一个父类时,也就是说,当类等级为树形结构时,类的继承是单继承;当允许一个类有多个父类时,类的继承是多重继承。,图7.3 实现继承机制的原理,8.多态性(Polymorphism)多态性一词来源于希腊语,意思是“有许多形态”。在面向对象的软件技术中,多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。也就是说,在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同

9、层次中的每个类却各自按自己的需要来实现这个行为。当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。,9.重载(Overloading)有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。,7.4 面向对象建模,为了更好地理解问题,人们常常采用建立问题模型的方法。所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。用面向对象方法开发软件,通常需要建立三种形式的

10、模型,它们分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。,一个典型的软件系统组合了上述三方面内容:它使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。,7.5 对象模型,对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。,7.5.1 表示类&对象的图形符号 1.类&对象“类&对象”是一个专用术语,它的含义是“一个类及属于该类的对象”。图7.4(a)是表示类&对象的图形符号,图7.4(b)是表示类的图形符号。,图7.4 表示符号,2.命名 类名是一类

11、对象的名字。命名是否恰当对系统的可理解性影响相当大,因此,命名时应该遵守以下几条准则。(1)使用标准术语(2)使用具有确切含义的名词(3)必要时用名词短语作名字 总之,名字应该是富于描述性的、简洁的而且无二义性的。,8.5.2 表示结构的图形符号 在面向对象分析和面向对象设计中,结构表示了问题域中的复杂关系,是对客观世界实体相互间关系的抽象。结构与目标系统的任务直接相关,也就是说,目标系统的任务决定了系统的结构。类&对象间的关系可以概括为归纳关系、组合关系及关联关系。1.归纳关系 归纳关系就是“一般特珠”关系,它反映了一个类与若干个互不相容的子类之间的分类关系。高层类(即基类)说明一般性的属性

12、,低层类(即派生类)说明特殊属性。低层类对象“即是(ISA)”某种特殊的高层类对象,它继承了在高层类中定义的属性和服务。图7.5是表示归纳关系的图形符号。,图7.5 表示归纳关系的图形,2.组合关系 组合关系就是“整体部分”关系,它反映了对象之间的构成关系。组合关系也称为聚集关系。图7.6是表示组合关系的图形符号。,图7.6 表示组合关系的图形,组合关系具有的最重要的性质是传递性。也就是说,如果A是B的一部分,B是C的一部分,则A也是C的一部分。当组合关系有多个层次时,可以用一棵简单的聚集树来表示它。聚集树是多级组合关系的一种简化表示形式。,图7.7 描绘教材结构的聚集树,3.关联关系 关联关

13、系反映对象之间相互依赖、相互作用的关系。通常把两类对象之间的二元关系再细分为一对一(11)、一对多(1M)和多对多(MN)等三种基本类型,类型的划分依据参与关联的对象的数目。(1)表示符号(2)阶 所谓阶就是参与关联的对象的个数。,图7.8 教师与属于他的书之间的关联关系,(3)链属性 链属性就是关联链的性质。,图7.9 链属性的表示方法,(4)限定 一个受限的关联由两个对象及一个限定词组成。可以把限定词看作是一种特殊的链属性。利用限定词通常能有效地减少关联的阶数。,图7.10 一个受限的关联,图7.11 消息连接的表示符,(5)消息连接 消息连接的表示符号,是从消息发送者指向消息接收者的箭头

14、线,如图7.11所示。,7.5.3 对象模型之例,图7.12 一家公司的对象模型,图7.13 与图7.12对应的E-R图,7.6 动态模型,动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。通常,用状态图来描绘对象的状态、触发状态转换的事件、以及对象的行为(对事件的响应)。每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。也就是说,动态模型是基于事件共享而互相关联的一组状态图的集合。,7.6.1概念 1.事件 事件是某个特定时刻所发生的事情,它是对引起对象从一种状态转换到另一种状态的现实世界中的事件的抽象。事件

15、没有持续时间,是瞬间完成的。2.状态 状态就是对象在其生命周期中的某个特定阶段所具有的行为模式,它是对影响对象行为的属性值的一种抽象。状态规定了对象对输入事件的响应方式。3.行为 所谓行为,是指对象达到某种状态时所做的一系列处理操作。这些操作是需要耗费时间的。,7.6.2 符号 状态图中使用的主要表示符号如下所述:状态用圆形框或椭圆框表示,框内可标上状态名也可以不给状态起名字,行为在框内用关键字do(后接冒号)标明。从一个状态到另一个状态的转换用箭头线表示,线上标以事件名。必要时可在事件名后面加一个方括号,括号内写上状态转换的条件。也就是说,仅当方括号内所列出的条件为真时,该事件的发生才引起箭

16、头所示的状态转换。,7.7 功能模型,功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。7.7.1 表示方法 通常,功能模型由一组数据流图组成。,7.7.2 三种模型之间的关系 在面向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定了基础,我们依靠对象模型完成三种模型的集成。下面扼要地叙述三种模型之间的关系。针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。状态转换驱使行为发生,这些行为在数据流图中被映射成处理,它们同时与对象模型中的服务相对应。,功能模型中的处理,对应于对象模型中类&对象所提供的服务。通常,在顶层数

17、据流图中的处理,对应于复杂对象提供的服务;在低层数据流图中的处理,对应于更基本的对象(基本对象是复杂对象的组成部分)的服务。有时一个处理对应多个服务,也有一个服务对应多个处理的时候。,功能模型中的数据存储,以及数据的源点/终点(在功能模型中称为动作对象),通常是对象模型中的对象。功能模型中的数据流,往往是对象模型中的属性值,也可能是整个对象。功能模型中的处理可能产生动态模型中的事件。对象模型描述了功能模型中的动作对象、数据存储以及数据流的结构。,7.8 小结,对于大型软件产品来说,面向对象范型明显优于结构化范型。此外,使用面向对象范型能够开发出稳定性好、可重用性好和可维护性好的软件,这些都是面向对象方法学的突出优点。,面向对象方法学比较自然地模拟了人类认识客观世界的思维方式,它所追求的目标和遵循的基本原则,就是使描述问题的问题空间和在计算机中解决问题的解空间,在结构上尽可能一致。,用面向对象观点建立系统的模型,能够促进和加深对系统的理解,有助于开发出更容易理解、更容易维护的软件。通常,人们从三个互不相同然而又密切相关的角度建立起三种不同的模型。它们分别是描述系统静态结构的对象模型、描述系统控制结构的动态模型、以及描述系统计算结构的功能模型。其中,对象模型是最基本、最核心、最重要的。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号