【面向对象】面向对象概述:从“按步骤做”到“找谁来做”

📅 2026/7/27 19:42:45
【面向对象】面向对象概述:从“按步骤做”到“找谁来做”
考点频率★★★★☆基础概念选择题必考也是理解后续所有面向对象内容的“地基”难度⭐建议重点理解面向对象和面向过程的核心区别这是整个板块的“第一块砖”1️⃣ 两个程序员的故事先讲个故事。程序员A面向过程派接到一个任务做一盘番茄炒蛋。A的脑子立刻开始拆解步骤洗番茄 → 2. 切番茄 → 3. 打鸡蛋 → 4. 热锅倒油 → 5. 炒鸡蛋 → 6. 盛出鸡蛋 → 7. 炒番茄 → 8. 倒入鸡蛋翻炒 → 9. 加盐出锅A打开电脑开始写函数wash(tomato) cut(tomato) beat(egg) heat(oil) fry(egg) ...步骤清晰逻辑严密像一个精密的钟表——每一个齿轮都在正确的位置上转动。程序员B面向对象派接到同样的任务做番茄炒蛋。B的脑子想的却是另一回事“做菜需要哪些角色”有一个厨师他负责做菜有一个番茄它可以被洗、被切有一个鸡蛋它可以被打、被炒有一口锅它可以加热、可以炒东西B打开电脑开始定义“类”class 番茄 { 洗() 切() } class 鸡蛋 { 打() 炒() } class 锅 { 加热() 炒(食材) } class 厨师 { 做番茄炒蛋() { 番茄.洗() 番茄.切() 鸡蛋.打() 锅.加热() 锅.炒(鸡蛋) 锅.炒(番茄) } }两个人两种完全不同的思维方式。面向过程问的是“这件事分几步做”面向对象问的是“这件事有哪些角色参与各自负责什么”这就是面向对象最核心的思想转变从“关注步骤”到“关注角色”。2️⃣ 面向过程Procedural Programming把事拆成步骤面向过程是一种传统的编程范式它把程序看作一系列指令的集合按照一定的顺序一步步执行。核心思想“怎么做”——把一个大问题拆解成若干个小步骤函数然后按顺序调用这些函数来解决问题。典型语言C语言、早期的BASIC打个比方面向过程就像一份菜谱——第一步做什么、第二步做什么、第三步做什么每一步都写清楚了你照着做就行。优点思路直接符合人类的线性思维程序结构清晰适合逻辑简单的任务缺点也是它后来被OO“挑战”的原因数据和操作是分离的——数据在一边操作数据的函数在另一边代码复用性差——同样的逻辑在不同地方需要重新写一遍当系统变大变复杂时函数之间的关系会变得难以管理3️⃣ 面向对象Object-Oriented把事拆成角色面向对象则是把程序看作一组对象的集合这些对象通过相互发送消息来协作完成任务。核心思想“谁来做”——先识别系统中有哪些实体对象每个实体能做什么然后让它们之间互相配合来解决问题。典型语言Java、C、Python、C#打个比方面向对象就像组建一个剧组——有导演、演员、摄影师、灯光师每个人各司其职通过沟通协作拍出一部电影。你不需要知道摄影师具体怎么调参数只需要告诉他“拍这个镜头”就行。核心特征后面几篇文章会详细展开封装把数据和操作数据的方法打包在一起对外只暴露接口继承子类可以复用父类的属性和方法多态同一个消息发给不同对象会产生不同的行为面向对象编程通过将功能封装在类中使得代码更模块化每个类负责特定的功能。4️⃣ 一张表看懂区别重点对比维度面向过程面向对象核心问题“怎么做”“谁来做”基本单元函数过程对象类数据与操作分离的封装在一起思维方式自顶向下逐步分解模拟现实世界识别对象代码复用弱复制粘贴或函数调用强继承、组合典型语言CJava、C、Python适合场景简单、线性、步骤明确的任务复杂、大规模、需要长期维护的系统一句话总结面向过程关注“功能如何一步步实现”面向对象关注“哪些对象协作来完成功能”。5️⃣ 为什么面向对象更“好”软考常考面向对象之所以成为现代软件开发的主流不是因为它更“高级”而是因为它解决了面向过程在大规模软件开发中的几个痛点面向过程的痛点面向对象的解法数据和操作分离修改数据可能影响所有操作它的函数封装——数据和方法打包在一起修改影响范围可控代码复用靠复制粘贴维护成本高继承和组合——复用现有类的代码只写差异部分系统复杂后函数之间的调用关系混乱对象协作——通过消息传递关系更清晰难以应对需求变化多态——新增类型不影响已有代码面向对象的三大特性——封装、继承、多态——本质上都是在解决同一个问题如何让代码更容易应对变化。6️⃣ 经典例题例题1面向对象开发方法的基本思想是尽可能按照人类认识客观世界的方法来分析和解决问题以下 方法不属于面向对象方法。A. Booch方法B. Coad方法C. OMT方法D. Jackson方法解析面向对象开发方法主要有Booch方法、Coad方法和OMT方法等。Jackson方法是一种面向数据结构的开发方法不属于面向对象方法。选D。例题2以下关于面向对象与面向过程方法的叙述中正确的是 。A. 面向对象方法以函数为基本单元B. 面向过程方法将数据与操作封装在一起C. 面向对象方法更关注“谁来做”D. 面向过程方法比面向对象方法更适合大规模复杂系统解析A错误——面向对象以对象为基本单元B说反了——面向对象才将数据与操作封装在一起D错误——面向对象更适合大规模复杂系统。C正确。选C。7️⃣ 记忆口诀面向过程问“几步走”面向对象问“谁来干”。数据操作分离是过程封装继承多态是对象。8️⃣ 小测验评论区对答案以下关于面向对象方法的描述中错误的是 。A. 面向对象方法以对象为中心通过对象间的协作完成任务B. 面向对象方法的核心特性包括封装、继承和多态C. 面向对象方法中数据与操作是分离的D. 面向对象方法更适合构建大规模、复杂的软件系统本专栏日更点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #面向对象 #面向过程 #软考备考