我们都知道,C语言是面向过程的,C++是面向对象的。那什么是面向过程?什么是面向对象?面向过程和面向对象有联系吗?如果要修改一份代码,是怎么把面向过程变成面向对象的?
什么是面向过程和面向对象?
在C语言的世界,我们是调用一个一个的函数,再让函数去调用数据来实现目标的,用举个栗子,当我们洗衣服时候,用C语言的思想,将洗衣服分成若干个过程,放衣服、洗衣服、甩干、响铃、晾衣服这4个过程,这四个过程分别对应四种方法,也就是四种函数,通过函数调用逐步解决问题。当我们用面向对象的思想来完成洗衣服这件事时,放衣服和晾晒衣服的对象就是person,洗衣服、甩干、响铃的对象就是machine,整个洗衣服的过程中,你只需要调用俩个对象,person和machine,在这俩个对象中,包含各自的成员函数和成员变量。我们不需要关心具体的实施过程,只需要知道我们调用的是哪个对象就可以了。也就是将一件事情拆分成不同的对象,通过对象之间的交互来完成。这也体现了面向对象的一个特性—>封装。
面向过程和面向对象有什么区别和联系呢?
面向过程是面向对象的一个基础,如果将面向对象再细化,其实也是对对象中成员函数的调用。面向对象可以说是对面向过程的一个优化,我们用C语言写代码时肯定都遇到过这样的情况,“动一处则乱全身”,因为每段代码的关联性比较高,当你要修改一处代码时,可能其他地方也受到了牵连,代码可维护性不高。面向对象中调用的是类名,当你修改对象中的成员函数时,不会影响其他的对象,这样就增大了代码的可维护性。
怎么把面向过程变成面向对象的?
我们要把面向过程的代码修改成面向对象的代码并不难,把面向过程中的函数进行分类,具有相同属性的函数分为一类,再创建一个类将它们封装起来。以洗衣服为例,面向过程和面向对象所完成的事情都是一样的,放衣服、洗衣服、甩干、响铃、晾衣服,不同的是面向对象将这五个过程分成了2类,放衣服和晾衣服是人完成的,洗衣服、甩干、响铃是机器完成的,那我们就可以创建2个类,person类和machine类,再将放衣服和晾衣服作为成员函数放进person类中,将洗衣服、甩干、响铃放进machine类中,就此面向过程就改写为面向对象了。