1、面向对象思想的相关概念

一、综述

       在计算机科学中,对象(Object)通常是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。对象是一个黑盒子,他是用来接收和发送消息;一个对象实体中,通常包括有数据和程序两部分。使用该对象的用户也不需要知道对象中具体的数据和程序情况,只需要了解该对象的接口,及接收什么样的消息和会反馈什么就可以了。

那么,到底什么是面面对象呢?从本质上说,面向对象既是一种思想,也是一种技术,它是过程式程序设计方法的一个高级层次。面向对象思想利用对问题的高度抽象来提升代码的可重用性,从而提高生产力。尤其是在较为复杂的规模较大的系统实现中,面向对象通常比传统的过程式方法产生更高的效能。而且,随着软件规模的增大,面向对象相对于传统的过程式的优势就更加凸现。可以说,是软件产业化最终促进了面向对象技术的产生和发展。

面向对象有三大基本机制:封装、继承、多态,称一个编程或程序构建是面向对象的,首先他要具有这几个特点。在面向对象的编程和设计中,以类和对象来刻画客观世界。面向对象技术就是针对现实思维方式而产生的,继承和抽象,归纳和演绎是面向对象技术中常用的方法学和思维模式。面向对象技术是一种按照人们对现实世界习惯的认识论和思维方式来研究和模拟客观世界的方法学。

“Why all this concern for being able to change software? Because experience has taught 

us that software changes. A popular adage is that "software is not written, 

it is re-written".”

二、面向对象的相关概念

1、对象:是人们要进行研究的事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

2、类:具有相同或相似性质的对象的抽象就是类。类中操作的实现过程叫做方法。对象之间进行通信的结构叫做消息。

3、抽象:抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。要抽象,就必须进行比较。抽象化主要是为了使复杂度降低,以得到论域中较简单的概念,好让人们能够控制其过程或以综观的角度来了解许多特定的事态。

4、思维:思维是人脑对客观事物的本质属性和事物之间内在联系的规律性所作出的概括与间接的反映。抽象思维凭借科学的抽象概念对事物的本质和客观世界发展的深远过程进行反映,使人们通过认识活动获得远远超出靠感觉器官直接感知的知识。科学的抽象是在概念中反映自然界或社会物质过程的内在本质的思想,它是在对事物的本质属性进行分析、综合、比较的基础上,抽取出事物的本质属性,撇开其非本质属性,使认识从感性的具体进入抽象的规定,形成概念。科学的、合乎逻辑的抽象思维是在社会实践的基础上形成的。思维是建立在人们对现存事物的充分认识基础之上,经过大脑对这些现存事物的感性认识、理解、分析、总结等逻辑思考过程,从而对其本质属性做出内在的、联系的、间接的、概括的反映;而设计则是通过一定的手段创造性地改变这些事物的性质,形成可以具备价值的物品的活动。

5、多态性:多态性就是多种表现形式,即同样的消息被不同的对象所接受将会产生不同的结果。当然,也有"一个对外接口,多个内在实现方法"的情况。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整型,浮点或字符。不管存储的是何种数据,堆栈的算法实现是一样的。针对不同的数据类型,编程人员不必手工选择,只需使用统一接口名,系统可自动选择。

6、封装:封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,即将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。

7、继承:继承是指一个对象直接使用另一对象的属性和方法。其本质是从现在的类生成新类。继承关系是静态关系。包括静态继承和动态继承;静态继承是在父类的基础上通过增加数据成员和方法成员而构成子类的过程,而动态继承是以父类的实例作为子类的数据成员而存在的一种方法。动态继承是传统意义上的组合,或称为聚合,类似于C语言中的结构体成员是结构变量。静态继承中的父类和子类之间是一种泛化-特化的关系,动态继承中的父类和子类之间是一种整体-部分的关系。

8、重载:在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同。重载只是一种语言特性,与多态无关,与面向对象也无关。

9、覆盖:覆盖是指子类重新定义父类的虚函数。

10、归纳:从许多个别的事物中概括出一般性概念,原则,或结论的思维方法。

11、演绎:从普遍性结论或一般性事理推导出个别性结论的论证方法。

12、泛化:当某一反应与某种刺激形成条件联系后,这一反应也会与其它类似的刺激形成某种程度的条件联系,这一过程称为泛化,即模板化。

13、特化:将模板对应于某一特定类型进行特别的声明或定义。

14、聚合:是关联的一种形式,代表两个类之间的整体和局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。

15、接口:在C++中,一个类被允许继承多个类。但是在Java以后的语言不被允许。这样,如果想继承多个类时便非常困难。所以开发方想出了新办法:接口。一个接口内,允许包含变量、常量等一个类所包含的基本内容。但是,接口中的函数不允许设定代码,也就意味着不能把程序入口放到接口里。由上可以理解到,接口是专门被继承的。接口存在的意义也是被继承。和C++里的抽象类里的纯虚函数类似,不能被实例化。

16、复用:复用就是指“利用现成的东西”。把复用的思想用于软件开发,称为软件复用。

17、构件:是一个物理的、可替换的系统组成部分,它包装了实现体且提供了对一组接口的实现方法。是面向软件体系结构的可复用软件模块。未来软件开发的过程就是构件组装的过程,维护的过程就是构件升级、替换和扩充的过程。其优点是构件组装模型导致了软件的复用,提高了软件开发的效率。

18、面向对象设计的准则:模块化、抽象、信息隐藏、低耦合、高内聚。面向对象的三特点:封装、继承、多态。面向对象的三大要素:抽象、封装性(信息隐藏)、共享性。

19、方法:指人们为了达到某种目的而采取的手段、途径和行为方式中所包含的可操作的规则或模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值