软件工程-第9章第2节_第1页
软件工程-第9章第2节_第2页
软件工程-第9章第2节_第3页
软件工程-第9章第2节_第4页
软件工程-第9章第2节_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9.2面向对象的概念

9.2.1面向对象的基本思想面向对象的基本出发点就是尽可能按照人类认识世界的方法和思维方式来分析和解决问题,客观世界是由许多具体的事物或事件、抽象的概念及规则等组成的。因此,我们将任何感兴趣或要加以研究的事物、概念都统称为对象。面向对象的方法正是以对象作为最基本的元素,它也是分析问题、解决问题的核心。由此可见,面向对象方法很自然地符合人类的认识规律。计算机实现的对象与真实世界具有一对一的关系,不必作任何转换,这样就使面向对象更易于为人们所理解、接受和掌握。9.2.2面向对象的基本概念1.对象对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象类型主要有以下几种:(1)有形实体:指一切看得见、摸得着的实物,如计算机、机房、机器人和工件等。这些都属于有形实体,也是最容易识别的对象。(2)作用:指人或组织所起的作用,如医生、教师、学生、工人、公司和部门等。9.2.2面向对象的基本概念(3)事件:指在特定时间所发生的事,如飞行、演出、事故和开会等。(4)性能说明:指厂商对产品性能的说明,如产品名字、型号及各种性能指标等。对象不仅能表示结构化的数据,而且能表示抽象的事件、规则以及复杂的工程实体。因此,对象具有很强的表达能力和描述功能。9.2.2面向对象的基本概念2.对象的状态和行为对象具有状态,一个对象用数据值来描述它的状态,如某个具体的学生张三,具有姓名、年龄、性别、家庭地址、学历及所在学校等数据值,用这些数据值来表示这个具体的学生的情况。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。如某个工人经过“增加工资”的操作后,他的工资额就发生变化。9.2.2面向对象的基本概念对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中;对象内的数据具有自己的操作,从而可灵活地专门描述对象的独特行为,具有较强的独立性和自治性;其内部状态不受或很少受外界的影响,具有很好的模块化特点。对象为软件重用奠定了坚实的基础。9.2.2面向对象的基本概念3.类具有相同或相似性质对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性;类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。9.2.2面向对象的基本概念例如,人、教师、学生、公司、长方形、工厂和窗口等都是类的例子;每个人都有年龄、性别、名字及正在从事的工作,这些就是人这个类的属性;而“画长方形”、“显示长方形”则是长方形这个类具有的操作。对象和类之间的关系如图9.1所示。图9.1对象、类和消息传递9.2.2面向对象的基本概念4.类的关系在客观世界中有若干类,这些类之间有一定的结构关系,通常有两种主要的结构关系,即一般具体结构关系及整体部分结构关系。一般具体结构称为分类结构,也可以说是“或”关系,是“isa”关系。例如,汽车和交通工具都是类。它们之间的关系是一种“或”关系,汽车“是一种”交通工具。类的这种层次结构可用来描述现实世界中的一般化的抽象关系,通常越在上层的类越具有一般性和共性,越在下层的类越具体、越细化。9.2.2面向对象的基本概念整体部分结构称为组装结构,它们之间的关系是一种“与”关系,是“hasa”关系。例如,汽车和发动机都是类,它们之间是一种“与”关系,汽车“有一个”发动机。类的这种层次关系可用来描述现实世界中的类的组成的抽象关系。上层的类具有整体性,下层的类具有成员性。在类的结构关系中,通常上层类称为父类或超类,下层类称为子类。9.2.2面向对象的基本概念5.消息和方法对象之间进行通信的一种构造叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。接收消息的对象经过解释,然后给予响应。这种通信机制称为消息传递。发送一条消息至少要包含说明接收消息的对象名、发送给该对象的消息名(即对象名.方法名),一般还要对参数加以说明,参数可以是只有认识消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。9.2.2面向对象的基本概念消息传递是从外部使得一个对象具有某种主动数据的行为。对于一个系统来说,使用消息传递的方法可更好地利用对象的分离功能。类中操作的实现过程叫做方法,一个方法有方法名、参数及方法体。当一个对象接收一条消息后,它所包含的方法决定对象怎样动作。方法也可以发送消息给其他对象,请求执行某一动作或提供信息。由于对象的内部对用户是密封的,因而消息只是对象同外部世界连接的管道。而对象内部的数据只能被自己的方法所操纵。对象、类和消息传递如图9.1所示。9.2.3面向对象的特征1.对象唯一性每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。在对象建立时,由系统授予新对象唯一的对象标识符,它在历史版本管理中有巨大作用。9.2.3面向对象的特征2.分类性分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。每个类是个体对象的可能无限集合,而每个对象是相关类的实例。9.2.3面向对象的特征3.继承性继承性是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。继承性是面向对象程序设计语言不同于其他语言的最主要的特点,是其他语言所没有的。在类层次中,子类只继承一个父类的数据结构和方法,称为单重继承;在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。9.2.3面向对象的特征在软件开发中,类的继承性使所建立的软件具有开放性,可进行扩充,是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重用性。采用继承性,提供了类的规范的等级结构,对单重继承,可用树结构来描述;对多重继承,可用格结构来描述。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。首先进行共同特性的设计和验证,然后自顶向下来开发,逐步加入新的内容,符合逐步细化的原则,通过继承,便于实现多态性。9.2.3面向对象的特征4.多态性(多形性)多态性是指相同的操作或函数、过程作用于多种类型的对象上并获得不同结果。不同的对象,收到同一消息产生完全不同的结果,这种现象称为多态性。如MOVE操作,可以是窗口对象的移动操作,也可以是国际象棋棋子移动的操作。多态性允许每个对象以适合自身的方式去响应共同的消息,这样就增强了操作的透明性、可理解性和可维护性。用户不必为相同的功能操作作用于不同类型的对象而费心地去识别。9.2.4面向对象的要素1.抽象抽象是指强调实体的本质、内在的属性,而忽略一些无关紧要的属性。在系统开发中,抽象指的是在决定如何实现对象之前,对象的意义和行为。使用抽象可以尽可能避免过早考虑一些细节,大多数语言都提供数据抽象机制,而运用继承性和多态性强化了这种能力,分析阶段使用抽象仅仅涉及应用域的概念,在理解问题域之前不考虑设计与实现。合理应用抽象可以在分析、设计程序结构、数据库结构及文档化等过程中使用统一的模型。9.2.4面向对象的要素面向对象比其他方法技术有更高的抽象性。对象具有极强的抽象表达能力,对象可表示一切事物,可表达结构化的数据,也可表达非结构化的数据,如工程实体、图形、声音及规则等。而类实现了对象的数据和行为的抽象,是对象的共性的抽象。9.2.4面向对象的要素2.封装性(信息隐蔽)封装性是保证软件部件具有优良的模块性的基础。封装性是指所有软件部件内部都有明确的范围以及清楚的外部边界。每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离。面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。9.2.4面向对象的要素

对象是封装的最基本单位,在用面向对象的方法解决实际问题时,要创建类的实例,即建立对象,除了应具有的共性外,还应定义仅由该对象所私有的特性。因此,对象封装比类的封装更具体、更细致,是面向对象封装的最基本单位。

封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、有力。9.2.4面向对象的要素3.共享性面向对象技术在不同级别上促进了共享,有以下几种:(1)同一个类中对象的共享。同一个类中的对象有着相同数据结构,这是由数据成员的类型、定义顺序及继承关系等决定的;也有着相同的行为特征,这是由方法接口和实现决定的。从这个意义上讲,这些对象之间是结构、行为特征的共享关系。进一步,在某些实际应用中还会出现要求这些对象之间有状态(即数据成员值)的共享关系。例如,所有同心圆的类,各个具体圆的圆心坐标值是相同的,即共处于同一状态。9.2.4面向对象的要素(2)在同一个应用中的共享。在同一应用的类层次结构中,存在继承关系的各相似子类中,存在着数据结构和行为的继承,使各相似子类共享共同的结构和行为。使用继承来实现代码的共享,这也是面向对象的主要优点之一。(3)在不同应用中的共享。面向对象不仅允许在同一应用共享信息,而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享。4.强调对象结构而不是程序结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论