当前主流的编程语言有50种左右,主要分为两大阵营:面向过程编程(FORTRAN、BASIC、C等)与面向对象编程(Objective-C、C++、JAVA等)。
面向对象编程(Object-Oriented Programming,OOP)是划时代的编程思想变革,推动了高级语言的快速发展和工业化进程。OOP的抽象、封装、继承、多态的理念使软件大规模化成为可能,有效地降低了软件开发成本、维护成本和复用成本。OOP实践了软件工程的三个主要目标:可维护性、可重用性和可扩展性。
面向过程让计算机有步骤地顺序做一件事,是一种过程化的叙事思维。在大型软件开发过程中,用面向过程的语言开发,软件维护、软件复用存在着巨大的困难,代码开发变成了记流水账,模块之间相互耦合,流程互相穿插,往往牵一发而动全身。面向对象提出一种计算机世界里解决复杂软件工程的方法论,拆解问题复杂度,从人类思维角度提出解决问题的步骤和方案。
举个例子
比如“开车”这个动作,面向过程是“drive(Car car)”,“car”是被作为对象参数(比如结构体)传入方法中,方法内定义开车的具体步骤实现。而在面向对象编程中,则是先定义一个对象“Car”,然后抽象出车的属性和相关操作,属性包括车的品牌、型号、颜色等;车所对应的操作应该有drive()、stop()等行为,那么“开车”这个行为应该在Car对象的drive()方法里实现。
面向过程的结构相对松散,强调如何流程化地解决问题;面向对象的思维更加内聚,强调高内聚、低耦合,先抽象模型,定义共性行为,再解决实际问题。