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