diff options
Diffstat (limited to 'content/posts/面向对象编程与面向过程编程的本质区别.md')
| -rw-r--r-- | content/posts/面向对象编程与面向过程编程的本质区别.md | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/content/posts/面向对象编程与面向过程编程的本质区别.md b/content/posts/面向对象编程与面向过程编程的本质区别.md new file mode 100644 index 0000000..ba09188 --- /dev/null +++ b/content/posts/面向对象编程与面向过程编程的本质区别.md @@ -0,0 +1,28 @@ +--- +abbrlink: 1518948190 +categories: +- 往昔 +date: "2025-05-29 21:21:36" +tags: +- 编程 +title: 面向对象与面向过程的本质区别 +--- +面向对象与面向过程这两种编程思想主要体现在一件事上:面向对象关心**谁来做**,而面向过程关心**做什么**。 + +举个例子,如果我现在要开发一个五子棋小游戏,在面向对象的思想中,实现步骤应该是这样的。 +- 有一个窗口对象,可以让我的游戏内容展示在里面 +- 创建棋盘对象 +- 初始化棋盘 +- 创建计分板对象 +- 初始化计分板 +- 玩家开始下棋,棋盘对象创建棋子对象,绘制出来 + +不难看出,面向对象就是在关心**谁来做**,先关心哪个对象去做,再去研究这个对象要去**怎么做**。抽象层级更高,但是符合人类的思维。从代码结构上来看,写面向对象更偏向在画一个树状图,一级一级划分谁要做什么事情,而面向过程更像一个线性的流程图,全程都在关心需要做什么事情。 + +更官方地说,面向对象以算法和流程为核心,强调步骤拆解。而面向对象以与对象交互为核心,强调责任分配 + +当然,写法在语言上就有所限定。C更适合面向过程,头文件的引用使用函数做事就意味着C很难实现面向对象的设计模式,当然有一些比较邪门的技巧,容易开枪把自己脚指头崩掉,比如`void*`模拟泛型这种不在本文讨论范围。 + +C缺乏类、继承等基础语法支持,但可以用结构体加函数指针简单模拟对象,但设计难度有所增加,调试难度更有所增加。面向过程更适合处理逻辑简单的任务或算法密集型任务,而面向对象更适合构建GUI应用等复杂系统。 + +面向对象并非在所有情况下都是最优选择。还是需要依据开发项目的实际需求考量。 |
