面向对象和面向过程各有千秋
一.面向过程与面向对象对比
面向过程:强调的是每一个功能的步骤,有很多很多方法组成,这些方法相互调用,完成需求。
面向对象:强调的是对象,然后由对象去调用功能。
面向过程:如果做小的项目,则效率非常高,很快就能实现,但是后期维护非常麻烦。
面向对象:如果做大的项目,则效率相对会低,但是代码结构性很好,后期维护容易。从这个方面来说,效率反而提高了。
面向对象是基于面向过程的编程思想
二.以面向对象为主,对比面向过程说明面向对象的思想特点
世间万物皆对象
面向对象的思想特点:
1. 是一种更符合我们思想习惯的思想
2. 可以将复杂的事情简单化
3. 将我们从执行者变成了指挥者
举例对比:
买电脑:
面向过程:我先了解电脑-->了解我自己的需求:学习用-->找对应的参数信息-->去中关村买电脑-->讨价还价-->买回电脑。
面向对象:我知道我要买电脑-->班长去给我买-->班长就买回来了。
洗衣服:
面向过程:把衣服脱下-->找一个盆-->放点洗衣粉-->加点水-->把衣服扔进去-->搓一搓-->清洗衣服-->拧干-->晾起来。
面向对象:把衣服脱下-->打开全自动洗衣机-->扔进去-->一键即可-->晾起来。
吃饭:
面向过程:去超市买菜-->摘菜-->洗菜-->切菜-->炒菜-->盛起来-->吃。
面向对象:去饭店-->服务员(点菜)-->厨师(做菜)-->服务员(端菜)--吃。
三.把大象装进冰箱
面向过程:
分三步:
1.打开冰箱门
2.装进大象
3.关闭冰箱门
代码示例:
class Demo { public static void main(String[] args) { /* System.out.println("打开冰箱门"); //打开冰箱门的动作,现在仅仅是为了演示,就写了一个输出语句,其实,它可能需要做很多操作。这个时候代码就比较多一些了。 //假设我要多次打开冰箱门,代码一多,每次都写一遍,麻烦不? //我们就应该用方法改进。 System.out.println("装进大象"); System.out.println("关闭冰箱门"); */ //写了方法以后,调用就改变了。 open(); in(); close(); public static void open() { System.out.println("打开冰箱门"); } public static void in() { System.out.println("装进大象"); } public static void close() { System.out.println("关闭冰箱门"); } }
面向对象:
我们怎么才能更符合面向对象思想呢?
1:有哪些类呢?
2:每个类有哪些东西呢?
3:类与类之间的关系是什么呢?
把大象装进冰箱的分析?(如何分析有哪些类呢?答:名词提取法。)(UML:统一建模语言。)
A:有哪些类呢?
大象类
冰箱类
Demo类
B:每个类有哪些东西呢?
大象类:
进去
冰箱类:
开门
关门
Demo类:
main方法
C:类与类之间的关系是什么呢?
Demo类中使用大象类和冰箱类的功能。
代码示例:
class 大象 { public static void in() { System.out.println("装进大象"); } } class 冰箱 { public static void open() { System.out.println("打开冰箱门"); } public static void close() { System.out.println("关闭冰箱门"); } } class Demo { public static void main(String[] args) {
冰箱.open();//冰箱类调用开门方法
大象.in();大象类调用进去方法
冰箱.close();冰箱类调用关门方法
}
}