OOP

2023-09-09

OOP

今天看到有人重提OOP,那咱也讲讲OOP

OOP是Object Oriented Programming的缩写,也就是“面向对象编程”(嗯,中文世界这个翻译占主流)。

啥是“对象”?同学,你单身多久了? ^_-

传统的编程是命令式编程(即imperative programming) ,什么意思呢? 计算机是通过一条条指令来驱动它工作的,命令式编程就是通过近乎是流水账的形式编写程序,然后把程序交给计算机去执行。

命令式编程的问题在于,它符合计算机的脾性,但不符合人性, 程序一旦复杂了,就很难维护,后人也很难搞清楚,所以,我们会把程序通过方法或者函数或者模块等形式进行组织,提高复用性和可维护性。

OOP在复用性和可维护性的基础上不但增加了封装性,还使得程序的状态与行为融为一体,这就与现实世界的物体(Object)很相似了,与我们的思维习惯也很贴近,比如一只鸭子,一个人,一条狗,一只猫等等,都可以在编程的时候建模成Object,然后通过它们暴露出来的行为接口进行交互。

早年论坛里曾经围绕着OOP做了“充血模型”和“贫血模型”的大讨论,扶墙老师觉得,两者无非是在理论与实用性之间取一个平衡,菜喜欢怎么吃,那各位自己看着办吧 ;)