面向对象的理解

面向对象(Object Oriented Programming)


前言

首先在理解面向对象之前,我们可以先了解一下程序设计语言的发展阶段,以史为鉴.便于我们更好的从面向过程的思想过渡到面向对象的思想.

一、程序设计语言

电子计算机是一种机器,我们需要借助它来完成某种思维活动,就必须要给计算机传递它能理解和执行的形式语言来描述,这种语言就称为程序设计语言.程序设计语言和我们使用的自然语言存在较大差距,自从1946年第一台电子计算机(ENIAC)问世以来,程序设计语言的发展变迁就是为了缩小这一差距.

二、发展阶段

1.机器语言

机器语言编写的程序由0和1组成,计算机能理解并直接执行.由0和1组成的0,1串没有丝毫的形象意义,我们难以理解和记忆,所以用机器语言编写程序效率相对最低,望着满屏的0,1,非常专业的开发人员都很容易出错.

2.汇编语言

为了克服机器语言的抽象以及难以理解的缺点,就用人们便于理解和记忆的符号来代替0,1串,这便是汇编语言,相较于机器语言稍微接近了自然语言那么一点点,但汇编语言还是涉及大量的机器细节,是与具体机器硬件有关的语言,是一种面向机器的语言.只要更换或升级硬件,就得重新编写程序.

3.高级语言

一众开发人员在经过机器语言,汇编语言的无情且低效率的摧残和鞭笞下,经过多年的潜心研究,终于~~
与具体机器指令系统无关,表达方式接近自然语言的新一代语言问世了.这种语言采用具有一定的数据命名和人们易于理解的执行语句,且屏蔽了机器细节,这便是我们的高级语言.
---------------博主在这巴拉巴拉说这么多,跟我们今天的主角面向对象有啥关系?你以为这就结束了吗?这才刚刚开始----------------

三、面向对象

1.面向过程

高级语言的出现轰动一时,一经推出就受到广泛的欢迎,受市场需求的驱动,各种高级语言相继问世,程序设计语言也迎来了真正的春天.
随着结构化数据,结构化语句,数据抽象和过程抽象等概念的提出,高级语言向着结构化设计方向发展,20世纪70年代到80年代,结构化程序设计非常流行,成为了当时软件开发的主流,以结构化程序设计技术为代表的高级语言是一种面向过程的语言.
面向过程的语言可以用计算机理解的逻辑表达问题的具体解决过程,可以说是很注重过程.然而它将数据和过程分离为独立的实体,使得程序中的数据和操作不能有效的组织在一起,很难把具有多种相互联系的复杂事物表述清楚.当数据结构发生了轻微的变化,处理这些数据的算法也就要做相应的修改,所以大大降低了代码的重用性.为了更好的解决软件重用性的问题,使数据与程序始终保持相容,人们提出了面向对象程序设计(Object Oriented Programming, OOP)方法.

2.面向对象

面向对象的程序设计语言能更好的描述客观事物及其相互联系,追求对现实世界的模拟.

1.客观世界由具体的事物构成,每个事物都具有自己的一组静态特征(属性)和一组动态特征(行为).在OOP语言中,将客观事物抽象为对象(Object),用一组数据描述对象的静态特征(属性),用一组方法刻画对象的动态特征.

2.客观世界中的事物既具有特殊性,又具有共同性.人类认识客观世界的基本方法之一就是对事物进行分类,根据事物的共同性将事物分为某些类.OOP语言用类来表示一组具有相同属性和方法的对象.

3.在同一类事物中,除了具有共性外,每个事物又具有自己的特殊性.OOP语言用父类与子类的概念来描述.父类中描述事物的共性,子类中描述个性.

4.客观世界中的事物是一个独立的整体,外部常常不关心其内部的具体细节.OOP语言通过封装机制把对象的属性和方法结合为一个整体,并且屏蔽了对象的内部细节.

5.客观世界中的一个事物可能与其他事物之间存在某种行为上的联系.OOP语言通过消息连接来表示对象之间的这种动态联系.

总结

面向对象语言能够比较直接地反映客观世界的本来面目,并且使软件开发人员能够运用人类认识事物所采用的思维方法来进行软件开发.和其他语言相比,面向对象的程序设计语言和人类使用的自然语言之间的差距是最小的,也是我们当下软件开发和应用的主流.

--------------------下一个春天又在哪里?我们又将何去何从?------------------------

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值