面向过程(Procedure Oriented 简称 PO)
- 把事情拆分成一个个的方法和数据,然后按照一定的顺序,执行完这些方法,等方法执行完了,事情就搞定了。
(因为每个方法都可以看作一个过程,所以叫面向过程)。
强调的是功能行为,以函数为最小单位,考虑怎么做。
面向对象(Object Oriented 简称 OO)
- 面向对象会把事物抽象成对象的概念,先抽象出对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法,问题得到解决。
强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。
以洗衣机洗衣粉举例
- 面向过程
加衣服-->加洗衣粉-->加水-->漂洗-->清洗-->甩干
代码
System.out.println("放衣服!");
System.out.println("加洗衣粉!");
System.out.println("加水!");
System.out.println("漂洗!");
System.out.println("清洗!");
System.out.println("甩干!");
- 面向对象
new出两个对象 “人” 和 “洗衣机”
“人” 加入属性和方法:放衣服、加洗衣服、加水
“洗衣机” 加入属性和方法:漂洗、清洗、甩干
代码
// 人
class person {
public void Clothes() {
System.out.println("放衣服!");
}
public void WashingPowder() {
System.out.println("加洗衣粉!");
}
public void Water() {
System.out.println("加水!");
}
}
// 洗衣机
class machine {
public void Rinse() {
System.out.println("漂洗!");
}
public void Clean() {
System.out.println("清洗!");
}
public void SpinDry() {
System.out.println("甩干!");
}
}
两者的运行结果
// 面向对象编程
person p = new person(); // 人
machine m = new machine(); // 洗衣机
// 调用
p.Clothes();// 放衣服
p.WashingPowder();// 加洗衣粉
p.Water();// 加水
m.Rinse();// 漂洗
m.Clean();// 清洗
m.SpinDry();// 甩干
总结
- 面向过程
优点:性能比面向对象高,因为不需要实例化对 象。
缺点:可维护性差。 - 面向对象
优点:易维护、易复用、易扩展,由于面向对像 有封装、继承、多态性的特性,可以设计 出低耦合的系统,使系统更加灵活、更加 易于维护。
缺点:性能比面向过程低。