2022年面向对象的概念 .pdf
《2022年面向对象的概念 .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象的概念 .pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1. 面向对象的概念面向对象(Object-Oriented)=对象 (Object)+类 (Class)+ 继承 (Inheritance)+通信(Communication) 如果一个软件系统是使用这样4个概念设计和实现的,则将该软件系统称为面向对象的。下面给出每个概念的具体定义。1.1 对象从一般意义上讲,对象是现实世界中一个实际存在事物,它可以是有形的(比如一辆汽车),也可以是无形(比如一项计划)。对象构成世界的一个独立单位,它具有自己的静态特征和动态特征。 静态特征即可用某种数据来描述的特征,动态特征即对象所表现的行为或对象所具有的功能。现实世界中的任何事物都可以称作对象,它是大量的
2、、无处不在的。不过,人们在开发一个系统时,通常只是在一定的范围(问题域)内考虑和认识与系统目标有关的事物,并用系统中的对象抽象地表示它们。所以面向对象方法在提到“ 对象 ” 这个术语时, 既可能泛指现实世界中的某些事物,也可能专指它们在系统中的抽象表示,即系统中的对象。我们主要对后一种情况讨论对象的概念,其定义是: 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务构成。属性和服务, 是构成对象的两个主要因素,其定义是: 属性是用来描述对象静态特征的一个数据项。服务是用来描述对象动态特征(行为)的一个操作序列。一个对象可以有多项
3、属性和多项服务。一个对象的属性和服务被结合成一个整体,对象的属性值只能由这个对象的服务存取。在有些文献中把对象标识(OID)列为对象的另一要素。对象标识也就是对象的名字,有“ 外部标识 ” 和“ 内部标识 ” 之分。 前者供对象的定义者或使用者用,后者为系统内部惟一的识别对象。 ( 怎么感觉这点跟android 开发里面的 id 是一样的, 在某个文件下有编程人员定义的所有属性的 id ,并且是唯一的,一般不允许更改,属于系统内部分配。) 另外需要说明以下两点:第一点是,对象只描述客观事物本质的与系统目标有关的特征,而不考虑那些非本质的与系统目标无关的特征。这就是说, 对象是对事物的抽象描述。
4、第二点是, 对象是属性和服务的结合体。二者是不可分的。而且对象的属性值只能由这个对象的服务来读取和修改,这就是后文将讲述的封装概念。根据以上两点, 也可以给出如下对象定义:对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用,它是一组属性和有权对这些属性进行操作的一组服务的封装体。系统中的一个对象,在软件生命周期的各个阶段可能有不同的表示形式。例如, 在分析与设计阶段是用某种OOD/OOA方法所提供的表示法给出比较粗略的定义,而在编程阶段则要用一种 OOPL 写出详细而确切的源程序代码。这就是说,系统中的对象要经历若干演化阶段,其表现形式各异,但在概念上是一
5、致的,即都是问题域中某一事物的抽象表示。1.2 类把众多的事物归纳划分成一些类是人类在认识客观世界时经常采用的思维方法。分类所依据的原则是抽象,即:忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。例如:马、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 树木、 石头等等都是一些抽象概念,它们是一些具有共同特征的事物的集合,被称作类。类的概念使我们能
6、对属于该类的全部个体事物进行统一的描述。例如:“ 树具有树根、树干、树枝和树叶,它能进行光合作用” ,这个描述适合所有的树,从而不必对每棵具体的树进行一次这样的描述。在OO 方法中, 类的定义是:类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。类的作用是定义对象。比如,程序中给出一个类的说明,然后以静态声明或动态创建等方式定义它的对象实例。类与对象的关系如同一个模具与用这个模具铸造出来的铸件之间的关系。类给出了属于该类的全部
7、对象的抽象定义,而对象则是符合这种定义的一个实体。所以, 一个对象又称作类的一个实例 (instance), 而有的文献又把类称作对象的模板(template )。所谓 “ 实体 ” 、“ 实例 ” 意味着什么呢?最现实的一件事是:在程序中,每个对象需要有自己的存储空间,以保存它们自己的属性值。我们说同类对象具有相同的属性与服务,是指它们的定义形式相同,而不是说每个对象的属性值都相同。读者可以对照非OO 语言中的类型 (type ) 与变量 (variable)之间的关系来理解类和对象,二者十分相似, 都是集合与成员、抽象描述与具体实例的关系。多数情况下,类型用于定义数据,类用于定义对象。有些
8、面向对象的编程语言,既有类的概念也有类型概念。比如在 C+中,用类定义对象,用类型定义对象的成员变量。但是也有少数面向对象编程语言(例如Object Pascal)不采用类的概念,对象和普通数据都是用类型定义的。事物(对象)既具有共同性,也具有特殊性。运用抽象的原则舍弃对象的特殊性,抽取其共同性, 则得到一个适应一批对象的类。如果在这个类的范围内考虑定义这个类时舍弃的某些特殊性, 则在这个类中只有一部分对象具有这些特殊性,而这些对象彼此是共同的,于是得到一个新的类。它是前一个类的子集,称作前一个类的特殊类。而前一个类称作这个新类的一般类, 这是从一般类发现特殊类,也可以从特殊到一般。考虑若干类
9、所具有的彼此共同的特征,舍弃它们彼此不同的特殊性,则得到这些类的一般类。一般类和特殊类是相对而言的,它们之间是一种真包含的关系(即特殊类是一般类的一个真子集) 。如果两个类之间没有这种关系,就谈不上一般和特殊。特殊类具有它的一般类的全部特征,同时又具有一些只适应于本类对象的独特特征。在OO 方法中关于一般类与特殊类的定义是:如果类 A 具有类 B的全部属性和全部服务,而且具有自己特有的某些属性或服务,则 A叫做 B 的特殊类, B叫做 A的一般类。 这个定义也可用另一种方式给出。如果类 A 的全部对象都是类B 的对象, 而且类 B中存在不属于类A的对象, 则A是B的特殊类, B是A的一般类。以
10、上两个定义是等价的,但从软件开发的角度看,前一个定义运用起来将更加方便。考虑轮船、客轮这两个类,轮船具有吨位、时速、吃水线等属性并具有行驶、停泊等服务;客轮具有轮船的全部属性与服务,又有自己的特殊属性(如载客量) 和服务(如供餐) 。所以客轮是轮船的特殊类,轮船是客轮的一般类。与一般类 / 特殊类等价的其他术语有超类/ 子类、基类 / 派生类、祖先类/ 后裔类等。1.3 封 装封装是面向对象方法的一个重要原则,它有两个涵义。 第一个涵义是,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象) ;第二个涵义也称作“ 信息隐蔽 ” ,即尽可能隐蔽对象的内部细节,对外形成一个边
11、界(或者说形成一道屏障),只保留有限的对外接口使之与外部发生联系。这主要是指对象的外部不能直接地存取对象的属名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 性,只能通过几个允许外部使用的服务与对象发生联系。用比较简练的语言给出封装的定义就是:封装就是把对象的属性和服务结合成一个独立系统单位,并尽可能隐蔽对象的内部细节。用“ 售报亭 ” 对象描述现实中的一个售报亭,它的属性是亭内的各种报刊(其名称、 定价)和钱箱(总金额),它有两
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年面向对象的概念 2022 面向 对象 概念
限制150内