c语⾔⾯向对象和⾯向过程的区别,⾯向过程编程和⾯向对象编
程的区别
⾯向过程编程和⾯向对象编程的区别
⼀、引⾔:
⽆论是哪种语⾔,我们最终的⽬的都是希望设计这个语⾔来解决我们现实⽣活需要解决的问题。当然,你也要明⽩,我们现实⽣活中出现的软件程序绝不是⼀个简单的1~100的这样的⼩算法程序,⽽是成百上千个这样的⼩算法集合在⼀个,共同构成了我们所需要的⼀个软件程序。
⼆、⾯向过程:
以⾯向过程的C语⾔为例。当我们⾯对⼀个问题时,我们更加侧重以正常⼈的逻辑思维来理解问题。
1)解决1~100的和:定义⼀个循环来依次求累计求解各个数字的和
2)解决1-100和的同时也能解决1-200的和:在1)的基础上或许我们会定义⼀个函数(Java⾥⾯称为⽅法)设置不同的参数来解决这样问题。
3)解决1~100和的同时还能解决100!:此时可能就需要设置两个不同的函数(Java⾥⾯叫做⽅法)来求解问题。
总结:其实我们不难发现,C语⾔的求解问题,有点类似于那种你需要什么,我就给你解决什么的,你不需要的我就不管,即没有让事情本⾝没有太多的联系。
三、⾯向对象:
以⾯向过程的Java语⾔为例。当我们⾯对和C语⾔⼀样的问题时候,我们更加的侧重于谁来帮我们解决,⽽不是我⾃⼰去怎么解决的思路。(我最开始理解这句话的时候,是知其然不知其所以然的)我后来的理解就是强调了内在事物的本⾝联系。同样以上⾯的三个题⽬为例。
1)解决1-100的和:不可否认,我们还是需要利⽤循环来求解问题。但是,这⾥既然是利⽤的⾯向对象的思想特点,那么,在求解问题的时候我们思想就不能够仅仅停留在循环表⾯。抽取出问题的本质,这是解决⼀个数字到另⼀个数字的求和问题。
2)解决1-100和的同时也能解决1-200的和:在1)问题的基础上,我们不难看出,抽取出的问题本质也能够很好的解决这个问题,它只是数字换⼀下。
3)解决1-100和的同时还能解决100!:确实我们也需要设置两个⽅法(C语⾔⾥⾯叫做函数)来解决这个
问题,但是我们不能仅仅局限于这⾥,因为他是⾯向对象的语⾔。抽取出问题的本质,这是两个不同的问题,但是他们操作的却是同⼀数字,只是运算符号不⼀样。
总结:在解决问题的时候,不是不关注怎么解决问题了(⾯向过程的语⾔的解决⽅式),⽽是更加侧重于事情内在的联系,将所要解决的问题进⾏⼀个合理的归类,⽤线把他们连在⼀个。
四、总结两者的联系:
读完前⾯的两个对不同语⾔的解读。我相信你已经能够明⽩,⾯向对象的语⾔与⾯向过程的语⾔并不是相互排斥。只是在思考问题时,不同语⾔的占位不同。⾯向过程侧重解决问题就完事,⾯向对象侧重抽取事务的本质,来解决更多的类似的问题。笔者认为,在初学编程语⾔的时候,⾯向过程的编程语⾔,更能够让我上⼿编程,因为没有其他的思维复杂度,看问题的⾓度就是简单的解决我眼下的问题,也许他是⼀个循环、⼀个递归、⼀个排序。⽽⾯向过程的语⾔,会在此基础上,再来注⼊⼀种新思维的⽅式,让你在解决问题的时候,不停留在问题的表⾯(为了解决⼀个普通的算法问题),⽽是着眼于整个软件程序的设计。
五、⾯向对象详解:
回到引⾔中,我们说过,⽆论是哪种语⾔,最终的结果就是设计出⼀款优秀的软件(最终结果肯定不⽌
这⼀种)。东西是那么个东西,但是怎么才能够做好呢?这⾥可能就会涉及到很多不同的东西,例如:程序员的级别、编程语⾔的选择、开发时间的长短、、、、、、如何在这么多选项中依次选择出再组合在⼀起,这便成了优秀软件的最原始基础。针对其中的开发时间和编程语⾔来说,我统称为开发效率。这⾥我还是利⽤C语⾔和Java来说明,当我们要设计⼀个程序的时候,我们肯定会依次解决问题。C语⾔在解决问题的时候,更多的就是⼀个⼀个解决,然后组合在⼀个,然后形成⼀个程序。但是Java不同,在解决问题的时候,我们将要解决的问题,抽象到⼀个点上。举个例⼦:要去吃饭,要去做作业,⼜要去打篮球。这⾥是三个不同的事情,那么主体呢?谁来做这些?你、我还是⼩明?那么就抽象到⼀个点上,取名为People,⽆论是谁都可以代替它,以此来完成各种操作。在做的时候,只需要依靠这个People来调⽤它的三个⽅法之⼀,你要什么我就调⽤什么。以此来完成这⼀起的操作。那么问题⼜来了,编写这个⽅法和编写C最开始的函数不是⼀样的,并且还多出这么多的步骤?出于这⼀点的考虑,Java的开发者在Java中设计了丰富的类库(编写在JDK中)。所以我们在解决程序设计问题的时候,就不会把重⼼放在怎么去解决问题本⾝,⽽在于,利⽤类库的特性去调⽤⾥⾯的⽅法,你需要什么你就调⽤什么。或许你还会去关注怎么让这些问题更好的排版,能够让我的整个程序编写起来更加的舒服。即软件⼯程中所说的:⾼内聚低耦合(相关事物之间有很强的联系感,不相关的事物之间很⼩的影响)。当然这也是为了程序后期的运⾏维护做准备的。对于开发者没有的⽅法,我们则需要去⾃⼰定义。为什么它不帮我们把所有的⽅法全部写完,那样我们⽆论什么都直接调⽤呢?试想,你的需求多还是它的设计多?举个例⼦:A⽤户想要打印:我⾛路,B⽤户想要打印:我也⾛路。
最容易上手的编程语言你说开发者能帮你写完吗?答案是能的,但是这样设计的意义在哪⾥?⼀句简单的话,⾃⼰要⽤,⾃⼰定义就⾏,没有必要为了⼀句话设计⼀个打印语句在类库中,让所有的开发者跟着你⼀起⽤你那句话。相反,哪些功能就很有必要呢?⼀句话:基础的算法题。⽐如:排序、累加、累乘、、、、、、以此让整个程序开发,更加的顺畅,为了不同的侧重点⽽考虑问题。
六、总结:
⾯向过程语⾔是在⾯向对象语⾔的基础上建⽴起来的,它将⾯向过程所需要的⼯作进⾏⼀个抽取,然后将⾃⼰⼯作的重⼼放在如何协调整个代码编写的协调性。我只想说⾯向对象是⾯向过程的⼀个升华,⼈类的智慧,真的很棒!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论