面向对象和面向过程_Java基础之面向对象和面向过程,孰是孰非

软件

软件,是个和抽象的概念,它不受物质物质材料、物理定律的制约,对每个人、每天都是如此重要,以至于每个人、每天都离不开它,打开手机就能使用,又好像是时时刻刻都能触摸到的;软件的种类有很多,从操作系统(android、ios、windows、Linux、Mac OSX)到,运行于操作系统的客户端软件,其实操作系统也是一个大型软件;再从简单的嵌入式操作系统到连接全球的巨型信息系统,有着各式各样的软件。

面向过程

面向过程:一种早期的编程思想,是站在过程的角度思考问题,强调的就是功能行为,单个功能的执行过,一步一步先干什么,后执行啥;每一个功能或者每一步我们都使用函数(区别于面向对象中的方法)来实现,程序执行的时候依次调用函数就OK了。

在面向过程的程序中,其中最典型的便是C程序了,最小的程序单元是函数,每个函数负责一个功能,接受输入数据,函数对数据进行处理,最后输出结果数据,反馈执行是否成功。

整个程序由一个个的函数组成,其中作为程序入口的函数称之为主函数,主函数一般命名为main,主函数依次调用其他函数,其他函数之间也可以相互调用,从而实现整个系统功能。

848c68d418d888ef2feb21b9352ed886.png

面向过程的设计

面向过程的设计,是采用自顶而下的设计方式,在设计阶段就需要考虑每一个模块应该分解成哪些子模块,与哪些模块关联,每一个子模块又细分为更小的子模块,依次类推,直到完成整个软件的所有功能。

面向过程的设计直观,执行效率高,但也存在不少问题:

1):设计不符合人类思维,容易把简单的功能复杂化;

2):系统软件适应性差,可拓展性差,可维护性低;

3.重用性低,往往因为细微的差别就重写函数;

4.随着系统的壮大,功能越来越复杂,会导致系统臃肿不堪,最终崩溃;

提出面向对象

为了解决面向过程中的一系列问题,重新提出了面向对象的软件设计思想。

面向对象:基于面向过程的编程思想,站在对象的角度思考问题,我们把多个功能(或者操作)合理的放到不同对象里,把对象当作是一个整体,每个功能或者属性都是整体中的一部分,强调的是具备某些功能的对象。我们把具备某些或者某个功能的实体,称为对象。

cc859fda099b09073ef53f6340477242.png

面向对象更加符合人类的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。面向对象将软件模块化,使用模块来封装细节实现,模块之间相互独立,互不干扰,轻松实现低耦合和高内聚。

二者依然很优秀

虽说如此,但千万别误认为面向对象一定就优于面向过程的设计,在当今互联网中,两者是共同存在的,相辅相成,各自都有各自的优势,各自都有各自的领域。

面向对象三大特征

面向对象三大特征

  • 1:封装(Encapsulation);
  • 2:继承(Inheritance);
  • 3:多态(Polymorphism);

封装:是指将对象的实现细节隐藏起来,通过公共的方法来向外暴露该对象的功能。

继承:是面向对象实现软件复用的重要手段,当子类继承父类后,子类便可以看作是父类的超集,能直接或间接获得父类的成员和操作,也能重新定义父类的操作,无须改变现有类,更能基于现有类拓展操作和属性,往其中加入新代码。

多态:是可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对象在运行时可能表现出不同的行为特征;从另一角度将接口和实现分离开来,其作用是消除类型之间的耦合关系。

抽象:从特定的角度出发,从已经存在的一些事物中抽取我们所关注的特性、行为,从而形成一个新的事物的思维过程,是一种从复杂到简洁的思维方式。

对象

对象: 在面向对象的思想中,一切事物都可以认为是对象——万物皆对象,可以定义成包含状态和行为的一个实体,存在于现实世界中并且可以与其他物体区分开来的实际存在的个体,对象具有状态和行为;比如:想想你心仪的小姐姐,可以把这个小姐姐看作是一个对象,那么该对象有两方面的定义:状态和行为;状态,如身高,年龄,三围,头发(长发或者短发)等;行为,如调戏你、跳舞,玩手机等。

通过分析多个同类型的对象的状态和行为,可以把对象抽象成类(class);所以,对象(object)也称为类的实例(instance)。因此,我们把具有相同特性(状态)和行为(功能)的对象的抽象定义类,对象的抽象是类,类实例化后便是对象,也可以说类的实例是对象,类其实是对象的数据类型或者模板,创建一个对象,就是使用一个类作为构建该对象的基础,比如:手机工厂中使用模具批量手机,模具就是类,生产出来的一个个手机便是以类为模板创建出来的一个个对象。

有趣的争论

在现实世界中有“先有鸡还是先有蛋”的争论,在编程世界也有类似的“先有对象,还是先有类”的问题,首先,类是对象的模板,也就是说类是自多个对象抽象而来的;但是如果没有类,又无法创建对象,这也是一个没有答案的问题。在实际编写程序时,又都是先有的类,再根据类创建对象。

第一个面向对象的语言

在面向对象领域,第一个是Simula-67面向对象的编程语言,Smalltalk是第二个,Smalltalk的设计深受Simula-67的影响,是一个很纯粹的面向对象编程语言,以至于后来的很多语言都深受其设计思想的影响,如C++、Java、C#、Ruby、Objective-C、Actor等。

完结。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值