面向对象 vs 面向过程
🎯 核心区别
面向过程:关注"怎么做"(How)
面向对象:关注"谁来做"(Who)
📝 生活化类比
面向过程 - 做菜的步骤
1. 买菜
2. 洗菜
3. 切菜
4. 炒菜
5. 装盘
就像写菜谱,一步一步按顺序执行。
面向对象 - 餐厅分工
厨师对象:
- 属性:姓名、技能等级
- 方法:炒菜()、调味()
服务员对象:
- 属性:工号、服务桌数
- 方法:点餐()、上菜()
每个"对象"都有自己的职责和能力。
💻 代码对比(Java)
面向过程风格
public class ProcessOriented {
public static void main(String[] args) {
// 计算圆的面积
double radius = 5.0;
double area = calculateArea(radius);
printResult(area);
}
public static double calculateArea(double r) {
return 3.14 * r * r;
}
public static void printResult(double area) {
System.out.println("面积是:" + area);
}
}
面向对象风格
public class Circle {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double calculateArea() {
return 3.14 * radius * radius;
}
public void printArea() {
System.out.println("面积是:" + calculateArea());
}
}
// 使用
Circle circle = new Circle(5.0);
circle.printArea();
🔍 本质区别总结
| 特征 | 面向过程 | 面向对象 |
|---|---|---|
| 思维方式 | 自顶向下,分解问题 | 模拟现实世界,抽象对象 |
| 代码组织 | 函数为主体 | 类和对象为主体 |
| 数据处理 | 数据和函数分离 | 数据和方法封装在一起 |
| 复用性 | 函数复用 | 继承、多态复用 |
| 维护性 | 修改影响面大 | 修改局限在类内部 |
🌟 什么时候用哪种?
面向过程适合:
- 简单的工具脚本
- 数学计算
- 系统底层编程
面向对象适合:
- 复杂的业务系统
- 需要团队协作的大项目
- 需要频繁维护和扩展的软件
💡 记忆口诀
面向过程:流水线工作,一步接一步
面向对象:专业分工,各司其职