在所有的计算机编程语言中,其思想大致分为两种:面向对象和面向过程。那么,两者有什么区别呢?今天我们来聊一聊。
首先,我们提出一个需求:将一个大象,装进一个冰箱里面(人生在于离谱)
面向过程
面向过程:针对需求,将需求划分成若干个功能模块。将这几个功能的模块,有序的串联起来执行。
面向过程是一个线性的。
使用面向过程的思路实现:
三步:
1:打开冰箱门
2:把大象放进去
3:把冰箱门带上
面向对象
根据需求,列出思路:
1:分析:这个需求中有几个对象。(名词分析法)。
结果有两个对象,一个大象,一个冰箱。
2:分析:这两个对象具有什么样的功能(方法),和属性。就可以实现我们想要的需求。
结果:如果冰箱具有 开门,关门的功能,以及大象会钻冰箱的功能。那么就可以实现需求。
功能:功能具体作用到谁的身上,那么该功能就属于谁。
3:创建类描述 具有指定功能的对象。
如何创建? 必须通过代码去描述 大象,,描述冰箱。
使用什么去描述 大象和冰箱? 用类。
创建了2个类。一个大象类,一个冰箱类。
4:创建对象。通过类去创建对象。
Elephant e = new Elephant();//创建了一个大象
int i = 0;
Fridge f = new Fridge();//创建了一个冰箱
5:让我创建的对象,去执行自己具有的功能就OK了。
使用对象 . [点引用符] 去调用对应的方法。
最终执行的时候还是需要使用面向过程的方式去执行。
面向对象的实现
package com.bjsxt.oop.first;
public class Main {
public static void main(String[] args) {
Fridge fridge = new Fridge();
fridge.capacity = 30;
Elephant elephant = new Elephant();
elephant.size = 30;
fridge.openDoor();
elephant.enterFridge(fridge);
fridge.closeDoor();
}
}
package com.bjsxt.oop.first;
public class Fridge {
int capacity;
int height;
int age;
void openDoor(){
System.out.println("冰箱门打开了!");
}
void closeDoor(){
System.out.println("冰箱门关闭了!啊");
}
}
package com.bjsxt.oop.first;
//Elephant 就是用来描述大象的,大象的属性和功能都要在大括号中描述。
class Elephant {
int size;
//类体
boolean enterFridge(Fridge f){
if(size > f.capacity){
System.out.println("大象该减肥了!!好大象不过1000!");
return false;
}else{
System.out.println("大象成功的钻到了冰箱里面 啊!");
return true;
}
}
}
小结
好了,说了这么多,面向对象虽然对于小需求来说相比面向过程比较繁琐,代码量比较多,但是在实际工作的过程中,我们不可能只是面对单一不变的需求的,为了适应需求的变更,面向对象能很好地优化我们代码以及减少工作量。面向过程固然有其好处,思路清晰且容易理解,但是它只适合一些比较简单的需求。下面我将分几个部分介绍面向对象。