面向对象和面向程序是一对反义词。
面向程序:除了你以外的都只是物体,所以在写程序的时候,所有事情都需要主程序一个一个去做。
比如,你今天要去买东西,你要买一个苹果5元,一个梨子3元,一个桃子10元,今天水果店搞活动,每个水果8折,实付满十块减两块(只减一次)。
void 面向程序(){
float a = 5+3+10 先算一共多少钱
float b =a * 0.8 再算打八折多少钱
if(b>10){
float 最终价格 =b-2 最后如果满10块就减2块
} }
这里有个重点,全程都是你在算
面向对象:每个水果都是一个有思想的物体,她会自己判断,自己打折后多少钱
float[] fruit = new float[]{5,3,10} //买的所有水果
float sum;
void 面向对象(){
//打折后所有水果多少钱
for(int i ,i<fruit.length,i++){
sum += sell(fruit[i]);}
//满减后水果多少钱
float sumNow = count(sum);
}
//计算打折后水果多少钱
float sell(float 水果价格){
float a = 0.7*水果价格
return a;
}
//满减统计
float count(float 共计){
if(共计>10)
float 最终价格 = 共计 -2
return 最终价格;
}
这里的重点是:
面向对象这个主要程序里,
干的事只有水果的价格交给计算打折,
自己加起来,
把总价递交给满减统计。
此时此刻,水果就是个人,会自己跑去算打折了多少钱,最终价格也是个人,会自己算满减以后多少钱。
乍一看,面向对象好像变复杂了,因为面向对象本来就不是为了简单程序设计的,如果你是多媒体行业的,你可以全部用面向程序,甚至会简单,因为没有太大的变动。
但是如果做游戏,因为游戏里的数据之类的会经常变动。
以上为例子,如果现在不打八折,而是7折基础上再打6折。面向对象只需要在打折那个方法里改
如果满减也变了,现在满10减1,满15减1.5,满20-2。面向对象里面,你也只需要在最后的满减统计里改,而不需要去动主程序。
这样不会把主程序的逻辑搞乱,方便维护。