这一周一直在参加学校团队的培训,学习C#的知识,作为一个初窥门径的菜鸟,以下是我对面向对象与面向过程二者差别的一些个人理解,希望大家批评指正。
面向过程:
将一件事情按步骤进行,具体到每个操作该如何进行,而且是各种操作混杂在一起,作小小修改可能会改动甚多,可拓展性不好,后期也不易于维护。
面向对象:
引入了对象一说,对象中包含属性和方法,属性是用作描述的性质对象,而方法则是描述对象做的动作。譬如说我创建了一个animal的抽象类,并创建一个chicken的派生类继承animal类,在chicken类中定义了Age、Weight等属性和LayEgg、Run等方法,然后,在Main函数中new一个chicken类的对象mychicken出来,那么这个对象便有了自己的属性(年龄、重量等等),它还能生蛋、跑等等,在往后的代码中,我可以让这个mychicken对象生蛋,让它跑,而实现这些功能只需调用对象的方法,具体实现功能的代码已经封装好并存放在类中。
通过对象,可以把各种不同的操作分类处理。以对象为单位,来完成一系列的动作。就如:我要开车从广州到佛山,如果是面向过程,那么我就要把目光放在每一个细小的动作,从插钥匙、开锁、拉手刹、开启引擎到踩油门等等一系列动作,还有如何行驶等等;但如果是面向对象,我只需要new一个对象“车”,而这个对象里包含了汽油量、水量等等属性,也包含了“开车”、“行驶”、“停车”等等方法,而插钥匙、开锁、拉手刹、开启引擎和踩油门等等开车的行为则写在方法“开车”中(按步骤执行),new了对象“车”后,便可以执行方法“开车”,然后执行方法“行驶”到佛山,到达后执行方法“停车”,至于其中一系列细节的动作,因为都已经封装好了,用户(我)则不需要关心。
因而,面向对象可拓展性更好,在后期易于维护。
这有些类似于C语言中的函数调用,在函数中,我们可以写入一连串的代码、步骤,然后通过调用来实现功能,其实这就相当于写在类中的方法,类可以有多个方法,且可以有描述类的属性,这比起单纯调用函数会更加有“特征性”。而且类可以有静态值,可以不new对象直接调用其方法;更有继承、多态,这比起单纯调用函数的功能更多。
在网上还看到有个用五子棋的运作来讲解两者差别的文章,大家不妨可以看看。